summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2017-12-18 16:32:41 +0900
committerShinya Maeda <shinya@gitlab.com>2018-01-08 16:22:17 +0900
commit7eeada80d5c03025c8c37bc1c1567f2500acc8d1 (patch)
tree0c81bb185be9fc0a5e30d8f5c9dd7a6a8dd319ff
parent8e6ffe358873ff56eb1d2b6354fac39ce2dfa80e (diff)
downloadgitlab-ce-7eeada80d5c03025c8c37bc1c1567f2500acc8d1.tar.gz
Add env_scope tests
-rw-r--r--db/post_migrate/20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb1
-rw-r--r--spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb32
2 files changed, 33 insertions, 0 deletions
diff --git a/db/post_migrate/20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb b/db/post_migrate/20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb
index e05d206eb9c..5dee8cb8c5f 100644
--- a/db/post_migrate/20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb
+++ b/db/post_migrate/20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb
@@ -88,6 +88,7 @@ class MigrateKubernetesServiceToNewClustersArchitectures < ActiveRecord::Migrati
provider_type: Cluster.provider_types[:user],
platform_type: Cluster.platform_types[:kubernetes],
projects: [kubernetes_service.project],
+ environment_scope: '*', # KubernetesService is considered as a default cluster
platform_kubernetes_attributes: {
api_url: kubernetes_service.api_url,
ca_cert: kubernetes_service.ca_pem,
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
index d3fa1fe9054..bf41b2df359 100644
--- a/spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb
+++ b/spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb
@@ -113,6 +113,38 @@ describe MigrateKubernetesServiceToNewClustersArchitectures, :migration do
end
end
+ context 'when production cluster has already been existsed' do
+ let(:project) { create(:project) }
+ let!(:cluster) { create(:cluster, :provided_by_gcp, environment_scope: 'production/*', projects: [project]) }
+ let!(:kubernetes_service) { create(:kubernetes_service, api_url: 'https://debug.kube.com', active: true, project: project) }
+
+ it 'migrates the KubernetesService to Platform::Kubernetes' do
+ expect{ migrate! }.to change { Clusters::Cluster.count }.by(1)
+
+ kubernetes_service.reload
+ project.clusters.last.tap do |cluster|
+ expect(cluster.platform_kubernetes.api_url).to eq(kubernetes_service.api_url)
+ expect(cluster.platform_kubernetes.ca_pem).to eq(kubernetes_service.ca_pem)
+ expect(cluster.platform_kubernetes.token).to eq(kubernetes_service.token)
+ expect(kubernetes_service).not_to be_active
+ expect(kubernetes_service.properties['migrated']).to be_truthy
+ end
+ end
+ end
+
+ context 'when default cluster has already been existsed' do
+ let(:project) { create(:project) }
+ let!(:cluster) { create(:cluster, :provided_by_gcp, environment_scope: '*', projects: [project]) }
+ let!(:kubernetes_service) { create(:kubernetes_service, api_url: 'https://debug.kube.com', active: true, project: project) }
+
+ it 'does not migrate the KubernetesService' do # Because environment_scope is duplicated
+ expect{ migrate! }.not_to change { Clusters::Cluster.count }
+
+ expect(kubernetes_service).to be_active
+ expect(kubernetes_service.properties['migrated']).to be_falsy
+ end
+ end
+
context 'when KubernetesService does not exist' do
let!(:project) { create(:project) }