From ec389f81d60e4c0dd9bbdb2999afd262e020e102 Mon Sep 17 00:00:00 2001 From: Chad Roberts Date: Tue, 22 Oct 2024 12:09:10 -0400 Subject: [PATCH] Update getSecretInterfaceMock for cleanup_test Signed-off-by: Chad Roberts --- pkg/auth/api/secrets/cleanup_test.go | 81 +++++++++++++++------------- 1 file changed, 45 insertions(+), 36 deletions(-) diff --git a/pkg/auth/api/secrets/cleanup_test.go b/pkg/auth/api/secrets/cleanup_test.go index 8843644b7d7..515fb5eba23 100644 --- a/pkg/auth/api/secrets/cleanup_test.go +++ b/pkg/auth/api/secrets/cleanup_test.go @@ -14,9 +14,11 @@ import ( "github.com/rancher/rancher/pkg/auth/tokens" client "github.com/rancher/rancher/pkg/client/generated/management/v3" v1 "github.com/rancher/rancher/pkg/generated/norman/core/v1" - "github.com/rancher/rancher/pkg/generated/norman/core/v1/fakes" + wcorev1 "github.com/rancher/wrangler/v3/pkg/generated/controllers/core/v1" + wranglerfake "github.com/rancher/wrangler/v3/pkg/generic/fake" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.uber.org/mock/gomock" corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -24,13 +26,15 @@ import ( ) func TestCleanupClientSecretsNilConfig(t *testing.T) { - secrets := getSecretInterfaceMock(map[string]*corev1.Secret{}) + ctrl := gomock.NewController(t) + secrets := getSecretInterfaceMock(ctrl, map[string]*corev1.Secret{}) err := CleanupClientSecrets(secrets, nil) require.Error(t, err) } func TestCleanupClientSecretsUnknownConfig(t *testing.T) { - secrets := getSecretInterfaceMock(map[string]*corev1.Secret{}) + ctrl := gomock.NewController(t) + secrets := getSecretInterfaceMock(ctrl, map[string]*corev1.Secret{}) config := &v3.AuthConfig{ ObjectMeta: metav1.ObjectMeta{Name: "unknownConfig"}, @@ -57,7 +61,8 @@ func TestCleanupClientSecretsKnownConfig(t *testing.T) { oauthSecretName := "user123-secret" initialStore := map[string]*corev1.Secret{} - secrets := getSecretInterfaceMock(initialStore) + ctrl := gomock.NewController(t) + secrets := getSecretInterfaceMock(ctrl, initialStore) _, err := secrets.Create(&v1.Secret{ ObjectMeta: metav1.ObjectMeta{ @@ -87,30 +92,30 @@ func TestCleanupClientSecretsKnownConfig(t *testing.T) { }) assert.NoError(t, err) - s, err := secrets.GetNamespaced(common.SecretsNamespace, secretName1, metav1.GetOptions{}) + s, err := secrets.Get(common.SecretsNamespace, secretName1, metav1.GetOptions{}) assert.NoErrorf(t, err, "expected to find the secret %s belonging to the disabled auth provider", secretName1) - s, err = secrets.GetNamespaced(common.SecretsNamespace, secretName2, metav1.GetOptions{}) + s, err = secrets.Get(common.SecretsNamespace, secretName2, metav1.GetOptions{}) assert.NoErrorf(t, err, "expected to find the secret %s belonging to the disabled auth provider", secretName2) - s, err = secrets.GetNamespaced(tokens.SecretNamespace, oauthSecretName, metav1.GetOptions{}) + s, err = secrets.Get(tokens.SecretNamespace, oauthSecretName, metav1.GetOptions{}) assert.NoErrorf(t, err, "expected to find the secret %s belonging to the disabled auth provider", oauthSecretName) err = CleanupClientSecrets(secrets, config) assert.NoError(t, err) t.Run("Cleanup deletes provider secrets", func(t *testing.T) { - s, err = secrets.GetNamespaced(common.SecretsNamespace, secretName1, metav1.GetOptions{}) + s, err = secrets.Get(common.SecretsNamespace, secretName1, metav1.GetOptions{}) assert.Errorf(t, err, "expected to not find the secret %s belonging to the disabled auth provider", secretName1) assert.Nil(t, s, "expected the secret to be nil") - s, err = secrets.GetNamespaced(common.SecretsNamespace, secretName2, metav1.GetOptions{}) + s, err = secrets.Get(common.SecretsNamespace, secretName2, metav1.GetOptions{}) assert.Errorf(t, err, "expected to not find the secret %s belonging to the disabled auth provider", secretName2) assert.Nil(t, s, "expected the secret to be nil") }) t.Run("Cleanup deletes OAuth secrets", func(t *testing.T) { - s, err = secrets.GetNamespaced(tokens.SecretNamespace, oauthSecretName, metav1.GetOptions{}) + s, err = secrets.Get(tokens.SecretNamespace, oauthSecretName, metav1.GetOptions{}) assert.Errorf(t, err, "expected to not find the secret %s belonging to the disabled auth provider", oauthSecretName) assert.Nil(t, s, "expected the secret to be nil") }) @@ -125,7 +130,8 @@ func TestCleanupDeprecatedSecretsKnownConfig(t *testing.T) { secretName := fmt.Sprintf("%s-%s", strings.ToLower(config.Name), "access-token") initialStore := map[string]*corev1.Secret{} - secrets := getSecretInterfaceMock(initialStore) + ctrl := gomock.NewController(t) + secrets := getSecretInterfaceMock(ctrl, initialStore) _, err := secrets.Create(&v1.Secret{ ObjectMeta: metav1.ObjectMeta{ @@ -135,58 +141,60 @@ func TestCleanupDeprecatedSecretsKnownConfig(t *testing.T) { }) assert.NoError(t, err) - s, err := secrets.GetNamespaced(common.SecretsNamespace, secretName, metav1.GetOptions{}) + s, err := secrets.Get(common.SecretsNamespace, secretName, metav1.GetOptions{}) assert.NoErrorf(t, err, "expected to find the secret %s belonging to the disabled auth provider", secretName) err = CleanupClientSecrets(secrets, config) assert.NoError(t, err) - s, err = secrets.GetNamespaced(common.SecretsNamespace, secretName, metav1.GetOptions{}) + s, err = secrets.Get(common.SecretsNamespace, secretName, metav1.GetOptions{}) assert.Errorf(t, err, "expected to not find the secret %s belonging to the disabled auth provider", secretName) assert.Nil(t, s, "expected the secret to be nil") } -func getSecretInterfaceMock(store map[string]*corev1.Secret) v1.SecretInterface { - secretInterfaceMock := &fakes.SecretInterfaceMock{} +func getSecretInterfaceMock(ctrl *gomock.Controller, store map[string]*corev1.Secret) wcorev1.SecretController { + secretController := wranglerfake.NewMockControllerInterface[*corev1.Secret, *corev1.SecretList](ctrl) - secretInterfaceMock.CreateFunc = func(secret *corev1.Secret) (*corev1.Secret, error) { + secretController.EXPECT().Create(gomock.Any()).DoAndReturn(func(secret *corev1.Secret) (*corev1.Secret, error) { if secret.Name == "" { uniqueIdentifier := md5.Sum([]byte(time.Now().String())) secret.Name = hex.EncodeToString(uniqueIdentifier[:]) } store[fmt.Sprintf("%s:%s", secret.Namespace, secret.Name)] = secret return secret, nil - } + }).AnyTimes() - secretInterfaceMock.GetNamespacedFunc = func(namespace string, name string, opts metav1.GetOptions) (*corev1.Secret, error) { - secret, ok := store[fmt.Sprintf("%s:%s", namespace, name)] - if ok { + secretController.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn(func(namespace, name string, opts metav1.GetOptions) (*corev1.Secret, error) { + key := fmt.Sprintf("%s:%s", namespace, name) + if secret, ok := store[key]; ok { return secret, nil } return nil, errors.New("secret not found") - } + }).AnyTimes() - secretInterfaceMock.DeleteNamespacedFunc = func(namespace string, name string, options *metav1.DeleteOptions) error { + secretController.EXPECT().Delete(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn(func(namespace, name string, options *metav1.DeleteOptions) error { key := fmt.Sprintf("%s:%s", namespace, name) if _, ok := store[key]; !ok { return apierrors.NewNotFound(schema.GroupResource{ - Group: v1.SecretGroupVersionKind.Group, - Resource: v1.SecretGroupVersionResource.Resource, + Group: v1.SchemeGroupVersion.Group, + Resource: "secrets", }, key) } delete(store, key) return nil - } + }).AnyTimes() - secretInterfaceMock.ListNamespacedFunc = func(namespace string, opts metav1.ListOptions) (*corev1.SecretList, error) { + secretController.EXPECT().List(gomock.Any(), gomock.Any()).DoAndReturn(func(namespace string, opts metav1.ListOptions) (*corev1.SecretList, error) { var secrets []corev1.Secret - for _, s := range store { - secrets = append(secrets, *s) + for _, secret := range store { + if secret.Namespace == namespace { + secrets = append(secrets, *secret) + } } return &corev1.SecretList{Items: secrets}, nil - } + }).AnyTimes() - return secretInterfaceMock + return secretController } func TestCleanupClientSecretsOKTAConfig(t *testing.T) { @@ -201,7 +209,8 @@ func TestCleanupClientSecretsOKTAConfig(t *testing.T) { oauthSecretName := "user123-secret" initialStore := map[string]*corev1.Secret{} - secrets := getSecretInterfaceMock(initialStore) + ctrl := gomock.NewController(t) + secrets := getSecretInterfaceMock(ctrl, initialStore) _, err := secrets.Create(&v1.Secret{ ObjectMeta: metav1.ObjectMeta{ @@ -231,24 +240,24 @@ func TestCleanupClientSecretsOKTAConfig(t *testing.T) { }) assert.NoError(t, err) - s, err := secrets.GetNamespaced(common.SecretsNamespace, secretName1, metav1.GetOptions{}) + s, err := secrets.Get(common.SecretsNamespace, secretName1, metav1.GetOptions{}) assert.NoErrorf(t, err, "expected to find the secret %s belonging to the disabled auth provider", secretName1) - s, err = secrets.GetNamespaced(common.SecretsNamespace, secretName2, metav1.GetOptions{}) + s, err = secrets.Get(common.SecretsNamespace, secretName2, metav1.GetOptions{}) assert.NoErrorf(t, err, "expected to find the secret %s belonging to the disabled auth provider", secretName2) - s, err = secrets.GetNamespaced(tokens.SecretNamespace, oauthSecretName, metav1.GetOptions{}) + s, err = secrets.Get(tokens.SecretNamespace, oauthSecretName, metav1.GetOptions{}) assert.NoErrorf(t, err, "expected to find the secret %s belonging to the disabled auth provider", oauthSecretName) err = CleanupClientSecrets(secrets, config) assert.NoError(t, err) t.Run("Cleanup deletes provider secrets", func(t *testing.T) { - s, err = secrets.GetNamespaced(common.SecretsNamespace, secretName1, metav1.GetOptions{}) + s, err = secrets.Get(common.SecretsNamespace, secretName1, metav1.GetOptions{}) assert.Errorf(t, err, "expected to not find the secret %s belonging to the disabled auth provider", secretName1) assert.Nil(t, s, "expected the secret to be nil") - s, err = secrets.GetNamespaced(common.SecretsNamespace, secretName2, metav1.GetOptions{}) + s, err = secrets.Get(common.SecretsNamespace, secretName2, metav1.GetOptions{}) assert.Errorf(t, err, "expected to not find the secret %s belonging to the disabled auth provider", secretName2) assert.Nil(t, s, "expected the secret to be nil") })