github.com/kubeshop/testkube@v1.17.23/pkg/imageinspector/secretfetcher_test.go (about)

     1  package imageinspector
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/golang/mock/gomock"
     8  	"github.com/stretchr/testify/assert"
     9  	corev1 "k8s.io/api/core/v1"
    10  	k8serrors "k8s.io/apimachinery/pkg/api/errors"
    11  	"k8s.io/apimachinery/pkg/runtime/schema"
    12  
    13  	"github.com/kubeshop/testkube/pkg/secret"
    14  )
    15  
    16  func TestSecretFetcherGetExisting(t *testing.T) {
    17  	ctrl := gomock.NewController(t)
    18  	client := secret.NewMockInterface(ctrl)
    19  	fetcher := NewSecretFetcher(client)
    20  
    21  	expected := corev1.Secret{
    22  		StringData: map[string]string{"key": "value"},
    23  	}
    24  	client.EXPECT().GetObject("dummy").Return(&expected, nil)
    25  
    26  	result, err := fetcher.Get(context.Background(), "dummy")
    27  	assert.NoError(t, err)
    28  	assert.Equal(t, &expected, result)
    29  }
    30  
    31  func TestSecretFetcherGetCache(t *testing.T) {
    32  	ctrl := gomock.NewController(t)
    33  	client := secret.NewMockInterface(ctrl)
    34  	fetcher := NewSecretFetcher(client)
    35  
    36  	expected := corev1.Secret{
    37  		StringData: map[string]string{"key": "value"},
    38  	}
    39  	client.EXPECT().GetObject("dummy").Return(&expected, nil)
    40  
    41  	result1, err1 := fetcher.Get(context.Background(), "dummy")
    42  	result2, err2 := fetcher.Get(context.Background(), "dummy")
    43  	assert.NoError(t, err1)
    44  	assert.NoError(t, err2)
    45  	assert.Equal(t, &expected, result1)
    46  	assert.Equal(t, &expected, result2)
    47  }
    48  
    49  func TestSecretFetcherGetError(t *testing.T) {
    50  	ctrl := gomock.NewController(t)
    51  	client := secret.NewMockInterface(ctrl)
    52  	fetcher := NewSecretFetcher(client)
    53  
    54  	client.EXPECT().GetObject("dummy").Return(nil, k8serrors.NewNotFound(schema.GroupResource{}, "dummy"))
    55  	client.EXPECT().GetObject("dummy").Return(nil, k8serrors.NewNotFound(schema.GroupResource{}, "dummy"))
    56  
    57  	result1, err1 := fetcher.Get(context.Background(), "dummy")
    58  	result2, err2 := fetcher.Get(context.Background(), "dummy")
    59  	var noSecret *corev1.Secret
    60  	assert.Error(t, err1)
    61  	assert.Error(t, err2)
    62  	assert.True(t, k8serrors.IsNotFound(err1))
    63  	assert.True(t, k8serrors.IsNotFound(err2))
    64  	assert.Equal(t, noSecret, result1)
    65  	assert.Equal(t, noSecret, result2)
    66  }