diff options
author | Douwe Maan <douwe@gitlab.com> | 2016-04-05 20:02:24 +0300 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2016-04-05 20:02:24 +0300 |
commit | 7ff974e38e24a9b34f2b0e31093b4fe90e66f348 (patch) | |
tree | 84057092d61ebf9dac3f0a0cabace10c54fce8c2 /spec | |
parent | 9f33bf86cf55df8a00357f49bc63a5291b2a8024 (diff) | |
parent | bb9c194c23b8b3ffef30c7fdbe244d4fefc93883 (diff) |
Merge branch 'fix/permissions-when-importing-members' into 'master'
Check permissions when importing project members
Closes #14899
See merge request !3535
Diffstat (limited to 'spec')
-rw-r--r-- | spec/controllers/projects/project_members_controller_spec.rb | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/spec/controllers/projects/project_members_controller_spec.rb b/spec/controllers/projects/project_members_controller_spec.rb new file mode 100644 index 00000000000..d47e4ab9a4f --- /dev/null +++ b/spec/controllers/projects/project_members_controller_spec.rb @@ -0,0 +1,49 @@ +require('spec_helper') + +describe Projects::ProjectMembersController do + let(:project) { create(:project) } + let(:another_project) { create(:project, :private) } + let(:user) { create(:user) } + let(:member) { create(:user) } + + before do + project.team << [user, :master] + another_project.team << [member, :guest] + sign_in(user) + end + + describe '#apply_import' do + shared_context 'import applied' do + before do + post(:apply_import, namespace_id: project.namespace.to_param, + project_id: project.to_param, + source_project_id: another_project.id) + end + end + + context 'when user can access source project members' do + before { another_project.team << [user, :guest] } + include_context 'import applied' + + it 'imports source project members' do + expect(project.team_members).to include member + expect(response).to set_flash.to 'Successfully imported' + expect(response).to redirect_to( + namespace_project_project_members_path(project.namespace, project) + ) + end + end + + context 'when user is not member of a source project' do + include_context 'import applied' + + it 'does not import team members' do + expect(project.team_members).to_not include member + end + + it 'responds with not found' do + expect(response.status).to eq 404 + end + end + end +end |