From 8c7f4e9d5f36cff46365a7f8c4b9c21578c1e781 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 18 Jun 2020 11:18:50 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-1-stable-ee --- .../remove_expired_group_links_worker_spec.rb | 41 +++++++++++++++++----- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'spec/workers/remove_expired_group_links_worker_spec.rb') diff --git a/spec/workers/remove_expired_group_links_worker_spec.rb b/spec/workers/remove_expired_group_links_worker_spec.rb index 9557aa3086c..b637802cd78 100644 --- a/spec/workers/remove_expired_group_links_worker_spec.rb +++ b/spec/workers/remove_expired_group_links_worker_spec.rb @@ -23,30 +23,53 @@ describe RemoveExpiredGroupLinksWorker do subject.perform expect(non_expiring_project_group_link.reload).to be_present end - end - context 'GroupGroupLinks' do - let(:mock_destroy_service) { instance_double(Groups::GroupLinks::DestroyService) } + it 'removes project authorization' do + user = create(:user) + + project = expired_project_group_link.project + group = expired_project_group_link.group + + group.add_maintainer(user) - before do - allow(Groups::GroupLinks::DestroyService).to( - receive(:new).and_return(mock_destroy_service)) + expect { subject.perform }.to( + change { user.can?(:read_project, project) }.from(true).to(false)) end + end + context 'GroupGroupLinks' do context 'expired GroupGroupLink exists' do - before do - create(:group_group_link, expires_at: 1.hour.ago) - end + let!(:group_group_link) { create(:group_group_link, expires_at: 1.hour.ago) } it 'calls Groups::GroupLinks::DestroyService' do + mock_destroy_service = instance_double(Groups::GroupLinks::DestroyService) + allow(Groups::GroupLinks::DestroyService).to( + receive(:new).and_return(mock_destroy_service)) + expect(mock_destroy_service).to receive(:execute).once subject.perform end + + it 'removes project authorization' do + shared_group = group_group_link.shared_group + shared_with_group = group_group_link.shared_with_group + project = create(:project, group: shared_group) + + user = create(:user) + shared_with_group.add_maintainer(user) + + expect { subject.perform }.to( + change { user.can?(:read_project, project) }.from(true).to(false)) + end end context 'expired GroupGroupLink does not exist' do it 'does not call Groups::GroupLinks::DestroyService' do + mock_destroy_service = instance_double(Groups::GroupLinks::DestroyService) + allow(Groups::GroupLinks::DestroyService).to( + receive(:new).and_return(mock_destroy_service)) + expect(mock_destroy_service).not_to receive(:execute) subject.perform -- cgit v1.2.1