From dc347e273d584b6e3a69c682d918510c6d4c8e99 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Fri, 25 Jan 2019 18:27:05 +0200 Subject: [PATCH] Add secrets from env tests --- pkg/controller/controller_test.go | 53 ++++++++++++++++++++++++++++++- pkg/controller/deployer_test.go | 10 ++++++ pkg/controller/scheduler_test.go | 15 +++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/pkg/controller/controller_test.go b/pkg/controller/controller_test.go index fce27fa6..d6652535 100644 --- a/pkg/controller/controller_test.go +++ b/pkg/controller/controller_test.go @@ -40,10 +40,11 @@ func SetupTest() ( ) { canary = newTestCanary() configMap := NewTestConfigMap() + secret := NewTestSecret() dep := newTestDeployment() hpa := newTestHPA() - kubeClient = fake.NewSimpleClientset(configMap, dep, hpa) + kubeClient = fake.NewSimpleClientset(secret, configMap, dep, hpa) istioClient = fakeIstio.NewSimpleClientset() @@ -138,6 +139,34 @@ func NewTestConfigMapUpdated() *corev1.ConfigMap { } } +func NewTestSecret() *corev1.Secret { + return &corev1.Secret{ + TypeMeta: metav1.TypeMeta{APIVersion: corev1.SchemeGroupVersion.String()}, + ObjectMeta: metav1.ObjectMeta{ + Namespace: "default", + Name: "podinfo-secret-env", + }, + Type: corev1.SecretTypeOpaque, + Data: map[string][]byte{ + "apiKey": []byte("test"), + }, + } +} + +func NewTestSecretUpdated() *corev1.Secret { + return &corev1.Secret{ + TypeMeta: metav1.TypeMeta{APIVersion: corev1.SchemeGroupVersion.String()}, + ObjectMeta: metav1.ObjectMeta{ + Namespace: "default", + Name: "podinfo-secret-env", + }, + Type: corev1.SecretTypeOpaque, + Data: map[string][]byte{ + "apiKey": []byte("test2"), + }, + } +} + func newTestCanary() *v1alpha3.Canary { cd := &v1alpha3.Canary{ TypeMeta: metav1.TypeMeta{APIVersion: v1alpha3.SchemeGroupVersion.String()}, @@ -228,6 +257,17 @@ func newTestDeployment() *appsv1.Deployment { }, }, }, + { + Name: "API_KEY", + ValueFrom: &corev1.EnvVarSource{ + SecretKeyRef: &corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "podinfo-secret-env", + }, + Key: "apiKey", + }, + }, + }, }, }, }, @@ -286,6 +326,17 @@ func newTestDeploymentUpdated() *appsv1.Deployment { }, }, }, + { + Name: "API_KEY", + ValueFrom: &corev1.EnvVarSource{ + SecretKeyRef: &corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "podinfo-secret-env", + }, + Key: "apiKey", + }, + }, + }, }, }, }, diff --git a/pkg/controller/deployer_test.go b/pkg/controller/deployer_test.go index 6560278f..574833c9 100644 --- a/pkg/controller/deployer_test.go +++ b/pkg/controller/deployer_test.go @@ -22,6 +22,7 @@ func TestCanaryDeployer_Sync(t *testing.T) { dep := newTestDeployment() configMap := NewTestConfigMap() + secret := NewTestSecret() primaryImage := depPrimary.Spec.Template.Spec.Containers[0].Image sourceImage := dep.Spec.Template.Spec.Containers[0].Image @@ -46,6 +47,15 @@ func TestCanaryDeployer_Sync(t *testing.T) { if configPrimary.Data["color"] != configMap.Data["color"] { t.Errorf("Got ConfigMap color %s wanted %s", configPrimary.Data["color"], configMap.Data["color"]) } + + secretPrimary, err := kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-env-primary", metav1.GetOptions{}) + if err != nil { + t.Fatal(err.Error()) + } + + if string(secretPrimary.Data["apiKey"]) != string(secret.Data["apiKey"]) { + t.Errorf("Got primary secret %s wanted %s", secretPrimary.Data["apiKey"], secret.Data["apiKey"]) + } } func TestCanaryDeployer_IsNewSpec(t *testing.T) { diff --git a/pkg/controller/scheduler_test.go b/pkg/controller/scheduler_test.go index 16d653ec..bb27e891 100644 --- a/pkg/controller/scheduler_test.go +++ b/pkg/controller/scheduler_test.go @@ -157,6 +157,12 @@ func TestScheduler_Promotion(t *testing.T) { t.Fatal(err.Error()) } + secret2 := NewTestSecretUpdated() + _, err = kubeClient.CoreV1().Secrets("default").Update(secret2) + if err != nil { + t.Fatal(err.Error()) + } + // advance ctrl.advanceCanary("podinfo", "default", true) @@ -196,6 +202,15 @@ func TestScheduler_Promotion(t *testing.T) { t.Errorf("Got primary ConfigMap color %s wanted %s", configPrimary.Data["color"], config2.Data["color"]) } + secretPrimary, err := kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-env-primary", metav1.GetOptions{}) + if err != nil { + t.Fatal(err.Error()) + } + + if string(secretPrimary.Data["apiKey"]) != string(secret2.Data["apiKey"]) { + t.Errorf("Got primary secret %s wanted %s", secretPrimary.Data["apiKey"], secret2.Data["apiKey"]) + } + c, err := flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error())