e3ca493876
This model will be used to persist into database Kubernetes properties, such as namespace, service account name and service account token.
84 lines
2.5 KiB
Ruby
84 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Clusters::KubernetesNamespace, type: :model do
|
|
it { is_expected.to belong_to(:cluster_project) }
|
|
it { is_expected.to belong_to(:project) }
|
|
it { is_expected.to belong_to(:cluster) }
|
|
it { is_expected.to have_one(:platform_kubernetes) }
|
|
|
|
describe 'namespace uniqueness validation' do
|
|
let(:cluster_project) { create(:cluster_project) }
|
|
|
|
let(:kubernetes_namespace) do
|
|
build(:cluster_kubernetes_namespace,
|
|
cluster: cluster_project.cluster,
|
|
project: cluster_project.project,
|
|
cluster_project: cluster_project)
|
|
end
|
|
|
|
subject { kubernetes_namespace }
|
|
|
|
context 'when cluster is using the namespace' do
|
|
before do
|
|
create(:cluster_kubernetes_namespace,
|
|
cluster: cluster_project.cluster,
|
|
project: cluster_project.project,
|
|
cluster_project: cluster_project,
|
|
namespace: kubernetes_namespace.namespace)
|
|
end
|
|
|
|
it { is_expected.not_to be_valid }
|
|
end
|
|
|
|
context 'when cluster is not using the namespace' do
|
|
it { is_expected.to be_valid }
|
|
end
|
|
end
|
|
|
|
describe '#set_namespace_and_service_account_to_default' do
|
|
let(:cluster) { platform.cluster }
|
|
let(:cluster_project) { create(:cluster_project, cluster: cluster) }
|
|
let(:kubernetes_namespace) do
|
|
create(:cluster_kubernetes_namespace,
|
|
cluster: cluster_project.cluster,
|
|
project: cluster_project.project,
|
|
cluster_project: cluster_project)
|
|
end
|
|
|
|
describe 'namespace' do
|
|
let(:platform) { create(:cluster_platform_kubernetes, namespace: namespace) }
|
|
|
|
subject { kubernetes_namespace.namespace }
|
|
|
|
context 'when platform has a namespace assigned' do
|
|
let(:namespace) { 'platform-namespace' }
|
|
|
|
it 'should copy the namespace' do
|
|
is_expected.to eq('platform-namespace')
|
|
end
|
|
end
|
|
|
|
context 'when platform does not have namespace assigned' do
|
|
let(:namespace) { nil }
|
|
|
|
it 'should set default namespace' do
|
|
project_slug = "#{cluster_project.project.path}-#{cluster_project.project_id}"
|
|
|
|
is_expected.to eq(project_slug)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'service_account_name' do
|
|
let(:platform) { create(:cluster_platform_kubernetes) }
|
|
|
|
subject { kubernetes_namespace.service_account_name }
|
|
|
|
it 'should set a service account name based on namespace' do
|
|
is_expected.to eq("#{kubernetes_namespace.namespace}-service-account")
|
|
end
|
|
end
|
|
end
|
|
end
|