Fix rspec tests [SCI-6044] (#3537)

This commit is contained in:
aignatov-bio 2021-09-09 15:41:42 +02:00 committed by GitHub
parent 268b8d6bf1
commit 3036a38bfd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 176 additions and 292 deletions

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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,

View file

@ -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 }

View file

@ -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

View file

@ -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 }

View file

@ -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

View file

@ -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' } }

View file

@ -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' } } }

View file

@ -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

View file

@ -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 }

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 }

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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) }

View file

@ -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),

View file

@ -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'

View file

@ -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) }

View file

@ -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),

View file

@ -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))

View 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