Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/authorized_project_update/project_group_link_create_service_spec.rb')
-rw-r--r--spec/services/authorized_project_update/project_group_link_create_service_spec.rb222
1 files changed, 0 insertions, 222 deletions
diff --git a/spec/services/authorized_project_update/project_group_link_create_service_spec.rb b/spec/services/authorized_project_update/project_group_link_create_service_spec.rb
deleted file mode 100644
index 1fd47f78c24..00000000000
--- a/spec/services/authorized_project_update/project_group_link_create_service_spec.rb
+++ /dev/null
@@ -1,222 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe AuthorizedProjectUpdate::ProjectGroupLinkCreateService do
- let_it_be(:group_parent) { create(:group, :private) }
- let_it_be(:group) { create(:group, :private, parent: group_parent) }
- let_it_be(:group_child) { create(:group, :private, parent: group) }
-
- let_it_be(:parent_group_user) { create(:user) }
- let_it_be(:group_user) { create(:user) }
-
- let_it_be(:project) { create(:project, :private, group: create(:group, :private)) }
-
- let(:access_level) { Gitlab::Access::MAINTAINER }
- let(:group_access) { nil }
-
- subject(:service) { described_class.new(project, group, group_access) }
-
- describe '#perform' do
- context 'direct group members' do
- before do
- create(:group_member, access_level: access_level, group: group, user: group_user)
- ProjectAuthorization.delete_all
- end
-
- it 'creates project authorization' do
- expect { service.execute }.to(
- change { ProjectAuthorization.count }.from(0).to(1))
-
- project_authorization = ProjectAuthorization.where(
- project_id: project.id,
- user_id: group_user.id,
- access_level: access_level)
-
- expect(project_authorization).to exist
- end
- end
-
- context 'inherited group members' do
- before do
- create(:group_member, access_level: access_level, group: group_parent, user: parent_group_user)
- ProjectAuthorization.delete_all
- end
-
- it 'creates project authorization' do
- expect { service.execute }.to(
- change { ProjectAuthorization.count }.from(0).to(1))
-
- project_authorization = ProjectAuthorization.where(
- project_id: project.id,
- user_id: parent_group_user.id,
- access_level: access_level)
- expect(project_authorization).to exist
- end
- end
-
- context 'with group_access' do
- let(:group_access) { Gitlab::Access::REPORTER }
-
- before do
- create(:group_member, access_level: access_level, group: group_parent, user: parent_group_user)
- ProjectAuthorization.delete_all
- end
-
- it 'creates project authorization' do
- expect { service.execute }.to(
- change { ProjectAuthorization.count }.from(0).to(1))
-
- project_authorization = ProjectAuthorization.where(
- project_id: project.id,
- user_id: parent_group_user.id,
- access_level: group_access)
- expect(project_authorization).to exist
- end
- end
-
- context 'membership overrides' do
- before do
- create(:group_member, access_level: Gitlab::Access::REPORTER, group: group_parent, user: group_user)
- create(:group_member, access_level: Gitlab::Access::DEVELOPER, group: group, user: group_user)
- ProjectAuthorization.delete_all
- end
-
- it 'creates project authorization' do
- expect { service.execute }.to(
- change { ProjectAuthorization.count }.from(0).to(1))
-
- project_authorization = ProjectAuthorization.where(
- project_id: project.id,
- user_id: group_user.id,
- access_level: Gitlab::Access::DEVELOPER)
- expect(project_authorization).to exist
- end
- end
-
- context 'no group member' do
- it 'does not create project authorization' do
- expect { service.execute }.not_to(
- change { ProjectAuthorization.count }.from(0))
- end
- end
-
- context 'unapproved access requests' do
- before do
- create(:group_member, :guest, :access_request, user: group_user, group: group)
- end
-
- it 'does not create project authorization' do
- expect { service.execute }.not_to(
- change { ProjectAuthorization.count }.from(0))
- end
- end
-
- context 'minimal access member' do
- before do
- create(:group_member, :minimal_access, user: group_user, source: group)
- end
-
- it 'does not create project authorization' do
- expect { service.execute }.not_to(
- change { ProjectAuthorization.count }.from(0))
- end
- end
-
- context 'project has more users than BATCH_SIZE' do
- let(:batch_size) { 2 }
- let(:users) { create_list(:user, batch_size + 1 ) }
-
- before do
- stub_const("#{described_class.name}::BATCH_SIZE", batch_size)
-
- users.each do |user|
- create(:group_member, access_level: access_level, group: group_parent, user: user)
- end
-
- ProjectAuthorization.delete_all
- end
-
- it 'bulk creates project authorizations in batches' do
- users.each_slice(batch_size) do |batch|
- attributes = batch.map do |user|
- { user_id: user.id, project_id: project.id, access_level: access_level }
- end
-
- expect(ProjectAuthorization).to(
- receive(:insert_all).with(array_including(attributes)).and_call_original)
- end
-
- expect { service.execute }.to(
- change { ProjectAuthorization.count }.from(0).to(batch_size + 1))
- end
- end
-
- context 'users have existing project authorizations' do
- before do
- create(:group_member, access_level: access_level, group: group, user: group_user)
- ProjectAuthorization.delete_all
-
- create(:project_authorization, user_id: group_user.id,
- project_id: project.id,
- access_level: existing_access_level)
- end
-
- context 'when access level is the same' do
- let(:existing_access_level) { access_level }
-
- it 'does not create project authorization' do
- project_authorization = ProjectAuthorization.where(
- project_id: project.id,
- user_id: group_user.id,
- access_level: existing_access_level)
-
- expect(ProjectAuthorization).not_to receive(:insert_all)
-
- expect { service.execute }.not_to(
- change { project_authorization.reload.exists? }.from(true))
- end
- end
-
- context 'when existing access level is lower' do
- let(:existing_access_level) { Gitlab::Access::DEVELOPER }
-
- it 'creates new project authorization' do
- project_authorization = ProjectAuthorization.where(
- project_id: project.id,
- user_id: group_user.id,
- access_level: access_level)
-
- expect { service.execute }.to(
- change { project_authorization.reload.exists? }.from(false).to(true))
- end
-
- it 'deletes previous project authorization' do
- project_authorization = ProjectAuthorization.where(
- project_id: project.id,
- user_id: group_user.id,
- access_level: existing_access_level)
-
- expect { service.execute }.to(
- change { project_authorization.reload.exists? }.from(true).to(false))
- end
- end
-
- context 'when existing access level is higher' do
- let(:existing_access_level) { Gitlab::Access::OWNER }
-
- it 'does not create project authorization' do
- project_authorization = ProjectAuthorization.where(
- project_id: project.id,
- user_id: group_user.id,
- access_level: existing_access_level)
-
- expect(ProjectAuthorization).not_to receive(:insert_all)
-
- expect { service.execute }.not_to(
- change { project_authorization.reload.exists? }.from(true))
- end
- end
- end
- end
-end