85 lines
2.5 KiB
Ruby
85 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
|