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

test(e2e): install aws provider in v2 mode

Moritz Johner 2 месяцев назад
Родитель
Сommit
869c053561

+ 3 - 0
e2e/Makefile

@@ -18,6 +18,7 @@ export GOMODCACHE ?= $(CURDIR)/.cache/go-mod
 export OCI_IMAGE_NAME = ghcr.io/external-secrets/external-secrets
 export IMAGE_NAME ?= $(OCI_IMAGE_NAME)
 TEST_V2_PROVIDER_KUBERNETES_BUILD_CMD = $(MAKE) -C ../ docker.build.provider.kubernetes VERSION=$(VERSION) ARCH=amd64 DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
+TEST_V2_PROVIDER_AWS_BUILD_CMD = $(MAKE) -C ../ docker.build.provider.aws VERSION=$(VERSION) ARCH=amd64 DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
 TEST_V2_PROVIDER_FAKE_BUILD_CMD = $(MAKE) -C ../ docker.build.provider.fake VERSION=$(VERSION) ARCH=amd64 DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
 
 ifeq ($(shell git tag),)
@@ -76,6 +77,7 @@ test.v2: start-kind e2e-image ## Run v2 e2e tests against current kube context
 		ARCH=amd64 \
 		DOCKER_BUILD_ARGS="${DOCKER_BUILD_ARGS} --build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
 	$(if $(filter true,$(SKIP_PROVIDER_KUBERNETES_BUILD)),,$(TEST_V2_PROVIDER_KUBERNETES_BUILD_CMD))
+	$(TEST_V2_PROVIDER_AWS_BUILD_CMD)
 	$(TEST_V2_PROVIDER_FAKE_BUILD_CMD)
 	$(MAKE) -C ../ docker.build.controller.e2e \
 		IMAGE_NAME=$(OCI_IMAGE_NAME) \
@@ -86,6 +88,7 @@ test.v2: start-kind e2e-image ## Run v2 e2e tests against current kube context
 	kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(OCI_IMAGE_NAME):$(VERSION)
 	kind load docker-image --name="$(KIND_CLUSTER_NAME)" $(E2E_IMAGE_NAME):$(VERSION)
 	kind load docker-image --name="$(KIND_CLUSTER_NAME)" ghcr.io/external-secrets/provider-kubernetes:$(VERSION)
+	kind load docker-image --name="$(KIND_CLUSTER_NAME)" ghcr.io/external-secrets/provider-aws:$(VERSION)
 	kind load docker-image --name="$(KIND_CLUSTER_NAME)" ghcr.io/external-secrets/provider-fake:$(VERSION)
 	KUBECTL_CONTEXT="$(KIND_CONTEXT)" GINKGO_LABELS="$(V2_GINKGO_LABELS)" E2E_PROVIDER_MODE="v2" TEST_SUITES="provider" ./run.sh
 

+ 7 - 0
e2e/framework/addon/eso_v2_mutators.go

@@ -51,6 +51,13 @@ func WithV2FakeProvider() MutationFunc {
 	}
 }
 
