mirror of
https://github.com/stakater/Reloader.git
synced 2026-08-23 14:06:27 +00:00
174 lines
6.6 KiB
Go
174 lines
6.6 KiB
Go
package controller_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stakater/Reloader/internal/pkg/testutil"
|
|
"github.com/stakater/Reloader/pkg/config"
|
|
)
|
|
|
|
func TestSecretReconciler_NotFound(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
reconciler := newSecretReconciler(t, cfg)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("nonexistent-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_NotFound_ReloadOnDelete(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
cfg.ReloadOnDelete = true
|
|
|
|
deployment := testutil.NewDeployment("test-deployment", "default", map[string]string{
|
|
cfg.Annotations.SecretReload: "deleted-secret",
|
|
})
|
|
reconciler := newSecretReconciler(t, cfg, deployment)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("deleted-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_IgnoredNamespace(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
cfg.IgnoredNamespaces = []string{"kube-system"}
|
|
|
|
secret := testutil.NewSecret("test-secret", "kube-system")
|
|
reconciler := newSecretReconciler(t, cfg, secret)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("test-secret", "kube-system"))
|
|
}
|
|
|
|
func TestSecretReconciler_NoMatchingWorkloads(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
|
|
secret := testutil.NewSecret("test-secret", "default")
|
|
deployment := testutil.NewDeployment("test-deployment", "default", nil)
|
|
reconciler := newSecretReconciler(t, cfg, secret, deployment)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("test-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_MatchingDeployment_AutoAnnotation(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
cfg.AutoReloadAll = true
|
|
|
|
secret := testutil.NewSecret("test-secret", "default")
|
|
deployment := testutil.NewDeploymentWithEnvFrom("test-deployment", "default", "", "test-secret")
|
|
reconciler := newSecretReconciler(t, cfg, secret, deployment)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("test-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_MatchingDeployment_ExplicitAnnotation(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
|
|
secret := testutil.NewSecret("test-secret", "default")
|
|
deployment := testutil.NewDeployment("test-deployment", "default", map[string]string{
|
|
cfg.Annotations.SecretReload: "test-secret",
|
|
})
|
|
reconciler := newSecretReconciler(t, cfg, secret, deployment)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("test-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_WorkloadInDifferentNamespace(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
|
|
secret := testutil.NewSecret("test-secret", "namespace-a")
|
|
deployment := testutil.NewDeployment("test-deployment", "namespace-b", map[string]string{
|
|
cfg.Annotations.SecretReload: "test-secret",
|
|
})
|
|
reconciler := newSecretReconciler(t, cfg, secret, deployment)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("test-secret", "namespace-a"))
|
|
}
|
|
|
|
func TestSecretReconciler_IgnoredWorkloadType(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
cfg.IgnoredWorkloads = []string{"deployment"}
|
|
|
|
secret := testutil.NewSecret("test-secret", "default")
|
|
deployment := testutil.NewDeployment("test-deployment", "default", map[string]string{
|
|
cfg.Annotations.SecretReload: "test-secret",
|
|
})
|
|
reconciler := newSecretReconciler(t, cfg, secret, deployment)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("test-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_DaemonSet(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
|
|
secret := testutil.NewSecret("test-secret", "default")
|
|
daemonset := testutil.NewDaemonSet("test-daemonset", "default", map[string]string{
|
|
cfg.Annotations.SecretReload: "test-secret",
|
|
})
|
|
reconciler := newSecretReconciler(t, cfg, secret, daemonset)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("test-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_StatefulSet(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
|
|
secret := testutil.NewSecret("test-secret", "default")
|
|
statefulset := testutil.NewStatefulSet("test-statefulset", "default", map[string]string{
|
|
cfg.Annotations.SecretReload: "test-secret",
|
|
})
|
|
reconciler := newSecretReconciler(t, cfg, secret, statefulset)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("test-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_MultipleWorkloads(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
|
|
secret := testutil.NewSecret("shared-secret", "default")
|
|
deployment1 := testutil.NewDeployment("deployment-1", "default", map[string]string{
|
|
cfg.Annotations.SecretReload: "shared-secret",
|
|
})
|
|
deployment2 := testutil.NewDeployment("deployment-2", "default", map[string]string{
|
|
cfg.Annotations.SecretReload: "shared-secret",
|
|
})
|
|
daemonset := testutil.NewDaemonSet("daemonset-1", "default", map[string]string{
|
|
cfg.Annotations.SecretReload: "shared-secret",
|
|
})
|
|
|
|
reconciler := newSecretReconciler(t, cfg, secret, deployment1, deployment2, daemonset)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("shared-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_VolumeMount(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
cfg.AutoReloadAll = true
|
|
|
|
secret := testutil.NewSecret("volume-secret", "default")
|
|
deployment := testutil.NewDeploymentWithVolume("test-deployment", "default", "", "volume-secret")
|
|
reconciler := newSecretReconciler(t, cfg, secret, deployment)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("volume-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_ProjectedVolume(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
cfg.AutoReloadAll = true
|
|
|
|
secret := testutil.NewSecret("projected-secret", "default")
|
|
deployment := testutil.NewDeploymentWithProjectedVolume("test-deployment", "default", "", "projected-secret")
|
|
reconciler := newSecretReconciler(t, cfg, secret, deployment)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("projected-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_SearchAnnotation(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
|
|
secret := testutil.NewSecretWithAnnotations("test-secret", "default", map[string]string{
|
|
cfg.Annotations.Match: "true",
|
|
})
|
|
deployment := testutil.NewDeployment("test-deployment", "default", map[string]string{
|
|
cfg.Annotations.Search: "true",
|
|
})
|
|
reconciler := newSecretReconciler(t, cfg, secret, deployment)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("test-secret", "default"))
|
|
}
|
|
|
|
func TestSecretReconciler_ServiceAccountTokenIgnored(t *testing.T) {
|
|
cfg := config.NewDefault()
|
|
cfg.AutoReloadAll = true
|
|
|
|
// Service account tokens should be ignored
|
|
secret := testutil.NewSecret("sa-token", "default")
|
|
secret.Type = "kubernetes.io/service-account-token"
|
|
|
|
deployment := testutil.NewDeploymentWithEnvFrom("test-deployment", "default", "", "sa-token")
|
|
reconciler := newSecretReconciler(t, cfg, secret, deployment)
|
|
assertReconcileSuccess(t, reconciler, reconcileRequest("sa-token", "default"))
|
|
}
|