diff options
author | Kamil TrzciĆski <ayufan@ayufan.eu> | 2017-04-19 10:58:37 +0000 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2017-04-19 20:28:13 +0800 |
commit | 002fbbe1290a0dccfb4c469ed8a65eb192ddef21 (patch) | |
tree | b55fe4b996166a9be697ba6b322a230d771cc932 | |
parent | 615fc063806577253282f59dfa9651b0579b4ccf (diff) | |
download | gitlab-ce-002fbbe1290a0dccfb4c469ed8a65eb192ddef21.tar.gz |
Merge branch 'fix/gb/container-registry-repository-paths' into 'master'
Fix duplicated container repository names
Closes #31117
See merge request !10771
-rw-r--r-- | lib/container_registry/path.rb | 10 | ||||
-rw-r--r-- | spec/lib/container_registry/path_spec.rb | 32 |
2 files changed, 33 insertions, 9 deletions
diff --git a/lib/container_registry/path.rb b/lib/container_registry/path.rb index 4a585996aa5..61849a40383 100644 --- a/lib/container_registry/path.rb +++ b/lib/container_registry/path.rb @@ -48,7 +48,7 @@ module ContainerRegistry end def root_repository? - @path == repository_project.full_path + @path == project_path end def repository_project @@ -60,7 +60,13 @@ module ContainerRegistry def repository_name return unless has_project? - @path.remove(%r(^#{Regexp.escape(repository_project.full_path)}/?)) + @path.remove(%r(^#{Regexp.escape(project_path)}/?)) + end + + def project_path + return unless has_project? + + repository_project.full_path.downcase end def to_s diff --git a/spec/lib/container_registry/path_spec.rb b/spec/lib/container_registry/path_spec.rb index f3b3a9a715f..c2bcb54210b 100644 --- a/spec/lib/container_registry/path_spec.rb +++ b/spec/lib/container_registry/path_spec.rb @@ -189,15 +189,10 @@ describe ContainerRegistry::Path do end context 'when project exists' do - let(:group) { create(:group, path: 'some_group') } - - let(:project) do - create(:empty_project, group: group, name: 'some_project') - end + let(:group) { create(:group, path: 'Some_Group') } before do - allow(path).to receive(:repository_project) - .and_return(project) + create(:empty_project, group: group, name: 'some_project') end context 'when project path equal repository path' do @@ -225,4 +220,27 @@ describe ContainerRegistry::Path do end end end + + describe '#project_path' do + context 'when project does not exist' do + let(:path) { 'some/name' } + + it 'returns nil' do + expect(subject.project_path).to be_nil + end + end + + context 'when project with uppercase characters in path exists' do + let(:path) { 'somegroup/myproject/my/image' } + let(:group) { create(:group, path: 'SomeGroup') } + + before do + create(:empty_project, group: group, name: 'MyProject') + end + + it 'returns downcased project path' do + expect(subject.project_path).to eq 'somegroup/myproject' + end + end + end end |