Commit b5b6c7b1 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Sanitize container repository path in model class

parent 259108ad
...@@ -20,7 +20,8 @@ class ContainerRepository < ActiveRecord::Base ...@@ -20,7 +20,8 @@ class ContainerRepository < ActiveRecord::Base
end end
def path def path
@path ||= [project.full_path, name].select(&:present?).join('/') @path ||= [project.full_path, name]
.select(&:present?).join('/').downcase
end end
def location def location
......
...@@ -15,7 +15,7 @@ module ContainerRegistry ...@@ -15,7 +15,7 @@ module ContainerRegistry
LEVELS_SUPPORTED = 3 LEVELS_SUPPORTED = 3
def initialize(path) def initialize(path)
@path = path.downcase @path = path.to_s.downcase
end end
def valid? def valid?
...@@ -25,7 +25,7 @@ module ContainerRegistry ...@@ -25,7 +25,7 @@ module ContainerRegistry
end end
def components def components
@components ||= @path.to_s.split('/') @components ||= @path.split('/')
end end
def nodes def nodes
......
...@@ -34,11 +34,21 @@ describe ContainerRepository do ...@@ -34,11 +34,21 @@ describe ContainerRepository do
end end
describe '#path' do describe '#path' do
context 'when project path does not contain uppercase letters' do
it 'returns a full path to the repository' do it 'returns a full path to the repository' do
expect(repository.path).to eq('group/test/my_image') expect(repository.path).to eq('group/test/my_image')
end end
end end
context 'when path contains uppercase letters' do
let(:project) { create(:project, path: 'MY_PROJECT', group: group) }
it 'returns a full path without capital letters' do
expect(repository.path).to eq('group/my_project/my_image')
end
end
end
describe '#manifest' do describe '#manifest' do
it 'returns non-empty manifest' do it 'returns non-empty manifest' do
expect(repository.manifest).not_to be_nil expect(repository.manifest).not_to be_nil
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment