diff options
author | Stan Hu <stanhu@gmail.com> | 2017-11-17 09:39:29 +0300 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2017-11-17 09:41:04 +0300 |
commit | 0c085aaf446a2cef0819a55a009c73a796cdf6e1 (patch) | |
tree | 630c8f2de8f455c7a8924094c476d34f58f08788 /spec | |
parent | d41e66cb632cf4a51428c87a07cbdd182e3e0697 (diff) |
Fix hashed storage with project transfers to another namespace
With hashed storage enabled, we would fail to transfer a project to another
namespace because the provided paths were wrong. Instead, we should not
attempt to move paths at all.
Closes gitlab-org/gitlab-ee#4056
Diffstat (limited to 'spec')
-rw-r--r-- | spec/services/projects/transfer_service_spec.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/spec/services/projects/transfer_service_spec.rb b/spec/services/projects/transfer_service_spec.rb index 2459f371a91..2b1337bee7e 100644 --- a/spec/services/projects/transfer_service_spec.rb +++ b/spec/services/projects/transfer_service_spec.rb @@ -42,6 +42,18 @@ describe Projects::TransferService do expect(service).to receive(:execute_system_hooks) end end + + it 'disk path has moved' do + old_path = project.repository.disk_path + old_full_path = project.repository.full_path + + transfer_project(project, user, group) + + expect(project.repository.disk_path).not_to eq(old_path) + expect(project.repository.full_path).not_to eq(old_full_path) + expect(project.disk_path).not_to eq(old_path) + expect(project.disk_path).to start_with(group.path) + end end context 'when transfer fails' do @@ -188,6 +200,26 @@ describe Projects::TransferService do end end + context 'when hashed storage in use' do + let(:hashed_project) { create(:project, :repository, :hashed, namespace: user.namespace) } + + before do + group.add_owner(user) + end + + it 'does not move the directory' do + old_path = hashed_project.repository.disk_path + old_full_path = hashed_project.repository.full_path + + transfer_project(hashed_project, user, group) + project.reload + + expect(hashed_project.repository.disk_path).to eq(old_path) + expect(hashed_project.repository.full_path).to eq(old_full_path) + expect(hashed_project.disk_path).to eq(old_path) + end + end + describe 'refreshing project authorizations' do let(:group) { create(:group) } let(:owner) { project.namespace.owner } |