Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2017-11-28 20:38:55 +0300
committerShinya Maeda <shinya@gitlab.com>2018-01-08 10:22:17 +0300
commite4745492821440b47a48b75e8786d049fde50fca (patch)
treed0ec865d32648e1f4759b83e7080b42c2c9a619a /spec/migrations
parent5b2ca1c66c3a69a1177c0d2f62c208bdce7a81c0 (diff)
Add test. Disable KubernetesService when migrated
Diffstat (limited to 'spec/migrations')
-rw-r--r--spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb189
1 files changed, 189 insertions, 0 deletions
diff --git a/spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb b/spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb
new file mode 100644
index 00000000000..5621f2689fa
--- /dev/null
+++ b/spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb
@@ -0,0 +1,189 @@
+require 'spec_helper'
+require Rails.root.join('db', 'post_migrate', '20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb')
+
+describe MigrateKubernetesServiceToNewClustersArchitectures, :migration do
+ context 'when user configured kubernetes from CI/CD > Clusters' do
+ let(:project) { create(:project) }
+ let(:user) { create(:user) }
+
+ # Platforms::Kubernetes (New archtecture)
+ let!(:cluster) do
+ create(:cluster,
+ projects: [project],
+ user: user,
+ provider_type: :gcp,
+ platform_type: :kubernetes,
+ provider_gcp: provider_gcp,
+ platform_kubernetes: platform_kubernetes)
+ end
+
+ let(:provider_gcp) { create(:cluster_provider_gcp, :created) }
+ let(:platform_kubernetes) { create(:cluster_platform_kubernetes, :configured) }
+
+ # KubernetesService (Automatically synchronized when Platforms::Kubernetes created)
+ let!(:kubernetes_service) { create(:kubernetes_service, project: project) }
+
+ context 'when user is using the cluster' do
+ it 'migrates' do
+ expect{ migrate! }.not_to change { Clusters::Cluster.count }
+ expect(cluster).to be_active
+ expect(kubernetes_service).not_to be_active
+ end
+ end
+
+ context 'when user disabled cluster' do
+ before do
+ disable_cluster!
+ end
+
+ context 'when user configured kubernetes from Integration > Kubernetes' do
+ before do
+ kubernetes_service.update(
+ active: true,
+ api_url: 'http://new.kube.com',
+ ca_pem: nil,
+ token: 'z' * 40).reload
+ end
+
+ context 'when user is using the kubernetes service' do
+ it 'migrates' do
+ expect{ migrate! }.to change { Clusters::Cluster.count }.by(1)
+
+ Clusters::Cluster.last.tap do |c|
+ expect(c).to be_active
+ expect(c.platform_kubernetes.api_url).to eq(kubernetes_service.api_url)
+ expect(c.platform_kubernetes.ca_pem).to eq(kubernetes_service.ca_pem)
+ expect(c.platform_kubernetes.token).to eq(kubernetes_service.token)
+ end
+
+ expect(kubernetes_service).not_to be_active
+ end
+ end
+
+ context 'when user stopped using the kubernetes service' do
+ before do
+ kubernetes_service.update(active: false)
+ end
+
+ it 'migrates' do
+ expect{ migrate! }.to change { Clusters::Cluster.count }.by(1)
+
+ Clusters::Cluster.last.tap do |c|
+ expect(c).not_to be_active
+ expect(c.platform_kubernetes.api_url).to eq(kubernetes_service.api_url)
+ expect(c.platform_kubernetes.ca_pem).to eq(kubernetes_service.ca_pem)
+ expect(c.platform_kubernetes.token).to eq(kubernetes_service.token)
+ end
+
+ expect(kubernetes_service).not_to be_active
+ end
+ end
+ end
+ end
+
+ context 'when user deleted cluster' do
+ before do
+ destory_cluster!
+ end
+
+ context 'when user configured kubernetes from Integration > Kubernetes' do
+ let!(:new_kubernetes_service) do
+ project.create_kubernetes_service(
+ active: true,
+ api_url: 'http://123.123.123.123',
+ ca_pem: nil,
+ token: 'a' * 40)
+ end
+
+ context 'when user is using the kubernetes service' do
+ it 'migrates' do
+ expect{ migrate! }.to change { Clusters::Cluster.count }.by(1)
+
+ Clusters::Cluster.last.tap do |c|
+ expect(c).to be_active
+ expect(c.platform_kubernetes.api_url).to eq(new_kubernetes_service.api_url)
+ expect(c.platform_kubernetes.ca_pem).to eq(new_kubernetes_service.ca_pem)
+ expect(c.platform_kubernetes.token).to eq(new_kubernetes_service.token)
+ end
+
+ expect(new_kubernetes_service).not_to be_active
+ end
+ end
+
+ context 'when user stopped using the kubernetes service' do
+ before do
+ new_kubernetes_service.update(active: false)
+ end
+
+ it 'migrates' do
+ expect{ migrate! }.to change { Clusters::Cluster.count }.by(1)
+
+ Clusters::Cluster.last.tap do |c|
+ expect(c).not_to be_active
+ expect(c.platform_kubernetes.api_url).to eq(new_kubernetes_service.api_url)
+ expect(c.platform_kubernetes.ca_pem).to eq(new_kubernetes_service.ca_pem)
+ expect(c.platform_kubernetes.token).to eq(new_kubernetes_service.token)
+ end
+
+ expect(new_kubernetes_service).not_to be_active
+ end
+ end
+ end
+ end
+ end
+
+ context 'when user configured kubernetes from Integration > Kubernetes' do
+ let(:project) { create(:project) }
+ let!(:kubernetes_service) { create(:kubernetes_service, project: project) }
+
+ context 'when user is using the kubernetes service' do
+ it 'migrates' do
+ expect{ migrate! }.to change { Clusters::Cluster.count }.by(1)
+
+ Clusters::Cluster.last.tap do |c|
+ expect(c).to be_active
+ expect(c.platform_kubernetes.api_url).to eq(kubernetes_service.api_url)
+ expect(c.platform_kubernetes.ca_pem).to eq(kubernetes_service.ca_pem)
+ expect(c.platform_kubernetes.token).to eq(kubernetes_service.token)
+ end
+
+ expect(kubernetes_service).not_to be_active
+ end
+ end
+
+ context 'when user stopped using the kubernetes service' do
+ before do
+ kubernetes_service.update(active: false)
+ end
+
+ it 'migrates' do
+ expect{ migrate! }.to change { Clusters::Cluster.count }.by(1)
+
+ Clusters::Cluster.last.tap do |c|
+ expect(c).not_to be_active
+ expect(c.platform_kubernetes.api_url).to eq(kubernetes_service.api_url)
+ expect(c.platform_kubernetes.ca_pem).to eq(kubernetes_service.ca_pem)
+ expect(c.platform_kubernetes.token).to eq(kubernetes_service.token)
+ end
+
+ expect(kubernetes_service).not_to be_active
+ end
+ end
+ end
+
+ context 'when nothing is configured' do
+ it 'migrates' do
+ expect{ migrate! }.not_to change { Clusters::Cluster.count }
+ end
+ end
+
+ def disable_cluster!
+ cluster.update!(enabled: false)
+ kubernetes_service.update!(active: false)
+ end
+
+ def destory_cluster!
+ cluster.destroy!
+ kubernetes_service.destroy!
+ end
+end