mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-11 23:54:43 +08:00
Fix rspec tests [SCI-6044] (#3537)
This commit is contained in:
parent
268b8d6bf1
commit
3036a38bfd
36 changed files with 176 additions and 292 deletions
|
@ -57,7 +57,7 @@ class ProjectCommentsController < ApplicationController
|
|||
def check_manage_permissions
|
||||
@comment = ProjectComment.find_by_id(params[:id])
|
||||
render_403 unless @comment.present? &&
|
||||
can_manage_comment_in_project?(@comment)
|
||||
can_manage_project_comments?(@project)
|
||||
end
|
||||
|
||||
def comment_params
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
<%= render partial: 'projects/show/header' %>
|
||||
|
||||
<div class="project-show-container">
|
||||
<div class="cards-wrapper <%= 'readonly' unless can_manage_experiments?(@project) %> <%= cards_view_type_class(@current_view_type) %>"
|
||||
<div class="cards-wrapper <%= 'readonly' unless can_manage_project?(@project) %> <%= cards_view_type_class(@current_view_type) %>"
|
||||
id="cardsWrapper"
|
||||
data-experiments-cards-url="<%= experiments_cards_project_path(@project) %>">
|
||||
<!-- list -->
|
||||
<div class="table-header">
|
||||
<div class="table-header-cell select-all-checkboxes">
|
||||
<% if can_manage_experiments?(@project) %>
|
||||
<% if can_manage_project?(@project) %>
|
||||
<div class="sci-checkbox-container">
|
||||
<input value="1" type="checkbox" class="sci-checkbox select-all">
|
||||
<span class="sci-checkbox-label"></span>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
data-restorable="<%= experiment.archived? && can_restore_experiment?(experiment) %>"
|
||||
data-duplicable="<%= can_clone_experiment?(experiment) %>">
|
||||
<div class="checkbox-cell table-cell">
|
||||
<% if can_manage_experiments?(experiment.project) %>
|
||||
<% if can_manage_project?(experiment.project) %>
|
||||
<div class="sci-checkbox-container">
|
||||
<input value="1" type="checkbox" class="sci-checkbox experiment-card-selector">
|
||||
<span class="sci-checkbox-label"></span>
|
||||
|
|
|
@ -20,6 +20,7 @@ Rails.application.configure do
|
|||
# your test database is "scratch space" for the test suite and is wiped
|
||||
# and recreated between test runs. Don't rely on the data there!
|
||||
config.cache_classes = true
|
||||
config.cache_store = :null_store
|
||||
|
||||
# Do not eager load code on boot. This avoids loading your whole application
|
||||
# just for the purpose of running a single test. If you are using a tool that
|
||||
|
|
|
@ -13,17 +13,13 @@ describe AccessPermissions::ExperimentsController, type: :controller do
|
|||
let!(:owner_role) { create :owner_role }
|
||||
let!(:viewer_user_role) { create :viewer_role }
|
||||
let!(:technician_role) { create :technician_role }
|
||||
let!(:user_project) { create :user_project, user: user, project: project }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_role,
|
||||
assigned_by: user
|
||||
end
|
||||
let!(:viewer_user) { create :user, confirmed_at: Time.zone.now }
|
||||
let!(:normal_user_team) { create :user_team, :normal_user, user: viewer_user, team: team }
|
||||
let!(:viewer_user_project) { create :user_project, user: viewer_user, project: project }
|
||||
|
||||
before do
|
||||
create_user_assignment(experiment, owner_role, user)
|
||||
create_user_assignment(experiment, viewer_user_role, viewer_user)
|
||||
end
|
||||
|
||||
describe 'GET #show' do
|
||||
it 'returns a http success response' do
|
||||
|
@ -63,20 +59,6 @@ describe AccessPermissions::ExperimentsController, type: :controller do
|
|||
end
|
||||
|
||||
describe 'PUT #update' do
|
||||
let!(:viewer_project_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: viewer_user,
|
||||
user_role: viewer_user_role,
|
||||
assigned_by: user
|
||||
end
|
||||
let!(:viewer_user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: experiment,
|
||||
user: viewer_user,
|
||||
user_role: viewer_user_role,
|
||||
assigned_by: user
|
||||
end
|
||||
|
||||
let(:valid_params) do
|
||||
{
|
||||
|
@ -92,7 +74,7 @@ describe AccessPermissions::ExperimentsController, type: :controller do
|
|||
it 'updates the user role' do
|
||||
put :update, params: valid_params, format: :json
|
||||
expect(response).to have_http_status :success
|
||||
expect(viewer_user_assignment.reload.user_role).to eq technician_role
|
||||
expect(UserAssignment.find_by(assignable: experiment, user: viewer_user).user_role).to eq technician_role
|
||||
end
|
||||
|
||||
it 'does not update the user role when the user has no permissions' do
|
||||
|
@ -101,7 +83,7 @@ describe AccessPermissions::ExperimentsController, type: :controller do
|
|||
put :update, params: valid_params, format: :json
|
||||
|
||||
expect(response).to have_http_status :forbidden
|
||||
expect(viewer_user_assignment.reload.user_role).to eq viewer_user_role
|
||||
expect(UserAssignment.find_by(assignable: experiment, user: viewer_user).user_role).to eq viewer_user_role
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -14,18 +14,16 @@ describe AccessPermissions::MyModulesController, type: :controller do
|
|||
let!(:viewer_user_role) { create :viewer_role }
|
||||
let!(:technician_role) { create :technician_role }
|
||||
let!(:user_project) { create :user_project, user: user, project: project }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_role,
|
||||
assigned_by: user
|
||||
end
|
||||
let!(:viewer_user) { create :user, confirmed_at: Time.zone.now }
|
||||
let!(:normal_user_team) { create :user_team, :normal_user, user: viewer_user, team: team }
|
||||
let!(:viewer_user_project) { create :user_project, user: viewer_user, project: project }
|
||||
let!(:my_module) { create :my_module, experiment: experiment }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, owner_role, user)
|
||||
create_user_assignment(my_module, viewer_user_role, viewer_user)
|
||||
end
|
||||
|
||||
describe 'GET #show' do
|
||||
it 'returns a http success response' do
|
||||
get :show, params: { project_id: project.id, experiment_id: experiment.id, id: my_module.id }, format: :json
|
||||
|
@ -60,21 +58,6 @@ describe AccessPermissions::MyModulesController, type: :controller do
|
|||
end
|
||||
|
||||
describe 'PUT #update' do
|
||||
let!(:viewer_project_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: viewer_user,
|
||||
user_role: viewer_user_role,
|
||||
assigned_by: user
|
||||
end
|
||||
let!(:viewer_user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: my_module,
|
||||
user: viewer_user,
|
||||
user_role: viewer_user_role,
|
||||
assigned_by: user
|
||||
end
|
||||
|
||||
let(:valid_params) do
|
||||
{
|
||||
id: my_module.id,
|
||||
|
@ -90,7 +73,7 @@ describe AccessPermissions::MyModulesController, type: :controller do
|
|||
it 'updates the user role' do
|
||||
put :update, params: valid_params, format: :json
|
||||
expect(response).to have_http_status :success
|
||||
expect(viewer_user_assignment.reload.user_role).to eq technician_role
|
||||
expect(UserAssignment.find_by(assignable: my_module, user: viewer_user).user_role).to eq technician_role
|
||||
end
|
||||
|
||||
it 'does not update the user role when the user has no permissions' do
|
||||
|
@ -99,7 +82,7 @@ describe AccessPermissions::MyModulesController, type: :controller do
|
|||
put :update, params: valid_params, format: :json
|
||||
|
||||
expect(response).to have_http_status :forbidden
|
||||
expect(viewer_user_assignment.reload.user_role).to eq viewer_user_role
|
||||
expect(UserAssignment.find_by(assignable: my_module, user: viewer_user).user_role).to eq viewer_user_role
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -13,13 +13,6 @@ describe AssetsController, type: :controller do
|
|||
create :project, team: team, user_projects: [user_project]
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_role,
|
||||
assigned_by: user
|
||||
end
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, name: 'test task', experiment: experiment }
|
||||
let(:protocol) do
|
||||
|
@ -39,8 +32,11 @@ describe AssetsController, type: :controller do
|
|||
let!(:asset) { create :asset }
|
||||
let(:step_asset_in_repository) { create :step_asset, step: step_in_repository, asset: asset }
|
||||
|
||||
|
||||
|
||||
describe 'POST start_edit' do
|
||||
before do
|
||||
create_user_assignment(my_module, owner_role, user)
|
||||
allow(controller).to receive(:check_edit_permission).and_return(true)
|
||||
end
|
||||
let(:action) { post :create_start_edit_image_activity, params: params, format: :json }
|
||||
|
@ -52,6 +48,7 @@ describe AssetsController, type: :controller do
|
|||
expect(Activities::CreateActivityService).to receive(:call)
|
||||
.with(hash_including(activity_type: :edit_image_on_step))
|
||||
action
|
||||
p response.code
|
||||
end
|
||||
|
||||
it 'calls create activity service (start edit image on result)' do
|
||||
|
|
|
@ -15,13 +15,7 @@ describe CanvasController do
|
|||
create :project, team: team
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_role,
|
||||
assigned_by: user
|
||||
end
|
||||
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:experiment2) { create :experiment, project: project }
|
||||
|
||||
|
@ -42,6 +36,9 @@ describe CanvasController do
|
|||
|
||||
# Setup environment for "big change" request
|
||||
# Tasks in DB
|
||||
|
||||
|
||||
|
||||
let!(:task1) { create :my_module, x: 0, y: 1, experiment: experiment }
|
||||
let!(:task2) { create :my_module, x: 0, y: 2, experiment: experiment }
|
||||
let!(:task3) { create :my_module, x: 0, y: 3, experiment: experiment }
|
||||
|
@ -95,6 +92,13 @@ describe CanvasController do
|
|||
}
|
||||
end
|
||||
|
||||
before do
|
||||
8.times do |i|
|
||||
create_user_assignment(public_send("task#{i+1}"), owner_role, user)
|
||||
end
|
||||
create_user_assignment(experiment2, owner_role, user)
|
||||
end
|
||||
|
||||
context 'when have a lot changes on canvas' do
|
||||
it 'everything goes right, redirected to canvas' do
|
||||
action
|
||||
|
|
|
@ -8,19 +8,13 @@ describe ExperimentsController, type: :controller do
|
|||
let!(:user) { controller.current_user }
|
||||
let!(:team) { create :team, created_by: user, users: [user] }
|
||||
let!(:project) { create :project, team: team }
|
||||
let!(:user_project) do
|
||||
create :user_project, user: user, project: project
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_role,
|
||||
assigned_by: user
|
||||
end
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
|
||||
before do
|
||||
create_user_assignment(experiment, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
let(:params) do
|
||||
|
@ -83,6 +77,10 @@ describe ExperimentsController, type: :controller do
|
|||
}
|
||||
end
|
||||
|
||||
before do
|
||||
create_user_assignment(archived_experiment, owner_role, user)
|
||||
end
|
||||
|
||||
it 'calls create activity for unarchiving experiment' do
|
||||
expect(Activities::CreateActivityService)
|
||||
.to(receive(:call)
|
||||
|
|
|
@ -9,21 +9,16 @@ describe MyModuleCommentsController, type: :controller do
|
|||
let(:team) { create :team, created_by: user }
|
||||
let!(:user_team) { create :user_team, :admin, user: user, team: team }
|
||||
let(:project) { create :project, team: team, created_by: user }
|
||||
let!(:user_project) do
|
||||
create :user_project, user: user, project: project
|
||||
end
|
||||
let(:normal_user_role) { create :normal_user_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: normal_user_role,
|
||||
assigned_by: user
|
||||
end
|
||||
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, experiment: experiment }
|
||||
let(:task_comment) { create :task_comment, user: user, my_module: my_module }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, normal_user_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
let(:params) do
|
||||
|
|
|
@ -13,13 +13,7 @@ describe MyModuleRepositoriesController, type: :controller do
|
|||
create :user_project, user: user, project: project
|
||||
end
|
||||
let(:normal_user_role) { create :normal_user_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: normal_user_role,
|
||||
assigned_by: user
|
||||
end
|
||||
|
||||
let!(:repository) { create :repository, created_by: user, team: team }
|
||||
let!(:repository_row) do
|
||||
create :repository_row, created_by: user, repository: repository
|
||||
|
@ -30,6 +24,10 @@ describe MyModuleRepositoriesController, type: :controller do
|
|||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, experiment: experiment }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, normal_user_role, user)
|
||||
end
|
||||
|
||||
describe 'PUT update (assign repository records)' do
|
||||
let(:params) do
|
||||
{ my_module_id: my_module.id,
|
||||
|
|
|
@ -9,19 +9,14 @@ describe MyModuleTagsController, type: :controller do
|
|||
let(:team) { create :team, created_by: user }
|
||||
let!(:user_team) { create :user_team, :admin, user: user, team: team }
|
||||
let(:project) { create :project, created_by: user }
|
||||
let!(:user_project) do
|
||||
create :user_project, user: user, project: project
|
||||
end
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: create(:owner_role),
|
||||
assigned_by: user
|
||||
end
|
||||
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, experiment: experiment }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, create(:owner_role), user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:tag) { create :tag, project: project }
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
|
|
|
@ -9,15 +9,8 @@ describe MyModulesController, type: :controller do
|
|||
let(:team) { create :team, created_by: user }
|
||||
let!(:user_team) { create :user_team, :admin, user: user, team: team }
|
||||
let(:project) { create :project, team: team, created_by: user }
|
||||
let!(:user_project) { create :user_project, user: user, project: project }
|
||||
let(:owner_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_role,
|
||||
assigned_by: user
|
||||
end
|
||||
|
||||
let!(:repository) { create :repository, created_by: user, team: team }
|
||||
let!(:repository_row) do
|
||||
create :repository_row, created_by: user, repository: repository
|
||||
|
@ -25,6 +18,10 @@ describe MyModulesController, type: :controller do
|
|||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, experiment: experiment }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'PUT update' do
|
||||
let(:action) { put :update, params: params, format: :json }
|
||||
|
||||
|
@ -161,9 +158,7 @@ describe MyModulesController, type: :controller do
|
|||
|
||||
context 'when user does not have permissions' do
|
||||
it 'renders 403' do
|
||||
# Remove user from project
|
||||
UserProject.where(user: user, project: project).destroy_all
|
||||
UserAssignment.where(user: user, assignable: project).destroy_all
|
||||
UserAssignment.where(user: user, assignable: my_module).destroy_all
|
||||
action
|
||||
|
||||
expect(response).to have_http_status 403
|
||||
|
@ -194,13 +189,11 @@ describe MyModulesController, type: :controller do
|
|||
let(:task2) { create :my_module, :archived, experiment: experiment }
|
||||
let(:task3) { create :my_module, :archived, experiment: experiment }
|
||||
let(:user) { controller.current_user }
|
||||
let!(:user_project) { create :user_project, user: user, project: experiment.project }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: experiment.project,
|
||||
user: user,
|
||||
user_role: owner_role,
|
||||
assigned_by: user
|
||||
|
||||
before do
|
||||
3.times do |i|
|
||||
create_user_assignment(public_send("task#{i+1}"), owner_role, user)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when tasks are restored' do
|
||||
|
|
|
@ -8,22 +8,19 @@ describe ProjectCommentsController, type: :controller do
|
|||
let(:user) { subject.current_user }
|
||||
let(:team) { create :team, created_by: user }
|
||||
let(:user_team) { create :user_team, team: team, user: user }
|
||||
let(:user_project) { create :user_project, user: user }
|
||||
let(:project) do
|
||||
create :project, team: team, user_projects: [user_project]
|
||||
end
|
||||
let(:owner_user_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_user_role,
|
||||
assigned_by: user
|
||||
create :project, team: team
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
let(:project_comment) do
|
||||
create :project_comment, project: project, user: user
|
||||
end
|
||||
|
||||
before do
|
||||
create_user_assignment(project, owner_role, user)
|
||||
end
|
||||
|
||||
|
||||
describe 'POST create' do
|
||||
context 'in JSON format' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
|
|
|
@ -10,6 +10,7 @@ describe ProjectFoldersController, type: :controller do
|
|||
let(:team) { create :team, created_by: user }
|
||||
let!(:user_team) { create :user_team, team: team, user: user, role: :admin }
|
||||
let(:project_folder) { create :project_folder, team: team }
|
||||
let(:owner_role) { create :owner_role }
|
||||
|
||||
describe 'POST #move_to' do
|
||||
let!(:project_folder_1) do
|
||||
|
@ -31,6 +32,12 @@ describe ProjectFoldersController, type: :controller do
|
|||
create :project, name: 'test project C', team: team, project_folder: project_folder_3, created_by: user
|
||||
end
|
||||
|
||||
before do
|
||||
3.times do |i|
|
||||
create_user_assignment(public_send("project_#{i+1}"), owner_role, user)
|
||||
end
|
||||
end
|
||||
|
||||
context 'in JSON format' do
|
||||
let(:action) { post :move_to, params: params, format: :json }
|
||||
let(:params) do
|
||||
|
|
|
@ -11,6 +11,7 @@ describe ProjectsController, type: :controller do
|
|||
let!(:user) { User.first }
|
||||
let!(:team) { create :team, created_by: user }
|
||||
let!(:user_team) { create :user_team, team: team, user: user }
|
||||
let!(:owner_role) { create :owner_role }
|
||||
before do
|
||||
@projects_overview = ProjectsOverviewService.new(team, user, nil, params)
|
||||
end
|
||||
|
@ -54,24 +55,14 @@ describe ProjectsController, type: :controller do
|
|||
end
|
||||
end
|
||||
|
||||
let(:owner_user_role) { create :owner_role }
|
||||
# rubocop:disable Security/Eval
|
||||
# rubocop:disable Style/EvalWithLocation
|
||||
(1..PROJECTS_CNT).each do |i|
|
||||
let!("user_projects_#{i}") do
|
||||
create :user_project, project: eval("project_#{i}"), user: user
|
||||
end
|
||||
|
||||
let!("user_assignments_#{i}") do
|
||||
create :user_assignment,
|
||||
assignable: eval("project_#{i}"),
|
||||
user: user,
|
||||
user_role: owner_user_role,
|
||||
assigned_by: user
|
||||
|
||||
|
||||
before do
|
||||
PROJECTS_CNT.times do |i|
|
||||
create_user_assignment(public_send("project_#{i+1}"), owner_role, user)
|
||||
end
|
||||
end
|
||||
# rubocop:enable Security/Eval
|
||||
# rubocop:enable Style/EvalWithLocation
|
||||
|
||||
describe '#index' do
|
||||
let(:params) { { team: team.id, sort: 'atoz' } }
|
||||
|
|
|
@ -9,17 +9,14 @@ describe ProtocolsController, type: :controller do
|
|||
let(:team) { create :team, created_by: user }
|
||||
let!(:user_team) { create :user_team, :admin, user: user, team: team }
|
||||
let(:project) { create :project, team: team, created_by: user }
|
||||
let!(:user_project) { create :user_project, user: user, project: project }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: create(:owner_role),
|
||||
assigned_by: user
|
||||
end
|
||||
let (:owner_role) { create :owner_role }
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, experiment: experiment }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
let(:params) { { protocol: { name: 'protocol_name' } } }
|
||||
|
|
|
@ -7,18 +7,10 @@ describe ResultAssetsController, type: :controller do
|
|||
|
||||
let(:user) { subject.current_user }
|
||||
let!(:team) { create :team, :with_members }
|
||||
let!(:user_project) { create :user_project, user: user }
|
||||
let(:project) do
|
||||
create :project, team: team, user_projects: [user_project]
|
||||
end
|
||||
let(:owner_user_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_user_role,
|
||||
assigned_by: user
|
||||
create :project, team: team
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:task) { create :my_module, name: 'test task', experiment: experiment }
|
||||
let(:result) do
|
||||
|
@ -26,6 +18,10 @@ describe ResultAssetsController, type: :controller do
|
|||
end
|
||||
let(:result_asset) { create :result_asset, result: result }
|
||||
|
||||
before do
|
||||
create_user_assignment(task, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
let(:params) do
|
||||
|
|
|
@ -7,18 +7,11 @@ describe ResultCommentsController, type: :controller do
|
|||
|
||||
let(:user) { subject.current_user }
|
||||
let!(:team) { create :team, created_by: user, users: [user] }
|
||||
let!(:user_project) { create :user_project, user: user }
|
||||
let(:project) do
|
||||
create :project, team: team, user_projects: [user_project]
|
||||
end
|
||||
let(:owner_user_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_user_role,
|
||||
assigned_by: user
|
||||
create :project, team: team
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:task) { create :my_module, name: 'test task', experiment: experiment }
|
||||
let(:result) do
|
||||
|
@ -33,6 +26,10 @@ describe ResultCommentsController, type: :controller do
|
|||
user: user
|
||||
end
|
||||
|
||||
before do
|
||||
create_user_assignment(task, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
context 'in JSON format' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
|
|
|
@ -7,18 +7,11 @@ describe ResultTablesController, type: :controller do
|
|||
|
||||
let(:user) { subject.current_user }
|
||||
let!(:team) { create :team, created_by: user, users: [user] }
|
||||
let!(:user_project) { create :user_project, user: user }
|
||||
let(:project) do
|
||||
create :project, team: team, user_projects: [user_project]
|
||||
end
|
||||
let(:owner_user_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_user_role,
|
||||
assigned_by: user
|
||||
create :project, team: team
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:task) { create :my_module, name: 'test task', experiment: experiment }
|
||||
let(:result) do
|
||||
|
@ -26,6 +19,10 @@ describe ResultTablesController, type: :controller do
|
|||
end
|
||||
let(:result_table) { create :result_table, result: result }
|
||||
|
||||
before do
|
||||
create_user_assignment(task, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
let(:params) do
|
||||
|
|
|
@ -7,18 +7,10 @@ describe ResultTextsController, type: :controller do
|
|||
|
||||
let(:user) { subject.current_user }
|
||||
let!(:team) { create :team, :with_members }
|
||||
let!(:user_project) { create :user_project, user: user }
|
||||
let(:project) do
|
||||
create :project, team: team, user_projects: [user_project]
|
||||
end
|
||||
let(:owner_user_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_user_role,
|
||||
assigned_by: user
|
||||
create :project, team: team
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:task) { create :my_module, name: 'test task', experiment: experiment }
|
||||
let(:result) do
|
||||
|
@ -28,6 +20,10 @@ describe ResultTextsController, type: :controller do
|
|||
create :result_text, text: 'test text result', result: result
|
||||
end
|
||||
|
||||
before do
|
||||
create_user_assignment(task, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
let(:params) do
|
||||
|
|
|
@ -7,18 +7,11 @@ describe ResultsController, type: :controller do
|
|||
|
||||
let(:user) { subject.current_user }
|
||||
let!(:team) { create :team, :with_members }
|
||||
let!(:user_project) { create :user_project, user: user }
|
||||
let(:project) do
|
||||
create :project, team: team, user_projects: [user_project]
|
||||
end
|
||||
let(:owner_user_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_user_role,
|
||||
assigned_by: user
|
||||
create :project, team: team
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:task) { create :my_module, name: 'test task', experiment: experiment }
|
||||
let(:result) do
|
||||
|
@ -28,6 +21,10 @@ describe ResultsController, type: :controller do
|
|||
create :result_text, text: 'test text result', result: result
|
||||
end
|
||||
|
||||
before do
|
||||
create_user_assignment(task, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'DELETE destroy' do
|
||||
let(:action) { delete :destroy, params: params }
|
||||
let(:params) do
|
||||
|
|
|
@ -9,17 +9,8 @@ describe StepCommentsController, type: :controller do
|
|||
let(:team) { create :team, created_by: user }
|
||||
let!(:user_team) { create :user_team, :admin, user: user, team: team }
|
||||
let(:project) { create :project, team: team, created_by: user }
|
||||
let!(:user_project) do
|
||||
create :user_project, user: user, project: project
|
||||
end
|
||||
let(:normal_user_role) { create :normal_user_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: normal_user_role,
|
||||
assigned_by: user
|
||||
end
|
||||
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, experiment: experiment }
|
||||
let(:protocol) do
|
||||
|
@ -28,6 +19,10 @@ describe StepCommentsController, type: :controller do
|
|||
let(:step) { create :step, protocol: protocol, user: user }
|
||||
let(:step_comment) { create :step_comment, user: user, step: step }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, normal_user_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
let(:params) do
|
||||
|
|
|
@ -9,16 +9,7 @@ describe StepsController, type: :controller do
|
|||
let(:team) { create :team, created_by: user }
|
||||
let!(:user_team) { create :user_team, :admin, user: user, team: team }
|
||||
let(:project) { create :project, team: team, created_by: user }
|
||||
let!(:user_project) do
|
||||
create :user_project, user: user, project: project
|
||||
end
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: create(:owner_role),
|
||||
assigned_by: user
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, experiment: experiment }
|
||||
let(:protocol) do
|
||||
|
@ -30,6 +21,10 @@ describe StepsController, type: :controller do
|
|||
end
|
||||
let(:step_repo) { create :step, protocol: protocol_repo }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
|
||||
|
|
|
@ -9,20 +9,15 @@ describe TagsController, type: :controller do
|
|||
let(:team) { create :team, created_by: user }
|
||||
let!(:user_team) { create :user_team, :admin, user: user, team: team }
|
||||
let(:project) { create :project, team: team, created_by: user }
|
||||
let!(:user_project) do
|
||||
create :user_project, user: user, project: project
|
||||
end
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: create(:owner_role),
|
||||
assigned_by: user
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, experiment: experiment }
|
||||
let(:tag) { create :tag, project: project }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
let(:params) do
|
||||
|
|
|
@ -9,20 +9,14 @@ describe UserMyModulesController, type: :controller do
|
|||
let(:team) { create :team, created_by: user }
|
||||
let!(:user_team) { create :user_team, :admin, user: user, team: team }
|
||||
let(:project) { create :project, team: team, created_by: user }
|
||||
let!(:user_project) do
|
||||
create :user_project, user: user, project: project
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_role,
|
||||
assigned_by: user
|
||||
end
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, experiment: experiment }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'POST create' do
|
||||
let(:action) { post :create, params: params, format: :json }
|
||||
let(:params) do
|
||||
|
|
|
@ -9,18 +9,10 @@ describe WopiController, type: :controller do
|
|||
let(:user) { subject.current_user }
|
||||
let!(:team) { create :team, created_by: user }
|
||||
let(:user_team) { create :user_team, :admin, user: user, team: team }
|
||||
let!(:user_project) { create :user_project, user: user }
|
||||
let(:project) do
|
||||
create :project, team: team, user_projects: [user_project]
|
||||
create :project, team: team
|
||||
end
|
||||
let(:owner_role) { create :owner_role }
|
||||
let!(:user_assignment) do
|
||||
create :user_assignment,
|
||||
assignable: project,
|
||||
user: user,
|
||||
user_role: owner_role,
|
||||
assigned_by: user
|
||||
end
|
||||
let(:experiment) { create :experiment, project: project }
|
||||
let(:my_module) { create :my_module, name: 'test task', experiment: experiment }
|
||||
let(:result) do
|
||||
|
@ -40,6 +32,10 @@ describe WopiController, type: :controller do
|
|||
let(:result_asset) { create :result_asset, result: result, asset: asset }
|
||||
let(:token) { Token.create(token: 'token', ttl: 0, user_id: user.id) }
|
||||
|
||||
before do
|
||||
create_user_assignment(my_module, owner_role, user)
|
||||
end
|
||||
|
||||
describe 'POST unlock' do
|
||||
before do
|
||||
token
|
||||
|
|
|
@ -12,12 +12,7 @@ describe 'ResultPermissions' do
|
|||
let(:experiment) { create :experiment, user: user }
|
||||
|
||||
before do
|
||||
create :user_project, user: user, project: experiment.project
|
||||
create :user_assignment,
|
||||
assignable: experiment.project,
|
||||
user: user,
|
||||
user_role: create(:owner_role),
|
||||
assigned_by: user
|
||||
create_user_assignment(my_module, (create :owner_role), user)
|
||||
end
|
||||
|
||||
describe 'can_read_result?' do
|
||||
|
|
|
@ -114,6 +114,7 @@ RSpec.configure do |config|
|
|||
config.include ApiHelper, type: :controller
|
||||
config.include ApiHelper, type: :request
|
||||
config.extend ControllerMacros, type: :controller
|
||||
config.include PermissionHelpers
|
||||
|
||||
config.filter_run_excluding broken: true
|
||||
end
|
||||
|
|
|
@ -13,12 +13,8 @@ RSpec.describe 'Api::V1::AssetsController', type: :request do
|
|||
@step = create(:step, protocol: @protocol)
|
||||
|
||||
create(:user_team, user: @user, team: @team)
|
||||
create(:user_project, user: @user, project: @project)
|
||||
create :user_assignment,
|
||||
assignable: @project,
|
||||
user: @user,
|
||||
user_role: create(:owner_role),
|
||||
assigned_by: @user
|
||||
|
||||
create_user_assignment(@task, (create :owner_role), @user)
|
||||
|
||||
@valid_headers =
|
||||
{ 'Authorization': 'Bearer ' + generate_token(@user.id) }
|
||||
|
|
|
@ -13,12 +13,8 @@ RSpec.describe 'Api::V1::ChecklistsController', type: :request do
|
|||
@step = create(:step, protocol: @protocol)
|
||||
@checklist = create(:checklist, step: @step)
|
||||
create(:user_team, user: @user, team: @team)
|
||||
create(:user_project, user: @user, project: @project)
|
||||
create :user_assignment,
|
||||
assignable: @project,
|
||||
user: @user,
|
||||
user_role: create(:owner_role),
|
||||
assigned_by: @user
|
||||
|
||||
create_user_assignment(@task, (create :owner_role), @user)
|
||||
|
||||
@valid_headers = {
|
||||
'Authorization': 'Bearer ' + generate_token(@user.id),
|
||||
|
|
|
@ -12,13 +12,7 @@ RSpec.describe 'Api::V1::ChecklistsController', type: :request do
|
|||
@protocol = create(:protocol, my_module: @task)
|
||||
@step = create(:step, protocol: @protocol)
|
||||
create(:user_team, user: @user, team: @team)
|
||||
create(:user_project, user: @user, project: @project)
|
||||
create :user_assignment,
|
||||
assignable: @project,
|
||||
user: @user,
|
||||
user_role: create(:owner_role),
|
||||
assigned_by: @user
|
||||
|
||||
create_user_assignment(@task, (create :owner_role), @user)
|
||||
@valid_headers = {
|
||||
'Authorization': 'Bearer ' + generate_token(@user.id),
|
||||
'Content-Type': 'application/json'
|
||||
|
|
|
@ -10,12 +10,7 @@ RSpec.describe 'Api::V1::StepsController', type: :request do
|
|||
@experiment = create(:experiment, :with_tasks, project: @project)
|
||||
@task = @experiment.my_modules.first
|
||||
create(:user_team, user: @user, team: @team)
|
||||
create(:user_project, user: @user, project: @project)
|
||||
create :user_assignment,
|
||||
assignable: @project,
|
||||
user: @user,
|
||||
user_role: create(:owner_role),
|
||||
assigned_by: @user
|
||||
create_user_assignment(@task, (create :owner_role), @user)
|
||||
|
||||
@valid_headers =
|
||||
{ 'Authorization': 'Bearer ' + generate_token(@user.id) }
|
||||
|
|
|
@ -12,12 +12,7 @@ RSpec.describe 'Api::V1::TablesController', type: :request do
|
|||
@protocol = create(:protocol, my_module: @task)
|
||||
@step = create(:step, protocol: @protocol)
|
||||
create(:user_team, user: @user, team: @team)
|
||||
create(:user_project, user: @user, project: @project)
|
||||
create :user_assignment,
|
||||
assignable: @project,
|
||||
user: @user,
|
||||
user_role: create(:owner_role),
|
||||
assigned_by: @user
|
||||
create_user_assignment(@task, (create :owner_role), @user)
|
||||
|
||||
@valid_headers = {
|
||||
'Authorization': 'Bearer ' + generate_token(@user.id),
|
||||
|
|
|
@ -229,7 +229,7 @@ RSpec.describe 'Api::V1::TasksController', type: :request do
|
|||
end
|
||||
|
||||
it 'renders 403 for use with view permissions' do
|
||||
user_assignment = UserAssignment.where(user: @user, assignable: @valid_project)
|
||||
user_assignment = UserAssignment.where(user: @user, assignable: @valid_experiment)
|
||||
.first
|
||||
user_assignment.update!(user_role: create(:viewer_role))
|
||||
|
||||
|
|
16
spec/support/permission_helpers.rb
Normal file
16
spec/support/permission_helpers.rb
Normal file
|
@ -0,0 +1,16 @@
|
|||
module PermissionHelpers
|
||||
def create_user_assignment(object, role, user, assigned_by = nil)
|
||||
create :user_assignment,
|
||||
assignable: object,
|
||||
user: user,
|
||||
user_role: role,
|
||||
assigned_by: assigned_by || user
|
||||
|
||||
case object
|
||||
when MyModule
|
||||
create_user_assignment(object.experiment, role, user, assigned_by)
|
||||
when Experiment
|
||||
create_user_assignment(object.project, role, user, assigned_by)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue