diff options
Diffstat (limited to 'spec/services/projects/transfer_service_spec.rb')
-rw-r--r-- | spec/services/projects/transfer_service_spec.rb | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/spec/services/projects/transfer_service_spec.rb b/spec/services/projects/transfer_service_spec.rb index 8f505c31c5a..4d75786a4c3 100644 --- a/spec/services/projects/transfer_service_spec.rb +++ b/spec/services/projects/transfer_service_spec.rb @@ -263,7 +263,7 @@ RSpec.describe Projects::TransferService do end context 'when transfer fails' do - let!(:original_path) { project_path(project) } + let!(:original_path) { project.repository.relative_path } def attempt_project_transfer(&block) expect do @@ -277,21 +277,11 @@ RSpec.describe Projects::TransferService do expect_any_instance_of(Labels::TransferService).to receive(:execute).and_raise(ActiveRecord::StatementInvalid, "PG ERROR") end - def project_path(project) - Gitlab::GitalyClient::StorageSettings.allow_disk_access do - project.repository.path_to_repo - end - end - - def current_path - project_path(project) - end - it 'rolls back repo location' do attempt_project_transfer expect(project.repository.raw.exists?).to be(true) - expect(original_path).to eq current_path + expect(original_path).to eq project.repository.relative_path end it 'rolls back project full path in gitaly' do @@ -462,6 +452,22 @@ RSpec.describe Projects::TransferService do end end + context 'target namespace belongs to bot user', :enable_admin_mode do + let(:bot) { create(:user, :project_bot) } + let(:target) { bot.namespace } + let(:executor) { create(:user, :admin) } + + it 'does not allow project transfer' do + namespace = project.namespace + + transfer_result = execute_transfer + + expect(transfer_result).to eq false + expect(project.namespace).to eq(namespace) + expect(project.errors[:new_namespace]).to include("You don't have permission to transfer projects into that namespace.") + end + end + context 'when user does not own the project' do let(:project) { create(:project, :repository, :legacy_storage) } |