diff options
Diffstat (limited to 'spec/services/projects/group_links/create_service_spec.rb')
-rw-r--r-- | spec/services/projects/group_links/create_service_spec.rb | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/spec/services/projects/group_links/create_service_spec.rb b/spec/services/projects/group_links/create_service_spec.rb index 22f7c8bdcb4..6468e3007c2 100644 --- a/spec/services/projects/group_links/create_service_spec.rb +++ b/spec/services/projects/group_links/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Projects::GroupLinks::CreateService, '#execute' do +RSpec.describe Projects::GroupLinks::CreateService, '#execute' do let_it_be(:user) { create :user } let_it_be(:group) { create :group } let_it_be(:project) { create :project } @@ -23,7 +23,7 @@ describe Projects::GroupLinks::CreateService, '#execute' do expect { subject.execute(group) }.to change { project.project_group_links.count }.from(0).to(1) end - it 'updates authorization' do + it 'updates authorization', :sidekiq_inline do expect { subject.execute(group) }.to( change { Ability.allowed?(user, :read_project, project) } .from(false).to(true)) @@ -36,4 +36,50 @@ describe Projects::GroupLinks::CreateService, '#execute' do it 'returns error if user is not allowed to share with a group' do expect { subject.execute(create(:group)) }.not_to change { project.project_group_links.count } end + + context 'with specialized_project_authorization_workers' do + let_it_be(:other_user) { create(:user) } + + before do + group.add_developer(other_user) + end + + it 'schedules authorization update for users with access to group' do + expect(AuthorizedProjectsWorker).not_to( + receive(:bulk_perform_async) + ) + expect(AuthorizedProjectUpdate::ProjectGroupLinkCreateWorker).to( + receive(:perform_async).and_call_original + ) + expect(AuthorizedProjectUpdate::UserRefreshWithLowUrgencyWorker).to( + receive(:bulk_perform_in) + .with(1.hour, + array_including([user.id], [other_user.id]), + batch_delay: 30.seconds, batch_size: 100) + .and_call_original + ) + + subject.execute(group) + end + + context 'when feature is disabled' do + before do + stub_feature_flags(specialized_project_authorization_project_share_worker: false) + end + + it 'uses AuthorizedProjectsWorker' do + expect(AuthorizedProjectsWorker).to( + receive(:bulk_perform_async).with(array_including([user.id], [other_user.id])).and_call_original + ) + expect(AuthorizedProjectUpdate::ProjectCreateWorker).not_to( + receive(:perform_async) + ) + expect(AuthorizedProjectUpdate::UserRefreshWithLowUrgencyWorker).not_to( + receive(:bulk_perform_in) + ) + + subject.execute(group) + end + end + end end |