+func WithV2AWSProvider() MutationFunc {
+	return func(eso *ESO) {
+		ensureV2ProviderConfig(eso.HelmChart)
+		setProvider(eso.HelmChart, "aws", "aws", "ghcr.io/external-secrets/provider-aws", os.Getenv("VERSION"))
+	}
+}
+
 func setOrAppendVar(chart *HelmChart, variable StringTuple) {
 	for i := range chart.Vars {
 		if chart.Vars[i].Key == variable.Key {

+ 39 - 1
e2e/framework/addon/eso_v2_mutators_test.go

@@ -48,13 +48,40 @@ func TestWithV2FakeProvider(t *testing.T) {
 	}
 }
 
-func TestWithV2ProvidersCompose(t *testing.T) {
+func TestWithV2AWSProvider(t *testing.T) {
+	t.Setenv("VERSION", "test-version")
+
+	eso := NewESO(WithV2AWSProvider())
+
+	assertV2ProviderBaseVars(t, eso.HelmChart)
+	assertVarValue(t, eso.HelmChart, "providers.enabled", "true")
+	assertProvider(
+		t,
+		eso.HelmChart,
+		"aws",
+		"aws",
+		"ghcr.io/external-secrets/provider-aws",
+		"test-version",
+	)
+	assertSequentialProviderIndexes(t, eso.HelmChart)
+
+	providers := providerEntries(t, eso.HelmChart)
+	if len(providers) != 1 {
+		t.Fatalf("expected exactly one provider entry, got %d", len(providers))
+	}
+	if providers[0].Name != "aws" {
+		t.Fatalf("expected aws to be at index 0 when standalone, got index 0 name %q", providers[0].Name)
+	}
+}
+
+func TestWithV2ProvidersComposeIncludesAWS(t *testing.T) {
 	t.Setenv("VERSION", "test-version")
 
 	eso := NewESO(
 		WithV2Namespace(),
 		WithV2KubernetesProvider(),
 		WithV2FakeProvider(),
+		WithV2AWSProvider(),
 	)
 
 	if eso.HelmChart.Namespace != v2HelmNamespace {
@@ -85,6 +112,14 @@ func TestWithV2ProvidersCompose(t *testing.T) {
 		"ghcr.io/external-secrets/provider-fake",
 		"test-version",
 	)
+	assertProvider(
+		t,
+		eso.HelmChart,
+		"aws",
+		"aws",
+		"ghcr.io/external-secrets/provider-aws",
+		"test-version",
+	)
 	assertSequentialProviderIndexes(t, eso.HelmChart)
 
 	providers := providerEntries(t, eso.HelmChart)
@@ -94,6 +129,9 @@ func TestWithV2ProvidersCompose(t *testing.T) {
 	if providers[1].Name != "fake" {
 		t.Fatalf("expected fake to be second provider entry, got %q at index 1", providers[1].Name)
 	}
+	if providers[2].Name != "aws" {
+		t.Fatalf("expected aws to be third provider entry, got %q at index 2", providers[2].Name)
+	}
 }
 
 func TestWithV2FakeProviderDoesNotDuplicateOnRepeat(t *testing.T) {

+ 9 - 0
e2e/makefile_test.go

@@ -30,12 +30,18 @@ func TestV2MakeTargetCanSkipKubernetesProviderBuild(t *testing.T) {
 	if !strings.Contains(defaultDryRun, "docker.build.provider.kubernetes") {
 		t.Fatalf("expected default test.v2 dry-run to build the kubernetes provider image, output:\n%s", defaultDryRun)
 	}
+	if !strings.Contains(defaultDryRun, "docker.build.provider.aws") {
+		t.Fatalf("expected default test.v2 dry-run to build the aws provider image, output:\n%s", defaultDryRun)
+	}
 	if !strings.Contains(defaultDryRun, "docker.build.provider.fake") {
 		t.Fatalf("expected default test.v2 dry-run to build the fake provider image, output:\n%s", defaultDryRun)
 	}
 	if !strings.Contains(defaultDryRun, "ghcr.io/external-secrets/provider-kubernetes:test-version") {
 		t.Fatalf("expected default test.v2 dry-run to still load the kubernetes provider image, output:\n%s", defaultDryRun)
 	}
+	if !strings.Contains(defaultDryRun, "ghcr.io/external-secrets/provider-aws:test-version") {
+		t.Fatalf("expected default test.v2 dry-run to load the aws provider image, output:\n%s", defaultDryRun)
+	}
 	if !strings.Contains(defaultDryRun, "ghcr.io/external-secrets/provider-fake:test-version") {
 		t.Fatalf("expected default test.v2 dry-run to load the fake provider image, output:\n%s", defaultDryRun)
 	}
@@ -50,6 +56,9 @@ func TestV2MakeTargetCanSkipKubernetesProviderBuild(t *testing.T) {
 	if !strings.Contains(skippedDryRun, "ghcr.io/external-secrets/provider-kubernetes:test-version") {
 		t.Fatalf("expected skipped test.v2 dry-run to still load the kubernetes provider image, output:\n%s", skippedDryRun)
 	}
+	if !strings.Contains(skippedDryRun, "ghcr.io/external-secrets/provider-aws:test-version") {
+		t.Fatalf("expected skipped test.v2 dry-run to still load the aws provider image, output:\n%s", skippedDryRun)
+	}
 	if !strings.Contains(skippedDryRun, "ghcr.io/external-secrets/provider-fake:test-version") {
 		t.Fatalf("expected skipped test.v2 dry-run to still load the fake provider image, output:\n%s", skippedDryRun)
 	}

+ 1 - 0
e2e/suites/provider/suite_test.go

@@ -41,6 +41,7 @@ var _ = SynchronizedBeforeSuite(func() []byte {
 			addon.WithV2Namespace(),
 			addon.WithV2KubernetesProvider(),
 			addon.WithV2FakeProvider(),
+			addon.WithV2AWSProvider(),
 		))
 		return nil
 	}