Commit e7b2345f authored by Hordur Freyr Yngvason's avatar Hordur Freyr Yngvason Committed by Dmytro Zaporozhets

Move more helm command tests to shared examples

A large amount of the helm command behavior is shared behavior inherited
from BaseCommand, yet much of the test code was duplicated. This
extracts the common test code into shared examples.

Resolves https://gitlab.com/gitlab-org/gitlab/issues/39460
parent ba39a222
...@@ -3,6 +3,10 @@ ...@@ -3,6 +3,10 @@
require 'spec_helper' require 'spec_helper'
describe Gitlab::Kubernetes::Helm::BaseCommand do describe Gitlab::Kubernetes::Helm::BaseCommand do
subject(:base_command) do
test_class.new(rbac)
end
let(:application) { create(:clusters_applications_helm) } let(:application) { create(:clusters_applications_helm) }
let(:rbac) { false } let(:rbac) { false }
...@@ -30,87 +34,17 @@ describe Gitlab::Kubernetes::Helm::BaseCommand do ...@@ -30,87 +34,17 @@ describe Gitlab::Kubernetes::Helm::BaseCommand do
end end
end end
let(:base_command) do it_behaves_like 'helm command generator' do
test_class.new(rbac)
end
subject { base_command }
it_behaves_like 'helm commands' do
let(:commands) { '' } let(:commands) { '' }
end end
describe '#pod_resource' do
subject { base_command.pod_resource }
it 'returns a kubeclient resoure with pod content for application' do
is_expected.to be_an_instance_of ::Kubeclient::Resource
end
context 'when rbac is true' do
let(:rbac) { true }
it 'also returns a kubeclient resource' do
is_expected.to be_an_instance_of ::Kubeclient::Resource
end
end
end
describe '#pod_name' do describe '#pod_name' do
subject { base_command.pod_name } subject { base_command.pod_name }
it { is_expected.to eq('install-test-class-name') } it { is_expected.to eq('install-test-class-name') }
end end
describe '#service_account_resource' do it_behaves_like 'helm command' do
let(:resource) do let(:command) { base_command }
Kubeclient::Resource.new(metadata: { name: 'tiller', namespace: 'gitlab-managed-apps' })
end
subject { base_command.service_account_resource }
context 'rbac is enabled' do
let(:rbac) { true }
it 'generates a Kubeclient resource for the tiller ServiceAccount' do
is_expected.to eq(resource)
end
end
context 'rbac is not enabled' do
let(:rbac) { false }
it 'generates nothing' do
is_expected.to be_nil
end
end
end
describe '#cluster_role_binding_resource' do
let(:resource) do
Kubeclient::Resource.new(
metadata: { name: 'tiller-admin' },
roleRef: { apiGroup: 'rbac.authorization.k8s.io', kind: 'ClusterRole', name: 'cluster-admin' },
subjects: [{ kind: 'ServiceAccount', name: 'tiller', namespace: 'gitlab-managed-apps' }]
)
end
subject { base_command.cluster_role_binding_resource }
context 'rbac is enabled' do
let(:rbac) { true }
it 'generates a Kubeclient resource for the ClusterRoleBinding for tiller' do
is_expected.to eq(resource)
end
end
context 'rbac is not enabled' do
let(:rbac) { false }
it 'generates nothing' do
is_expected.to be_nil
end
end
end end
end end
...@@ -3,14 +3,13 @@ ...@@ -3,14 +3,13 @@
require 'spec_helper' require 'spec_helper'
describe Gitlab::Kubernetes::Helm::DeleteCommand do describe Gitlab::Kubernetes::Helm::DeleteCommand do
subject(:delete_command) { described_class.new(name: app_name, rbac: rbac, files: files) }
let(:app_name) { 'app-name' } let(:app_name) { 'app-name' }
let(:rbac) { true } let(:rbac) { true }
let(:files) { {} } let(:files) { {} }
let(:delete_command) { described_class.new(name: app_name, rbac: rbac, files: files) }
subject { delete_command }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
export HELM_HOST="localhost:44134" export HELM_HOST="localhost:44134"
...@@ -26,7 +25,7 @@ describe Gitlab::Kubernetes::Helm::DeleteCommand do ...@@ -26,7 +25,7 @@ describe Gitlab::Kubernetes::Helm::DeleteCommand do
stub_feature_flags(managed_apps_local_tiller: false) stub_feature_flags(managed_apps_local_tiller: false)
end end
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
helm init --upgrade helm init --upgrade
...@@ -48,7 +47,7 @@ describe Gitlab::Kubernetes::Helm::DeleteCommand do ...@@ -48,7 +47,7 @@ describe Gitlab::Kubernetes::Helm::DeleteCommand do
EOS EOS
end end
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
helm init --upgrade helm init --upgrade
...@@ -67,29 +66,13 @@ describe Gitlab::Kubernetes::Helm::DeleteCommand do ...@@ -67,29 +66,13 @@ describe Gitlab::Kubernetes::Helm::DeleteCommand do
end end
end end
describe '#pod_resource' do
subject { delete_command.pod_resource }
context 'rbac is enabled' do
let(:rbac) { true }
it 'generates a pod that uses the tiller serviceAccountName' do
expect(subject.spec.serviceAccountName).to eq('tiller')
end
end
context 'rbac is not enabled' do
let(:rbac) { false }
it 'generates a pod that uses the default serviceAccountName' do
expect(subject.spec.serviceAcccountName).to be_nil
end
end
end
describe '#pod_name' do describe '#pod_name' do
subject { delete_command.pod_name } subject { delete_command.pod_name }
it { is_expected.to eq('uninstall-app-name') } it { is_expected.to eq('uninstall-app-name') }
end end
it_behaves_like 'helm command' do
let(:command) { delete_command }
end
end end
...@@ -3,25 +3,24 @@ ...@@ -3,25 +3,24 @@
require 'spec_helper' require 'spec_helper'
describe Gitlab::Kubernetes::Helm::InitCommand do describe Gitlab::Kubernetes::Helm::InitCommand do
subject(:init_command) { described_class.new(name: application.name, files: files, rbac: rbac) }
let(:application) { create(:clusters_applications_helm) } let(:application) { create(:clusters_applications_helm) }
let(:rbac) { false } let(:rbac) { false }
let(:files) { {} } let(:files) { {} }
let(:init_command) { described_class.new(name: application.name, files: files, rbac: rbac) }
let(:commands) do it_behaves_like 'helm command generator' do
<<~EOS let(:commands) do
helm init --tiller-tls --tiller-tls-verify --tls-ca-cert /data/helm/helm/config/ca.pem --tiller-tls-cert /data/helm/helm/config/cert.pem --tiller-tls-key /data/helm/helm/config/key.pem <<~EOS
EOS helm init --tiller-tls --tiller-tls-verify --tls-ca-cert /data/helm/helm/config/ca.pem --tiller-tls-cert /data/helm/helm/config/cert.pem --tiller-tls-key /data/helm/helm/config/key.pem
EOS
end
end end
subject { init_command }
it_behaves_like 'helm commands'
context 'on a rbac-enabled cluster' do context 'on a rbac-enabled cluster' do
let(:rbac) { true } let(:rbac) { true }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
helm init --tiller-tls --tiller-tls-verify --tls-ca-cert /data/helm/helm/config/ca.pem --tiller-tls-cert /data/helm/helm/config/cert.pem --tiller-tls-key /data/helm/helm/config/key.pem --service-account tiller helm init --tiller-tls --tiller-tls-verify --tls-ca-cert /data/helm/helm/config/ca.pem --tiller-tls-cert /data/helm/helm/config/cert.pem --tiller-tls-key /data/helm/helm/config/key.pem --service-account tiller
...@@ -30,57 +29,7 @@ describe Gitlab::Kubernetes::Helm::InitCommand do ...@@ -30,57 +29,7 @@ describe Gitlab::Kubernetes::Helm::InitCommand do
end end
end end
describe '#rbac?' do it_behaves_like 'helm command' do
subject { init_command.rbac? } let(:command) { init_command }
context 'rbac is enabled' do
let(:rbac) { true }
it { is_expected.to be_truthy }
end
context 'rbac is not enabled' do
let(:rbac) { false }
it { is_expected.to be_falsey }
end
end
describe '#config_map_resource' do
let(:metadata) do
{
name: 'values-content-configuration-helm',
namespace: 'gitlab-managed-apps',
labels: { name: 'values-content-configuration-helm' }
}
end
let(:resource) { ::Kubeclient::Resource.new(metadata: metadata, data: files) }
subject { init_command.config_map_resource }
it 'returns a KubeClient resource with config map content for the application' do
is_expected.to eq(resource)
end
end
describe '#pod_resource' do
subject { init_command.pod_resource }
context 'rbac is enabled' do
let(:rbac) { true }
it 'generates a pod that uses the tiller serviceAccountName' do
expect(subject.spec.serviceAccountName).to eq('tiller')
end
end
context 'rbac is not enabled' do
let(:rbac) { false }
it 'generates a pod that uses the default serviceAccountName' do
expect(subject.spec.serviceAcccountName).to be_nil
end
end
end end
end end
...@@ -3,14 +3,7 @@ ...@@ -3,14 +3,7 @@
require 'spec_helper' require 'spec_helper'
describe Gitlab::Kubernetes::Helm::InstallCommand do describe Gitlab::Kubernetes::Helm::InstallCommand do
let(:files) { { 'ca.pem': 'some file content' } } subject(:install_command) do
let(:repository) { 'https://repository.example.com' }
let(:rbac) { false }
let(:version) { '1.2.3' }
let(:preinstall) { nil }
let(:postinstall) { nil }
let(:install_command) do
described_class.new( described_class.new(
name: 'app-name', name: 'app-name',
chart: 'chart-name', chart: 'chart-name',
...@@ -23,9 +16,14 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do ...@@ -23,9 +16,14 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
) )
end end
subject { install_command } let(:files) { { 'ca.pem': 'some file content' } }
let(:repository) { 'https://repository.example.com' }
let(:rbac) { false }
let(:version) { '1.2.3' }
let(:preinstall) { nil }
let(:postinstall) { nil }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
export HELM_HOST="localhost:44134" export HELM_HOST="localhost:44134"
...@@ -66,7 +64,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do ...@@ -66,7 +64,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
EOS EOS
end end
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
helm init --upgrade helm init --upgrade
...@@ -97,7 +95,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do ...@@ -97,7 +95,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
context 'when rbac is true' do context 'when rbac is true' do
let(:rbac) { true } let(:rbac) { true }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
export HELM_HOST="localhost:44134" export HELM_HOST="localhost:44134"
...@@ -128,7 +126,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do ...@@ -128,7 +126,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
context 'when there is a pre-install script' do context 'when there is a pre-install script' do
let(:preinstall) { ['/bin/date', '/bin/true'] } let(:preinstall) { ['/bin/date', '/bin/true'] }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
export HELM_HOST="localhost:44134" export HELM_HOST="localhost:44134"
...@@ -161,7 +159,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do ...@@ -161,7 +159,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
context 'when there is a post-install script' do context 'when there is a post-install script' do
let(:postinstall) { ['/bin/date', "/bin/false\n"] } let(:postinstall) { ['/bin/date', "/bin/false\n"] }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
export HELM_HOST="localhost:44134" export HELM_HOST="localhost:44134"
...@@ -194,7 +192,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do ...@@ -194,7 +192,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
context 'when there is no ca.pem file' do context 'when there is no ca.pem file' do
let(:files) { { 'file.txt': 'some content' } } let(:files) { { 'file.txt': 'some content' } }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
export HELM_HOST="localhost:44134" export HELM_HOST="localhost:44134"
...@@ -225,7 +223,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do ...@@ -225,7 +223,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
context 'when there is no version' do context 'when there is no version' do
let(:version) { nil } let(:version) { nil }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
export HELM_HOST="localhost:44134" export HELM_HOST="localhost:44134"
...@@ -252,57 +250,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do ...@@ -252,57 +250,7 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
end end
end end
describe '#rbac?' do it_behaves_like 'helm command' do
subject { install_command.rbac? } let(:command) { install_command }
context 'rbac is enabled' do
let(:rbac) { true }
it { is_expected.to be_truthy }
end
context 'rbac is not enabled' do
let(:rbac) { false }
it { is_expected.to be_falsey }
end
end
describe '#pod_resource' do
subject { install_command.pod_resource }
context 'rbac is enabled' do
let(:rbac) { true }
it 'generates a pod that uses the tiller serviceAccountName' do
expect(subject.spec.serviceAccountName).to eq('tiller')
end
end
context 'rbac is not enabled' do
let(:rbac) { false }
it 'generates a pod that uses the default serviceAccountName' do
expect(subject.spec.serviceAcccountName).to be_nil
end
end
end
describe '#config_map_resource' do
let(:metadata) do
{
name: "values-content-configuration-app-name",
namespace: 'gitlab-managed-apps',
labels: { name: "values-content-configuration-app-name" }
}
end
let(:resource) { ::Kubeclient::Resource.new(metadata: metadata, data: files) }
subject { install_command.config_map_resource }
it 'returns a KubeClient resource with config map content for the application' do
is_expected.to eq(resource)
end
end end
end end
...@@ -33,7 +33,7 @@ describe Gitlab::Kubernetes::Helm::PatchCommand do ...@@ -33,7 +33,7 @@ describe Gitlab::Kubernetes::Helm::PatchCommand do
EOS EOS
end end
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
helm init --upgrade helm init --upgrade
...@@ -57,7 +57,7 @@ describe Gitlab::Kubernetes::Helm::PatchCommand do ...@@ -57,7 +57,7 @@ describe Gitlab::Kubernetes::Helm::PatchCommand do
end end
end end
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
export HELM_HOST="localhost:44134" export HELM_HOST="localhost:44134"
...@@ -83,7 +83,7 @@ describe Gitlab::Kubernetes::Helm::PatchCommand do ...@@ -83,7 +83,7 @@ describe Gitlab::Kubernetes::Helm::PatchCommand do
context 'when rbac is true' do context 'when rbac is true' do
let(:rbac) { true } let(:rbac) { true }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
export HELM_HOST="localhost:44134" export HELM_HOST="localhost:44134"
...@@ -110,7 +110,7 @@ describe Gitlab::Kubernetes::Helm::PatchCommand do ...@@ -110,7 +110,7 @@ describe Gitlab::Kubernetes::Helm::PatchCommand do
context 'when there is no ca.pem file' do context 'when there is no ca.pem file' do
let(:files) { { 'file.txt': 'some content' } } let(:files) { { 'file.txt': 'some content' } }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
export HELM_HOST="localhost:44134" export HELM_HOST="localhost:44134"
...@@ -134,69 +134,19 @@ describe Gitlab::Kubernetes::Helm::PatchCommand do ...@@ -134,69 +134,19 @@ describe Gitlab::Kubernetes::Helm::PatchCommand do
end end
end end
describe '#pod_name' do
subject { patch_command.pod_name }
it { is_expected.to eq 'install-app-name' }
end
context 'when there is no version' do context 'when there is no version' do
let(:version) { nil } let(:version) { nil }
it { expect { patch_command }.to raise_error(ArgumentError, 'version is required') } it { expect { patch_command }.to raise_error(ArgumentError, 'version is required') }
end end
describe '#rbac?' do describe '#pod_name' do
subject { patch_command.rbac? } subject { patch_command.pod_name }
context 'rbac is enabled' do
let(:rbac) { true }
it { is_expected.to be_truthy }
end
context 'rbac is not enabled' do
let(:rbac) { false }
it { is_expected.to be_falsey }
end
end
describe '#pod_resource' do
subject { patch_command.pod_resource }
context 'rbac is enabled' do
let(:rbac) { true }
it 'generates a pod that uses the tiller serviceAccountName' do
expect(subject.spec.serviceAccountName).to eq('tiller')
end
end
context 'rbac is not enabled' do
let(:rbac) { false }
it 'generates a pod that uses the default serviceAccountName' do it { is_expected.to eq 'install-app-name' }
expect(subject.spec.serviceAcccountName).to be_nil
end
end
end end
describe '#config_map_resource' do it_behaves_like 'helm command' do
let(:metadata) do let(:command) { patch_command }
{
name: "values-content-configuration-app-name",
namespace: 'gitlab-managed-apps',
labels: { name: "values-content-configuration-app-name" }
}
end
let(:resource) { ::Kubeclient::Resource.new(metadata: metadata, data: files) }
subject { patch_command.config_map_resource }
it 'returns a KubeClient resource with config map content for the application' do
is_expected.to eq(resource)
end
end end
end end
...@@ -3,14 +3,13 @@ ...@@ -3,14 +3,13 @@
require 'spec_helper' require 'spec_helper'
describe Gitlab::Kubernetes::Helm::ResetCommand do describe Gitlab::Kubernetes::Helm::ResetCommand do
subject(:reset_command) { described_class.new(name: name, rbac: rbac, files: files) }
let(:rbac) { true } let(:rbac) { true }
let(:name) { 'helm' } let(:name) { 'helm' }
let(:files) { {} } let(:files) { {} }
let(:reset_command) { described_class.new(name: name, rbac: rbac, files: files) }
subject { reset_command }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS <<~EOS
helm reset helm reset
...@@ -23,7 +22,7 @@ describe Gitlab::Kubernetes::Helm::ResetCommand do ...@@ -23,7 +22,7 @@ describe Gitlab::Kubernetes::Helm::ResetCommand do
context 'when there is a ca.pem file' do context 'when there is a ca.pem file' do
let(:files) { { 'ca.pem': 'some file content' } } let(:files) { { 'ca.pem': 'some file content' } }
it_behaves_like 'helm commands' do it_behaves_like 'helm command generator' do
let(:commands) do let(:commands) do
<<~EOS1.squish + "\n" + <<~EOS2 <<~EOS1.squish + "\n" + <<~EOS2
helm reset helm reset
...@@ -39,29 +38,13 @@ describe Gitlab::Kubernetes::Helm::ResetCommand do ...@@ -39,29 +38,13 @@ describe Gitlab::Kubernetes::Helm::ResetCommand do
end end
end end
describe '#pod_resource' do
subject { reset_command.pod_resource }
context 'rbac is enabled' do
let(:rbac) { true }
it 'generates a pod that uses the tiller serviceAccountName' do
expect(subject.spec.serviceAccountName).to eq('tiller')
end
end
context 'rbac is not enabled' do
let(:rbac) { false }
it 'generates a pod that uses the default serviceAccountName' do
expect(subject.spec.serviceAcccountName).to be_nil
end
end
end
describe '#pod_name' do describe '#pod_name' do
subject { reset_command.pod_name } subject { reset_command.pod_name }
it { is_expected.to eq('uninstall-helm') } it { is_expected.to eq('uninstall-helm') }
end end
it_behaves_like 'helm command' do
let(:command) { reset_command }
end
end end
# frozen_string_literal: true
shared_examples 'helm command generator' do
describe '#generate_script' do
let(:helm_setup) do
<<~EOS
set -xeo pipefail
EOS
end
it 'returns appropriate command' do
expect(subject.generate_script.strip).to eq((helm_setup + commands).strip)
end
end
end
shared_examples 'helm command' do
describe '#rbac?' do
subject { command.rbac? }
context 'rbac is enabled' do
let(:rbac) { true }
it { is_expected.to be_truthy }
end
context 'rbac is not enabled' do
let(:rbac) { false }
it { is_expected.to be_falsey }
end
end
describe '#pod_resource' do
subject { command.pod_resource }
context 'rbac is enabled' do
let(:rbac) { true }
it { is_expected.to be_an_instance_of ::Kubeclient::Resource }
it 'generates a pod that uses the tiller serviceAccountName' do
expect(subject.spec.serviceAccountName).to eq('tiller')
end
end
context 'rbac is not enabled' do
let(:rbac) { false }
it { is_expected.to be_an_instance_of ::Kubeclient::Resource }
it 'generates a pod that uses the default serviceAccountName' do
expect(subject.spec.serviceAcccountName).to be_nil
end
end
end
describe '#config_map_resource' do
subject { command.config_map_resource }
let(:metadata) do
{
name: "values-content-configuration-#{command.name}",
namespace: 'gitlab-managed-apps',
labels: { name: "values-content-configuration-#{command.name}" }
}
end
let(:resource) { ::Kubeclient::Resource.new(metadata: metadata, data: command.files) }
it 'returns a KubeClient resource with config map content for the application' do
is_expected.to eq(resource)
end
end
describe '#service_account_resource' do
let(:resource) do
Kubeclient::Resource.new(metadata: { name: 'tiller', namespace: 'gitlab-managed-apps' })
end
subject { command.service_account_resource }
context 'rbac is enabled' do
let(:rbac) { true }
it 'generates a Kubeclient resource for the tiller ServiceAccount' do
is_expected.to eq(resource)
end
end
context 'rbac is not enabled' do
let(:rbac) { false }
it 'generates nothing' do
is_expected.to be_nil
end
end
end
describe '#cluster_role_binding_resource' do
let(:resource) do
Kubeclient::Resource.new(
metadata: { name: 'tiller-admin' },
roleRef: { apiGroup: 'rbac.authorization.k8s.io', kind: 'ClusterRole', name: 'cluster-admin' },
subjects: [{ kind: 'ServiceAccount', name: 'tiller', namespace: 'gitlab-managed-apps' }]
)
end
subject(:cluster_role_binding_resource) { command.cluster_role_binding_resource }
context 'rbac is enabled' do
let(:rbac) { true }
it 'generates a Kubeclient resource for the ClusterRoleBinding for tiller' do
is_expected.to eq(resource)
end
it 'binds the account in #service_account_resource' do
expect(cluster_role_binding_resource.subjects.first.name).to eq(command.service_account_resource.metadata.name)
end
end
context 'rbac is not enabled' do
let(:rbac) { false }
it 'generates nothing' do
is_expected.to be_nil
end
end
end
end
# frozen_string_literal: true
RSpec.shared_examples 'helm commands' do
describe '#generate_script' do
let(:helm_setup) do
<<~EOS
set -xeo pipefail
EOS
end
it 'returns appropriate command' do
expect(subject.generate_script.strip).to eq((helm_setup + commands).strip)
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