github.com/kubeshop/testkube@v1.17.23/pkg/imageinspector/memorystorage_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 ) 11 12 var ( 13 time1 = time.Now().UTC().Add(-4 * time.Minute) 14 time2 = time.Now().UTC().Add(-2 * time.Minute) 15 time3 = time.Now().UTC() 16 noInfoPtr *Info 17 info1 = Info{ 18 FetchedAt: time1, 19 Entrypoint: []string{"en", "try"}, 20 Cmd: []string{"c", "md"}, 21 Shell: "/bin/shell", 22 WorkingDir: "some-wd", 23 } 24 info2 = Info{ 25 FetchedAt: time2, 26 Entrypoint: []string{"en", "try2"}, 27 Cmd: []string{"c", "md2"}, 28 Shell: "/bin/shell", 29 WorkingDir: "some-wd", 30 } 31 info3 = Info{ 32 FetchedAt: time3, 33 Entrypoint: []string{"en", "try3"}, 34 Cmd: []string{"c", "md3"}, 35 Shell: "/bin/shell", 36 WorkingDir: "some-wd", 37 } 38 req1 = RequestBase{ 39 Registry: "foo", 40 Image: "bar", 41 } 42 req1Copy = RequestBase{ 43 Registry: "foo", 44 Image: "bar", 45 } 46 req2 = RequestBase{ 47 Registry: "foo2", 48 Image: "bar2", 49 } 50 req3 = RequestBase{ 51 Registry: "foo3", 52 Image: "bar3", 53 } 54 ) 55 56 func TestMemoryStorageGetAndStore(t *testing.T) { 57 m := NewMemoryStorage() 58 err1 := m.Store(context.Background(), req1, info1) 59 err2 := m.Store(context.Background(), req2, info2) 60 v1, gErr1 := m.Get(context.Background(), req1) 61 v2, gErr2 := m.Get(context.Background(), req2) 62 v3, gErr3 := m.Get(context.Background(), req1Copy) 63 v4, gErr4 := m.Get(context.Background(), req3) 64 assert.NoError(t, err1) 65 assert.NoError(t, err2) 66 assert.NoError(t, gErr1) 67 assert.NoError(t, gErr2) 68 assert.NoError(t, gErr3) 69 assert.NoError(t, gErr4) 70 assert.Equal(t, &info1, v1) 71 assert.Equal(t, &info2, v2) 72 assert.Equal(t, &info1, v3) 73 assert.Equal(t, noInfoPtr, v4) 74 } 75 76 func TestMemoryStorageStoreManyAndGet(t *testing.T) { 77 m := NewMemoryStorage() 78 err1 := m.StoreMany(context.Background(), map[Hash]Info{ 79 hash(req1.Registry, req1.Image): info1, 80 hash(req2.Registry, req2.Image): info2, 81 }) 82 v1, gErr1 := m.Get(context.Background(), req1) 83 v2, gErr2 := m.Get(context.Background(), req2) 84 v3, gErr3 := m.Get(context.Background(), req1Copy) 85 v4, gErr4 := m.Get(context.Background(), req3) 86 assert.NoError(t, err1) 87 assert.NoError(t, gErr1) 88 assert.NoError(t, gErr2) 89 assert.NoError(t, gErr3) 90 assert.NoError(t, gErr4) 91 assert.Equal(t, &info1, v1) 92 assert.Equal(t, &info2, v2) 93 assert.Equal(t, &info1, v3) 94 assert.Equal(t, noInfoPtr, v4) 95 } 96 97 func TestMemoryStorageFillAndCopyTo(t *testing.T) { 98 m := NewMemoryStorage() 99 value := map[Hash]Info{ 100 hash(req1.Registry, req1.Image): info1, 101 hash(req2.Registry, req2.Image): info2, 102 } 103 err1 := m.StoreMany(context.Background(), value) 104 105 ctrl := gomock.NewController(t) 106 mockStorage1 := NewMockStorageWithTransfer(ctrl) 107 mockStorage2 := NewMockStorageWithTransfer(ctrl) 108 mockStorage1.EXPECT().StoreMany(gomock.Any(), value) 109 mockStorage2.EXPECT().StoreMany(gomock.Any(), value) 110 err2 := m.CopyTo(context.Background(), mockStorage1, mockStorage2) 111 112 assert.NoError(t, err1) 113 assert.NoError(t, err2) 114 }