summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/kubernetes
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/kubernetes')
-rw-r--r--spec/lib/gitlab/kubernetes/helm/api_spec.rb11
-rw-r--r--spec/lib/gitlab/kubernetes/kube_client_spec.rb37
-rw-r--r--spec/lib/gitlab/kubernetes/namespace_spec.rb14
3 files changed, 58 insertions, 4 deletions
diff --git a/spec/lib/gitlab/kubernetes/helm/api_spec.rb b/spec/lib/gitlab/kubernetes/helm/api_spec.rb
index 5d9beec093a..e493acd7bad 100644
--- a/spec/lib/gitlab/kubernetes/helm/api_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/api_spec.rb
@@ -6,7 +6,8 @@ describe Gitlab::Kubernetes::Helm::Api do
let(:client) { double('kubernetes client') }
let(:helm) { described_class.new(client) }
let(:gitlab_namespace) { Gitlab::Kubernetes::Helm::NAMESPACE }
- let(:namespace) { Gitlab::Kubernetes::Namespace.new(gitlab_namespace, client) }
+ let(:gitlab_namespace_labels) { Gitlab::Kubernetes::Helm::NAMESPACE_LABELS }
+ let(:namespace) { Gitlab::Kubernetes::Namespace.new(gitlab_namespace, client, labels: gitlab_namespace_labels) }
let(:application_name) { 'app-name' }
let(:rbac) { false }
let(:files) { {} }
@@ -23,13 +24,17 @@ describe Gitlab::Kubernetes::Helm::Api do
subject { helm }
before do
- allow(Gitlab::Kubernetes::Namespace).to receive(:new).with(gitlab_namespace, client).and_return(namespace)
+ allow(Gitlab::Kubernetes::Namespace).to(
+ receive(:new).with(gitlab_namespace, client, labels: gitlab_namespace_labels).and_return(namespace)
+ )
allow(client).to receive(:create_config_map)
end
describe '#initialize' do
it 'creates a namespace object' do
- expect(Gitlab::Kubernetes::Namespace).to receive(:new).with(gitlab_namespace, client)
+ expect(Gitlab::Kubernetes::Namespace).to(
+ receive(:new).with(gitlab_namespace, client, labels: gitlab_namespace_labels)
+ )
subject
end
diff --git a/spec/lib/gitlab/kubernetes/kube_client_spec.rb b/spec/lib/gitlab/kubernetes/kube_client_spec.rb
index 59e81d89a50..e08981a3415 100644
--- a/spec/lib/gitlab/kubernetes/kube_client_spec.rb
+++ b/spec/lib/gitlab/kubernetes/kube_client_spec.rb
@@ -136,6 +136,20 @@ describe Gitlab::Kubernetes::KubeClient do
end
end
+ describe '#istio_client' do
+ subject { client.istio_client }
+
+ it_behaves_like 'a Kubeclient'
+
+ it 'has the Istio API group endpoint' do
+ expect(subject.api_endpoint.to_s).to match(%r{\/apis\/networking.istio.io\Z})
+ end
+
+ it 'has the api_version' do
+ expect(subject.instance_variable_get(:@api_version)).to eq('v1alpha3')
+ end
+ end
+
describe '#knative_client' do
subject { client.knative_client }
@@ -233,6 +247,29 @@ describe Gitlab::Kubernetes::KubeClient do
end
end
+ describe 'istio API group' do
+ let(:istio_client) { client.istio_client }
+
+ [
+ :create_gateway,
+ :get_gateway,
+ :update_gateway
+ ].each do |method|
+ describe "##{method}" do
+ include_examples 'redirection not allowed', method
+ include_examples 'dns rebinding not allowed', method
+
+ it 'delegates to the istio client' do
+ expect(client).to delegate_method(method).to(:istio_client)
+ end
+
+ it 'responds to the method' do
+ expect(client).to respond_to method
+ end
+ end
+ end
+ end
+
describe 'non-entity methods' do
it 'does not proxy for non-entity methods' do
expect(client).not_to respond_to :proxy_url
diff --git a/spec/lib/gitlab/kubernetes/namespace_spec.rb b/spec/lib/gitlab/kubernetes/namespace_spec.rb
index 16634cc48e6..d44a803410f 100644
--- a/spec/lib/gitlab/kubernetes/namespace_spec.rb
+++ b/spec/lib/gitlab/kubernetes/namespace_spec.rb
@@ -5,8 +5,9 @@ require 'spec_helper'
describe Gitlab::Kubernetes::Namespace do
let(:name) { 'a_namespace' }
let(:client) { double('kubernetes client') }
+ let(:labels) { nil }
- subject { described_class.new(name, client) }
+ subject { described_class.new(name, client, labels: labels) }
it { expect(subject.name).to eq(name) }
@@ -49,6 +50,17 @@ describe Gitlab::Kubernetes::Namespace do
expect { subject.create! }.not_to raise_error
end
+
+ context 'with labels' do
+ let(:labels) { { foo: :bar } }
+
+ it 'creates a namespace with labels' do
+ matcher = have_attributes(metadata: have_attributes(name: name, labels: have_attributes(foo: :bar)))
+ expect(client).to receive(:create_namespace).with(matcher).once
+
+ expect { subject.create! }.not_to raise_error
+ end
+ end
end
describe '#ensure_exists!' do