From 9f46488805e86b1bc341ea1620b866016c2ce5ed Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 20 May 2020 14:34:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-0-stable-ee --- spec/services/projects/create_service_spec.rb | 98 +++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) (limited to 'spec/services/projects/create_service_spec.rb') diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb index 1feea27eebc..e542f1e9108 100644 --- a/spec/services/projects/create_service_spec.rb +++ b/spec/services/projects/create_service_spec.rb @@ -489,6 +489,104 @@ describe Projects::CreateService, '#execute' do end end + it_behaves_like 'measurable service' do + before do + opts.merge!( + current_user: user, + path: 'foo' + ) + end + + let(:base_log_data) do + { + class: Projects::CreateService.name, + current_user: user.name, + project_full_path: "#{user.namespace.full_path}/#{opts[:path]}" + } + end + + after do + create_project(user, opts) + end + end + + context 'with specialized_project_authorization_workers' do + let_it_be(:other_user) { create(:user) } + let_it_be(:group) { create(:group) } + + let(:opts) do + { + name: 'GitLab', + namespace_id: group.id + } + end + + before do + group.add_maintainer(user) + group.add_developer(other_user) + end + + it 'updates authorization for current_user' do + expect(Users::RefreshAuthorizedProjectsService).to( + receive(:new).with(user).and_call_original + ) + + project = create_project(user, opts) + + expect( + Ability.allowed?(user, :read_project, project) + ).to be_truthy + end + + it 'schedules authorization update for users with access to group' do + expect(AuthorizedProjectsWorker).not_to( + receive(:bulk_perform_async) + ) + expect(AuthorizedProjectUpdate::ProjectCreateWorker).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])) + .and_call_original + ) + + create_project(user, opts) + end + + context 'when feature is disabled' do + before do + stub_feature_flags(specialized_project_authorization_workers: false) + end + + it 'updates authorization for current_user' do + expect(Users::RefreshAuthorizedProjectsService).to( + receive(:new).with(user).and_call_original + ) + + project = create_project(user, opts) + + expect( + Ability.allowed?(user, :read_project, project) + ).to be_truthy + 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) + ) + + create_project(user, opts) + end + end + end + def create_project(user, opts) Projects::CreateService.new(user, opts).execute end -- cgit v1.2.1