zotregistry.io/zot@v1.4.4-0.20231124084042-02a8ed785457/pkg/extensions/search/cve/cve_internal_test.go (about) 1 //go:build search 2 3 package cveinfo 4 5 import ( 6 "errors" 7 "testing" 8 "time" 9 10 "github.com/opencontainers/go-digest" 11 ispec "github.com/opencontainers/image-spec/specs-go/v1" 12 . "github.com/smartystreets/goconvey/convey" 13 14 cvemodel "zotregistry.io/zot/pkg/extensions/search/cve/model" 15 "zotregistry.io/zot/pkg/meta/types" 16 "zotregistry.io/zot/pkg/test/mocks" 17 ) 18 19 var ErrTestError = errors.New("test error") 20 21 func TestUtils(t *testing.T) { 22 Convey("Utils", t, func() { 23 Convey("getConfigAndDigest", func() { 24 _, _, err := getConfigAndDigest(mocks.MetaDBMock{}, "bad-digest") 25 So(err, ShouldNotBeNil) 26 27 _, _, err = getConfigAndDigest(mocks.MetaDBMock{ 28 GetImageMetaFn: func(digest digest.Digest) (types.ImageMeta, error) { 29 return types.ImageMeta{}, ErrTestError 30 }, 31 }, ispec.DescriptorEmptyJSON.Digest.String()) 32 So(err, ShouldNotBeNil) 33 34 // bad media type of config 35 _, _, err = getConfigAndDigest(mocks.MetaDBMock{ 36 GetImageMetaFn: func(digest digest.Digest) (types.ImageMeta, error) { 37 return types.ImageMeta{Manifests: []types.ManifestMeta{ 38 {Manifest: ispec.Manifest{Config: ispec.Descriptor{MediaType: "bad-type"}}}, 39 }}, nil 40 }, 41 }, ispec.DescriptorEmptyJSON.Digest.String()) 42 So(err, ShouldNotBeNil) 43 }) 44 Convey("getIndexContent", func() { 45 _, err := getIndexContent(mocks.MetaDBMock{}, "bad-digest") 46 So(err, ShouldNotBeNil) 47 48 _, err = getIndexContent(mocks.MetaDBMock{ 49 GetImageMetaFn: func(digest digest.Digest) (types.ImageMeta, error) { 50 return types.ImageMeta{}, ErrTestError 51 }, 52 }, ispec.DescriptorEmptyJSON.Digest.String()) 53 So(err, ShouldNotBeNil) 54 55 // nil index 56 _, err = getIndexContent(mocks.MetaDBMock{ 57 GetImageMetaFn: func(digest digest.Digest) (types.ImageMeta, error) { 58 return types.ImageMeta{}, nil 59 }, 60 }, ispec.DescriptorEmptyJSON.Digest.String()) 61 So(err, ShouldNotBeNil) 62 }) 63 64 Convey("mostRecentUpdate", func() { 65 // empty 66 timestamp := mostRecentUpdate([]cvemodel.DescriptorInfo{}) 67 So(timestamp, ShouldResemble, time.Time{}) 68 69 timestamp = mostRecentUpdate([]cvemodel.DescriptorInfo{ 70 { 71 Timestamp: time.Date(2000, 1, 1, 1, 1, 1, 1, time.UTC), 72 }, 73 { 74 Timestamp: time.Date(2005, 1, 1, 1, 1, 1, 1, time.UTC), 75 }, 76 }) 77 So(timestamp, ShouldResemble, time.Date(2005, 1, 1, 1, 1, 1, 1, time.UTC)) 78 }) 79 80 Convey("GetFixedTags", func() { 81 tags := GetFixedTags( 82 []cvemodel.TagInfo{ 83 {}, 84 }, 85 []cvemodel.TagInfo{ 86 { 87 Descriptor: cvemodel.Descriptor{ 88 MediaType: ispec.MediaTypeImageManifest, 89 }, 90 Timestamp: time.Date(2010, 1, 1, 1, 1, 1, 1, time.UTC), 91 }, 92 { 93 Descriptor: cvemodel.Descriptor{ 94 MediaType: ispec.MediaTypeImageIndex, 95 }, 96 Manifests: []cvemodel.DescriptorInfo{ 97 { 98 Timestamp: time.Date(2002, 1, 1, 1, 1, 1, 1, time.UTC), 99 }, 100 { 101 Timestamp: time.Date(2000, 1, 1, 1, 1, 1, 1, time.UTC), 102 }, 103 }, 104 }, 105 { 106 Descriptor: cvemodel.Descriptor{ 107 MediaType: "bad Type", 108 }, 109 }, 110 }) 111 So(tags, ShouldBeEmpty) 112 }) 113 }) 114 }