1+ /*
2+ Copyright 2025.
3+ Licensed under the Apache License, Version 2.0 (the "License");
4+ you may not use this file except in compliance with the License.
5+ You may obtain a copy of the License at
6+
7+ http://www.apache.org/licenses/LICENSE-2.0
8+
9+ Unless required by applicable law or agreed to in writing, software
10+ distributed under the License is distributed on an "AS IS" BASIS,
11+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+ See the License for the specific language governing permissions and
13+ limitations under the License.
14+ */
15+
116package e2e
217
318import (
419 "context"
520 "embed"
6- . "github.com/onsi/ginkgo/v2"
7- . "github.com/onsi/gomega"
8- utils "github.com/openshift/external-secrets-operator/test/utils"
21+ "encoding/base64"
22+ "fmt"
23+ "testing"
24+ "time"
25+
926 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1027 "k8s.io/apimachinery/pkg/runtime/schema"
1128 "k8s.io/client-go/dynamic"
1229 "k8s.io/client-go/kubernetes"
13- "testing"
14- "time"
30+
31+ . "github.com/onsi/ginkgo/v2"
32+ . "github.com/onsi/gomega"
33+
34+ "github.com/openshift/external-secrets-operator/test/utils"
1535)
1636
1737//go:embed testdata/*
1838var testassets embed.FS
1939
2040const (
21- operatorNamespace = "external-secrets-operator"
22- operandNamespace = "external-secrets"
23- secretStoreFile = "testdata/aws_secret_store.yaml"
24- externalSecretFile = "testdata/aws_external_secret.yaml"
25- pushSecretFile = "testdata/push_secret.yaml"
26- externalSecrets = "testdata/external_secret.yaml"
41+ operatorNamespace = "external-secrets-operator"
42+ operandNamespace = "external-secrets"
43+ secretStoreFile = "testdata/aws_secret_store.yaml"
44+ externalSecretFile = "testdata/aws_external_secret.yaml"
45+ pushSecretFile = "testdata/push_secret.yaml"
46+ externalSecrets = "testdata/external_secret.yaml"
47+ expectedSecretValueFile = "testdata/expected_value.yaml"
48+ awsSecretToPushFile = "testdata/aws_k8s_push_secret.yaml"
2749)
2850
29- var _ = Describe ("External Secrets Operator End-to-End" , Ordered , func () {
51+ var _ = Describe ("External Secrets Operator End-to-End test scenarios " , Ordered , func () {
3052 ctx := context .TODO ()
3153 var (
3254 clientset * kubernetes.Clientset
3355 dynamicClient * dynamic.DynamicClient
3456 loader utils.DynamicResourceLoader
57+ awsSecretName string
3558 )
3659
3760 BeforeAll (func () {
@@ -44,20 +67,22 @@ var _ = Describe("External Secrets Operator End-to-End", Ordered, func() {
4467 dynamicClient , err = dynamic .NewForConfig (cfg )
4568 Expect (err ).Should (BeNil ())
4669
70+ awsSecretName = fmt .Sprintf ("eso-e2e-secret-%s" , utils .GetRandomString (5 ))
71+
4772 By ("Waiting for external-secrets-operator controller-manager pod to be ready" )
4873 Expect (utils .VerifyPodsReadyByPrefix (ctx , clientset , operatorNamespace , []string {
4974 "external-secrets-operator-controller-manager-" ,
5075 })).To (Succeed ())
5176
52- By ("Creating the ExternalSecrets Operator CR" )
77+ By ("Creating the externalsecrets.openshift.operator.io/cluster CR" )
5378 loader .CreateFromFile (testassets .ReadFile , externalSecrets , operatorNamespace )
5479 })
5580
5681 AfterAll (func () {
57- By ("Deleting the ExternalSecrets Operator CR" )
82+ By ("Deleting the externalsecrets.openshift.operator.io/cluster CR" )
5883 loader .DeleteFromFile (testassets .ReadFile , externalSecrets , operatorNamespace )
5984
60- err := utils .DeleteAWSSecret ("test/e2e" , "eu-north -1" )
85+ err := utils .DeleteAWSSecret (awsSecretName , "ap-south -1" )
6186 Expect (err ).NotTo (HaveOccurred (), "failed to delete AWS secret test/e2e" )
6287 })
6388
@@ -70,7 +95,15 @@ var _ = Describe("External Secrets Operator End-to-End", Ordered, func() {
7095 })).To (Succeed ())
7196 })
7297
73- It ("should create secrets from SecretStore and ExternalSecret" , func () {
98+ It ("should create secrets mentioned in ExternalSecret using the referenced SecretStore" , func () {
99+ expectedSecretValue , err := utils .ReadExpectedSecretValue (expectedSecretValueFile )
100+ Expect (err ).To (Succeed ())
101+
102+ By ("Creating kubernetes secret to be used in PushSecret" )
103+ secretsAssetFunc := utils .ReplacePatternInAsset ("${SECRET_VALUE}" , base64 .StdEncoding .EncodeToString (expectedSecretValue ))
104+ loader .CreateFromFile (secretsAssetFunc , awsSecretToPushFile , operandNamespace )
105+ defer loader .DeleteFromFile (testassets .ReadFile , awsSecretToPushFile , operandNamespace )
106+
74107 By ("Creating SecretStore" )
75108 loader .CreateFromFile (testassets .ReadFile , secretStoreFile , operandNamespace )
76109 defer loader .DeleteFromFile (testassets .ReadFile , secretStoreFile , operandNamespace )
@@ -86,7 +119,8 @@ var _ = Describe("External Secrets Operator End-to-End", Ordered, func() {
86119 )).To (Succeed ())
87120
88121 By ("Creating PushSecret" )
89- loader .CreateFromFile (testassets .ReadFile , pushSecretFile , operandNamespace )
122+ assetFunc := utils .ReplacePatternInAsset ("${AWS_SECRET_KEY_NAME}" , awsSecretName )
123+ loader .CreateFromFile (assetFunc , pushSecretFile , operandNamespace )
90124 defer loader .DeleteFromFile (testassets .ReadFile , pushSecretFile , operandNamespace )
91125
92126 By ("Waiting for PushSecret to become Ready" )
@@ -100,7 +134,7 @@ var _ = Describe("External Secrets Operator End-to-End", Ordered, func() {
100134 )).To (Succeed ())
101135
102136 By ("Creating ExternalSecret" )
103- loader .CreateFromFile (testassets . ReadFile , externalSecretFile , operandNamespace )
137+ loader .CreateFromFile (assetFunc , externalSecretFile , operandNamespace )
104138 defer loader .DeleteFromFile (testassets .ReadFile , externalSecretFile , operandNamespace )
105139
106140 By ("Waiting for ExternalSecret to become Ready" )
@@ -121,9 +155,7 @@ var _ = Describe("External Secrets Operator End-to-End", Ordered, func() {
121155 val , ok := secret .Data ["aws_secret_access_key" ]
122156 g .Expect (ok ).To (BeTrue (), "aws_secret_access_key should be present in secret %s" , secret .Name )
123157
124- expectedValue := []byte ("hqTTSYkFYgkw3OfQ9lFvQgtsReb1g1a+Po5Y/HNU" )
125- g .Expect (val ).To (Equal (expectedValue ), "aws_secret_access_key does not match expected value" )
126- }, time .Minute , 5 * time .Second ).Should (Succeed ())
127-
158+ g .Expect (val ).To (Equal (expectedSecretValue ), "aws_secret_access_key does not match expected value" )
159+ }, time .Minute , 10 * time .Second ).Should (Succeed ())
128160 })
129161})
0 commit comments