Просмотр исходного кода

e2e: enforce required v2 provider flags

Signed-off-by: Moritz Johner <beller.moritz@googlemail.com>
Moritz Johner 2 месяцев назад
Родитель
Сommit
4da4f1fe52

+ 9 - 3
e2e/framework/addon/eso_v2_mutators.go

@@ -62,15 +62,21 @@ func setOrAppendVar(chart *HelmChart, variable StringTuple) {
 }
 
 func ensureV2ProviderConfig(chart *HelmChart) {
-	vars := []StringTuple{
-		{Key: "replicaCount", Value: "1"},
+	requiredVars := []StringTuple{
 		{Key: "v2.enabled", Value: "true"},
 		{Key: "crds.createProvider", Value: "true"},
 		{Key: "crds.createClusterProvider", Value: "true"},
 		{Key: "providers.enabled", Value: "true"},
+	}
+	for _, variable := range requiredVars {
+		setOrAppendVar(chart, variable)
+	}
+
+	defaultVars := []StringTuple{
+		{Key: "replicaCount", Value: "1"},
 		{Key: "providerDefaults.replicaCount", Value: "1"},
 	}
-	for _, variable := range vars {
+	for _, variable := range defaultVars {
 		setVarIfMissing(chart, variable)
 	}
 }

+ 19 - 4
e2e/framework/addon/eso_v2_mutators_test.go

@@ -135,22 +135,25 @@ func TestWithV2FakeProviderUpdatesExistingEntryInPlace(t *testing.T) {
 	assertProvider(t, eso.HelmChart, "fake", "fake", "ghcr.io/external-secrets/provider-fake", "test-version")
 }
 
-func TestWithV2FakeProviderPreservesExistingBaseVars(t *testing.T) {
+func TestWithV2FakeProviderEnforcesRequiredFlags(t *testing.T) {
 	t.Setenv("VERSION", "test-version")
 
 	eso := NewESO()
 	setOrAppendVar(eso.HelmChart, StringTuple{Key: "replicaCount", Value: "7"})
-	setOrAppendVar(eso.HelmChart, StringTuple{Key: "v2.enabled", Value: "custom"})
+	setOrAppendVar(eso.HelmChart, StringTuple{Key: "v2.enabled", Value: "false"})
+	setOrAppendVar(eso.HelmChart, StringTuple{Key: "crds.createProvider", Value: "false"})
+	setOrAppendVar(eso.HelmChart, StringTuple{Key: "crds.createClusterProvider", Value: "false"})
+	setOrAppendVar(eso.HelmChart, StringTuple{Key: "providers.enabled", Value: "false"})
 	setOrAppendVar(eso.HelmChart, StringTuple{Key: "providerDefaults.replicaCount", Value: "8"})
 
 	WithV2FakeProvider()(eso)
 
 	assertVarValue(t, eso.HelmChart, "replicaCount", "7")
-	assertVarValue(t, eso.HelmChart, "v2.enabled", "custom")
-	assertVarValue(t, eso.HelmChart, "providerDefaults.replicaCount", "8")
+	assertVarValue(t, eso.HelmChart, "v2.enabled", "true")
 	assertVarValue(t, eso.HelmChart, "crds.createProvider", "true")
 	assertVarValue(t, eso.HelmChart, "crds.createClusterProvider", "true")
 	assertVarValue(t, eso.HelmChart, "providers.enabled", "true")
+	assertVarValue(t, eso.HelmChart, "providerDefaults.replicaCount", "8")
 }
 
 func assertVarValue(t *testing.T, chart *HelmChart, key, wantValue string) {
@@ -231,6 +234,15 @@ type providerEntry struct {
 }
 
 var providerVarPattern = regexp.MustCompile(`^providers\.list\[(\d+)\]\.(.+)$`)
+var allowedProviderFields = map[string]struct{}{
+	"name":             {},
+	"type":             {},
+	"enabled":          {},
+	"replicaCount":     {},
+	"image.repository": {},
+	"image.tag":        {},
+	"image.pullPolicy": {},
+}
 
 func providerEntries(t *testing.T, chart *HelmChart) map[int]providerEntry {
 	t.Helper()
@@ -246,6 +258,9 @@ func providerEntries(t *testing.T, chart *HelmChart) map[int]providerEntry {
 			t.Fatalf("unable to parse provider index from key %q: %v", variable.Key, err)
 		}
 		field := matches[2]
+		if _, ok := allowedProviderFields[field]; !ok {
+			t.Fatalf("unexpected provider field %q in key %q", field, variable.Key)
+		}
 
 		entry := providers[index]
 		switch field {