github.com/kubeshop/testkube@v1.17.23/pkg/imageinspector/inspector_test.go (about) 1 package imageinspector 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/golang/mock/gomock" 9 "github.com/stretchr/testify/assert" 10 corev1 "k8s.io/api/core/v1" 11 ) 12 13 func TestInspectorInspect(t *testing.T) { 14 ctrl := gomock.NewController(t) 15 infos := NewMockInfoFetcher(ctrl) 16 secrets := NewMockSecretFetcher(ctrl) 17 storage1 := NewMockStorageWithTransfer(ctrl) 18 storage2 := NewMockStorageWithTransfer(ctrl) 19 inspector := NewInspector("default", infos, secrets, storage1, storage2) 20 21 sec := corev1.Secret{StringData: map[string]string{"foo": "bar"}} 22 req := RequestBase{Registry: "regname", Image: "imgname"} 23 storage1.EXPECT().Get(gomock.Any(), req).Return(nil, nil) 24 storage2.EXPECT().Get(gomock.Any(), req).Return(nil, nil) 25 secrets.EXPECT().Get(gomock.Any(), "secname").Return(&sec, nil) 26 infos.EXPECT().Fetch(gomock.Any(), req.Registry, req.Image, []corev1.Secret{sec}).Return(&info1, nil) 27 28 storage1.EXPECT().Store(gomock.Any(), req, info1).Return(nil) 29 storage2.EXPECT().Store(gomock.Any(), req, info1).Return(nil) 30 31 v, err := inspector.Inspect(context.Background(), req.Registry, req.Image, corev1.PullIfNotPresent, []string{"secname"}) 32 assert.NoError(t, err) 33 assert.Equal(t, &info1, v) 34 35 // Wait until asynchronous storage will be done 36 <-time.After(10 * time.Millisecond) 37 } 38 39 func TestInspectorInspectWithCache(t *testing.T) { 40 ctrl := gomock.NewController(t) 41 infos := NewMockInfoFetcher(ctrl) 42 secrets := NewMockSecretFetcher(ctrl) 43 storage1 := NewMockStorageWithTransfer(ctrl) 44 storage2 := NewMockStorageWithTransfer(ctrl) 45 inspector := NewInspector("default", infos, secrets, storage1, storage2) 46 47 req := RequestBase{Registry: "regname", Image: "imgname"} 48 storage1.EXPECT().Get(gomock.Any(), req).Return(&info1, nil) 49 50 v, err := inspector.Inspect(context.Background(), req.Registry, req.Image, corev1.PullIfNotPresent, []string{"secname"}) 51 assert.NoError(t, err) 52 assert.Equal(t, &info1, v) 53 54 // Wait until asynchronous storage will be done 55 <-time.After(10 * time.Millisecond) 56 }