Skip to content

Commit 4d81d78

Browse files
fix: fix dex e2e test failures (#1166)
Signed-off-by: Rizwana777 <rizwananaaz177@gmail.com> Co-authored-by: Rizwana777 <rizwananaaz177@gmail.com>
1 parent be6b484 commit 4d81d78

3 files changed

Lines changed: 28 additions & 43 deletions

File tree

test/openshift/e2e/ginkgo/parallel/1-031_validate_toolchain_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ var _ = Describe("GitOps Operator Parallel E2E Tests", func() {
100100
} else {
101101
// when running against RC/ released version of gitops
102102
expected_dexVersion = "v2.45.0"
103-
expected_redisVersion = "7.2.11"
103+
expected_redisVersion = "8.2.3"
104104
}
105105

106106
By("locating pods containing toolchain in openshift-gitops")

test/openshift/e2e/ginkgo/parallel/1-095_validate_dex_clientsecret_test.go

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package parallel
1818

1919
import (
2020
"context"
21-
"strings"
2221

2322
argov1beta1api "github.com/argoproj-labs/argocd-operator/api/v1beta1"
2423
. "github.com/onsi/ginkgo/v2"
@@ -90,30 +89,26 @@ var _ = Describe("GitOps Operator Parallel E2E Tests", func() {
9089

9190
By("validating that the Dex Client Secret was copied from dex serviceaccount token secret in to argocd-secret, by the operator")
9291

93-
// To verify the behavior we should first get the token secret name of the dex service account.
92+
// The operator now creates an Opaque secret with a deterministic name for the Dex token
93+
// (via TokenRequest API) instead of using auto-generated kubernetes.io/service-account-token secrets.
94+
// The secret name follows the pattern: <argocd-name>-<dex-sa-name>-token
95+
dexTokenSecretName := "example-argocd-argocd-dex-server-token" // #nosec G101 -- This is a Kubernetes secret name, not a credential
9496

95-
var secretName string
96-
for _, secretData := range serviceAccount.Secrets {
97-
98-
if strings.Contains(secretData.Name, "token") {
99-
secretName = secretData.Name
100-
}
101-
}
102-
Expect(secretName).ToNot(BeEmpty())
103-
104-
// Extract the clientSecret
105-
secretReferencedFromServiceAccount := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: secretName, Namespace: ns.Name}}
106-
Eventually(secretReferencedFromServiceAccount).Should(k8sFixture.ExistByName())
107-
tokenFromSASecret := secretReferencedFromServiceAccount.Data["token"]
108-
Expect(tokenFromSASecret).ToNot(BeEmpty())
97+
// Extract the clientSecret from the Dex token secret
98+
dexTokenSecret := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: dexTokenSecretName, Namespace: ns.Name}}
99+
Eventually(dexTokenSecret, "30s", "2s").Should(k8sFixture.ExistByName())
100+
tokenFromDexSecret := dexTokenSecret.Data["token"]
101+
Expect(tokenFromDexSecret).ToNot(BeEmpty())
102+
// Verify the secret also contains an expiry field
103+
Expect(dexTokenSecret.Data["expiry"]).ToNot(BeEmpty())
109104

110105
// actualClientSecret is the value of the secret in argocd-secret where argocd-operator should copy the secret from
111106
argocdSecret := &corev1.Secret{ObjectMeta: metav1.ObjectMeta{Name: "argocd-secret", Namespace: ns.Name}}
112107
Eventually(argocdSecret).Should(k8sFixture.ExistByName())
113108

114109
actualClientSecret := argocdSecret.Data["oidc.dex.clientSecret"]
115110

116-
Expect(string(actualClientSecret)).To(Equal(string(tokenFromSASecret)), "Dex Client Secret for OIDC is not valid")
111+
Expect(string(actualClientSecret)).To(Equal(string(tokenFromDexSecret)), "Dex Client Secret for OIDC is not valid")
117112

118113
})
119114

test/openshift/e2e/ginkgo/parallel/1-098_validate_dex_clientsecret_deprecated.go

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package parallel
1919
import (
2020
"context"
2121
"fmt"
22-
"strings"
2322

2423
argov1beta1api "github.com/argoproj-labs/argocd-operator/api/v1beta1"
2524
. "github.com/onsi/ginkgo/v2"
@@ -86,40 +85,31 @@ var _ = Describe("GitOps Operator Parallel E2E Tests", func() {
8685

8786
By("validating that the Dex Client Secret was copied from dex serviceaccount token secret to argocd-secret, by the operator")
8887
Eventually(func() error {
89-
// Get the service account and find its token secret
90-
err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dexServiceAccount), dexServiceAccount)
91-
if err != nil {
92-
return err
93-
}
94-
95-
// Find the token secret from the service account secrets
96-
var tokenSecretName string
97-
for _, secret := range dexServiceAccount.Secrets {
98-
if secret.Name != "" && strings.Contains(secret.Name, "token") {
99-
tokenSecretName = secret.Name
100-
break
101-
}
102-
}
88+
// The operator now creates an Opaque secret with a deterministic name for the Dex token
89+
// (via TokenRequest API) instead of using auto-generated kubernetes.io/service-account-token secrets.
90+
// The secret name follows the pattern: <argocd-name>-<dex-sa-name>-token
91+
dexTokenSecretName := "example-argocd-argocd-dex-server-token" // #nosec G101 -- This is a Kubernetes secret name, not a credential
10392

104-
if tokenSecretName == "" {
105-
return fmt.Errorf("no token secret found for service account %s", dexServiceAccount.Name)
106-
}
107-
108-
// Get the token secret and extract the token
109-
tokenSecret := &corev1.Secret{
93+
// Get the Dex token secret and extract the token
94+
dexTokenSecret := &corev1.Secret{
11095
ObjectMeta: metav1.ObjectMeta{
111-
Name: tokenSecretName,
96+
Name: dexTokenSecretName,
11297
Namespace: namespace.Name,
11398
},
11499
}
115-
err = k8sClient.Get(ctx, client.ObjectKeyFromObject(tokenSecret), tokenSecret)
100+
err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dexTokenSecret), dexTokenSecret)
116101
if err != nil {
117102
return err
118103
}
119104

120-
expectedClientSecret, exists := tokenSecret.Data["token"]
105+
expectedClientSecret, exists := dexTokenSecret.Data["token"]
121106
if !exists {
122-
return fmt.Errorf("token not found in secret %s", tokenSecretName)
107+
return fmt.Errorf("token not found in secret %s", dexTokenSecretName)
108+
}
109+
110+
// Verify the secret also contains an expiry field
111+
if _, exists := dexTokenSecret.Data["expiry"]; !exists {
112+
return fmt.Errorf("expiry not found in secret %s", dexTokenSecretName)
123113
}
124114

125115
// Get the argocd-secret and extract the oidc.dex.clientSecret

0 commit comments

Comments
 (0)