github.com/spotahome/redis-operator@v1.2.4/service/k8s/secret_test.go (about) 1 package k8s 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/spotahome/redis-operator/log" 8 "github.com/spotahome/redis-operator/metrics" 9 "github.com/stretchr/testify/assert" 10 corev1 "k8s.io/api/core/v1" 11 12 errors "k8s.io/apimachinery/pkg/api/errors" 13 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 14 "k8s.io/apimachinery/pkg/runtime" 15 kubernetes "k8s.io/client-go/kubernetes/fake" 16 kubetesting "k8s.io/client-go/testing" 17 ) 18 19 func TestSecretServiceGet(t *testing.T) { 20 21 t.Run("Test getting a secret", func(t *testing.T) { 22 assert := assert.New(t) 23 24 secret := corev1.Secret{ 25 ObjectMeta: metav1.ObjectMeta{ 26 Name: "test_secret", 27 Namespace: "test_namespace", 28 }, 29 Data: map[string][]byte{ 30 "foo": []byte("bar"), 31 }, 32 } 33 34 mcli := &kubernetes.Clientset{} 35 mcli.AddReactor("create", "secrets", func(action kubetesting.Action) (bool, runtime.Object, error) { 36 return true, &secret, nil 37 }) 38 mcli.AddReactor("get", "secrets", func(action kubetesting.Action) (bool, runtime.Object, error) { 39 a := (action).(kubetesting.GetActionImpl) 40 if a.Namespace == secret.ObjectMeta.Namespace && a.Name == secret.ObjectMeta.Name { 41 return true, &secret, nil 42 } 43 return true, nil, errors.NewNotFound(action.GetResource().GroupResource(), a.Name) 44 }) 45 46 _, err := mcli.CoreV1().Secrets(secret.ObjectMeta.Namespace).Create(context.TODO(), &secret, metav1.CreateOptions{}) 47 assert.NoError(err) 48 49 // test getting the secret 50 service := NewSecretService(mcli, log.Dummy, metrics.Dummy) 51 ss, err := service.GetSecret(secret.ObjectMeta.Namespace, secret.ObjectMeta.Name) 52 assert.NotNil(ss) 53 assert.NoError(err) 54 55 // test getting a nonexistent secret 56 _, err = service.GetSecret(secret.ObjectMeta.Namespace, secret.ObjectMeta.Name+"nonexistent") 57 assert.Error(err) 58 assert.True(errors.IsNotFound(err)) 59 }) 60 }