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  }