mirror of
https://github.com/fluxcd/flagger.git
synced 2026-04-15 06:57:34 +00:00
165 lines
7.4 KiB
Go
165 lines
7.4 KiB
Go
package canary
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
)
|
|
|
|
func TestConfigTracker_ConfigMaps(t *testing.T) {
|
|
t.Run("deployment", func(t *testing.T) {
|
|
mocks := newDeploymentFixture()
|
|
configMap := newDeploymentControllerTestConfigMap()
|
|
configMapProjected := newDeploymentControllerTestConfigProjected()
|
|
|
|
mocks.initializeCanary(t)
|
|
|
|
depPrimary, err := mocks.kubeClient.AppsV1().Deployments("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
|
require.NoError(t, err)
|
|
|
|
configPrimaryVolName := depPrimary.Spec.Template.Spec.Volumes[0].VolumeSource.ConfigMap.LocalObjectReference.Name
|
|
assert.Equal(t, "podinfo-config-vol-primary", configPrimaryVolName)
|
|
|
|
configPrimary, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get(context.TODO(), "podinfo-config-env-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, configMap.Data["color"], configPrimary.Data["color"])
|
|
}
|
|
|
|
configPrimaryEnv, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get(context.TODO(), "podinfo-config-all-env-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, configMap.Data["color"], configPrimaryEnv.Data["color"])
|
|
}
|
|
|
|
configPrimaryVol, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get(context.TODO(), "podinfo-config-vol-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, configMap.Data["color"], configPrimaryVol.Data["color"])
|
|
}
|
|
|
|
configProjectedName := depPrimary.Spec.Template.Spec.Volumes[2].VolumeSource.Projected.Sources[0].ConfigMap.Name
|
|
assert.Equal(t, "podinfo-config-projected-primary", configProjectedName)
|
|
|
|
configPrimaryProjected, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get(context.TODO(), "podinfo-config-vol-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, configMapProjected.Data["color"], configPrimaryProjected.Data["color"])
|
|
}
|
|
})
|
|
|
|
t.Run("daemonset", func(t *testing.T) {
|
|
mocks := newDaemonSetFixture()
|
|
configMap := newDaemonSetControllerTestConfigMap()
|
|
configMapProjected := newDaemonSetControllerTestConfigProjected()
|
|
|
|
err := mocks.controller.Initialize(mocks.canary)
|
|
require.NoError(t, err)
|
|
|
|
depPrimary, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
|
require.NoError(t, err)
|
|
|
|
configPrimaryVolName := depPrimary.Spec.Template.Spec.Volumes[0].VolumeSource.ConfigMap.LocalObjectReference.Name
|
|
assert.Equal(t, "podinfo-config-vol-primary", configPrimaryVolName)
|
|
|
|
configPrimary, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get(context.TODO(), "podinfo-config-env-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, configMap.Data["color"], configPrimary.Data["color"])
|
|
}
|
|
|
|
configPrimaryEnv, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get(context.TODO(), "podinfo-config-all-env-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, configMap.Data["color"], configPrimaryEnv.Data["color"])
|
|
}
|
|
|
|
configPrimaryVol, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get(context.TODO(), "podinfo-config-vol-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, configMap.Data["color"], configPrimaryVol.Data["color"])
|
|
}
|
|
|
|
configProjectedName := depPrimary.Spec.Template.Spec.Volumes[2].VolumeSource.Projected.Sources[0].ConfigMap.Name
|
|
assert.Equal(t, "podinfo-config-projected-primary", configProjectedName)
|
|
|
|
configPrimaryProjected, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get(context.TODO(), "podinfo-config-vol-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, configMapProjected.Data["color"], configPrimaryProjected.Data["color"])
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestConfigTracker_Secrets(t *testing.T) {
|
|
t.Run("deployment", func(t *testing.T) {
|
|
mocks := newDeploymentFixture()
|
|
secret := newDeploymentControllerTestSecret()
|
|
secretProjected := newDeploymentControllerTestSecretProjected()
|
|
|
|
mocks.initializeCanary(t)
|
|
|
|
depPrimary, err := mocks.kubeClient.AppsV1().Deployments("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, "podinfo-secret-vol-primary",
|
|
depPrimary.Spec.Template.Spec.Volumes[1].VolumeSource.Secret.SecretName)
|
|
}
|
|
|
|
secretPrimary, err := mocks.kubeClient.CoreV1().Secrets("default").Get(context.TODO(), "podinfo-secret-env-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, string(secret.Data["apiKey"]), string(secretPrimary.Data["apiKey"]))
|
|
}
|
|
|
|
secretPrimaryEnv, err := mocks.kubeClient.CoreV1().Secrets("default").Get(context.TODO(), "podinfo-secret-all-env-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, string(secret.Data["apiKey"]), string(secretPrimaryEnv.Data["apiKey"]))
|
|
}
|
|
|
|
secretPrimaryVol, err := mocks.kubeClient.CoreV1().Secrets("default").Get(context.TODO(), "podinfo-secret-vol-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, string(secret.Data["apiKey"]), string(secretPrimaryVol.Data["apiKey"]))
|
|
}
|
|
|
|
secretProjectedName := depPrimary.Spec.Template.Spec.Volumes[2].VolumeSource.Projected.Sources[1].Secret.Name
|
|
assert.Equal(t, "podinfo-secret-projected-primary", secretProjectedName)
|
|
|
|
secretPrimaryProjected, err := mocks.kubeClient.CoreV1().Secrets("default").Get(context.TODO(), "podinfo-secret-projected-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, string(secretProjected.Data["apiKey"]), string(secretPrimaryProjected.Data["apiKey"]))
|
|
}
|
|
})
|
|
|
|
t.Run("daemonset", func(t *testing.T) {
|
|
mocks := newDaemonSetFixture()
|
|
secret := newDaemonSetControllerTestSecret()
|
|
secretProjected := newDaemonSetControllerTestSecretProjected()
|
|
|
|
mocks.controller.Initialize(mocks.canary)
|
|
|
|
daePrimary, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, "podinfo-secret-vol-primary",
|
|
daePrimary.Spec.Template.Spec.Volumes[1].VolumeSource.Secret.SecretName)
|
|
}
|
|
|
|
secretPrimary, err := mocks.kubeClient.CoreV1().Secrets("default").Get(context.TODO(), "podinfo-secret-env-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, string(secret.Data["apiKey"]), string(secretPrimary.Data["apiKey"]))
|
|
}
|
|
|
|
secretPrimaryEnv, err := mocks.kubeClient.CoreV1().Secrets("default").Get(context.TODO(), "podinfo-secret-all-env-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, string(secret.Data["apiKey"]), string(secretPrimaryEnv.Data["apiKey"]))
|
|
}
|
|
|
|
secretPrimaryVol, err := mocks.kubeClient.CoreV1().Secrets("default").Get(context.TODO(), "podinfo-secret-vol-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, string(secret.Data["apiKey"]), string(secretPrimaryVol.Data["apiKey"]))
|
|
}
|
|
|
|
secretProjectedName := daePrimary.Spec.Template.Spec.Volumes[2].VolumeSource.Projected.Sources[1].Secret.Name
|
|
assert.Equal(t, "podinfo-secret-projected-primary", secretProjectedName)
|
|
|
|
secretPrimaryProjected, err := mocks.kubeClient.CoreV1().Secrets("default").Get(context.TODO(), "podinfo-secret-projected-primary", metav1.GetOptions{})
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, string(secretProjected.Data["apiKey"]), string(secretPrimaryProjected.Data["apiKey"]))
|
|
}
|
|
})
|
|
}
|