Commit 3aafcc16 authored by Alessio Caiazza's avatar Alessio Caiazza

Add KubernetesService#default_namespace tests

parent 6798bab1
...@@ -155,15 +155,8 @@ class KubernetesService < DeploymentService ...@@ -155,15 +155,8 @@ class KubernetesService < DeploymentService
def default_namespace def default_namespace
return unless project return unless project
# 1. lowercase slug = "#{project.path}-#{project.id}".downcase
# 2. replace non kubernetes characters with dash slug.gsub(/[^-a-z0-9]/, '-').gsub(/^-+/, '')
# 3. trim dash from the beginning and end
slugified = "#{project.path}-#{project.id}"
slugified.downcase!
slugified.gsub!(/[^a-z0-9]/, '-')
slugified.gsub!(/^-+|-+$/, '')
slugified
end end
def build_kubeclient!(api_path: 'api', api_version: 'v1') def build_kubeclient!(api_path: 'api', api_version: 'v1')
......
...@@ -99,8 +99,25 @@ describe KubernetesService, :use_clean_rails_memory_store_caching do ...@@ -99,8 +99,25 @@ describe KubernetesService, :use_clean_rails_memory_store_caching do
describe '#actual_namespace' do describe '#actual_namespace' do
subject { service.actual_namespace } subject { service.actual_namespace }
it "returns the default namespace" do shared_examples 'a correctly formatted namespace' do
is_expected.to eq(service.send(:default_namespace)) it 'returns a valid Kubernetes namespace name' do
expect(subject).to match(Gitlab::Regex.kubernetes_namespace_regex)
expect(subject).to eq(expected_namespace)
end
end
it_behaves_like 'a correctly formatted namespace' do
let(:expected_namespace) { service.send(:default_namespace) }
end
context 'when the project path contains forbidden characters' do
before do
project.path = '-a_Strange.Path--forSure'
end
it_behaves_like 'a correctly formatted namespace' do
let(:expected_namespace) { "a-strange-path--forsure-#{project.id}" }
end
end end
context 'when namespace is specified' do context 'when namespace is specified' do
...@@ -108,8 +125,8 @@ describe KubernetesService, :use_clean_rails_memory_store_caching do ...@@ -108,8 +125,8 @@ describe KubernetesService, :use_clean_rails_memory_store_caching do
service.namespace = 'my-namespace' service.namespace = 'my-namespace'
end end
it "returns the user-namespace" do it_behaves_like 'a correctly formatted namespace' do
is_expected.to eq('my-namespace') let(:expected_namespace) { 'my-namespace' }
end end
end end
...@@ -118,7 +135,7 @@ describe KubernetesService, :use_clean_rails_memory_store_caching do ...@@ -118,7 +135,7 @@ describe KubernetesService, :use_clean_rails_memory_store_caching do
service.project = nil service.project = nil
end end
it "does not return namespace" do it 'does not return namespace' do
is_expected.to be_nil is_expected.to be_nil
end end
end end
......
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