zotregistry.io/zot@v1.4.4-0.20231124084042-02a8ed785457/pkg/meta/common/common_test.go (about) 1 package common_test 2 3 import ( 4 "errors" 5 "testing" 6 "time" 7 8 . "github.com/smartystreets/goconvey/convey" 9 10 "zotregistry.io/zot/pkg/meta/common" 11 mTypes "zotregistry.io/zot/pkg/meta/types" 12 ) 13 14 var ErrTestError = errors.New("test error") 15 16 func TestUtils(t *testing.T) { 17 Convey("MatchesArtifactTypes", t, func() { 18 res := common.MatchesArtifactTypes("", nil) 19 So(res, ShouldBeTrue) 20 21 res = common.MatchesArtifactTypes("type", []string{"someOtherType"}) 22 So(res, ShouldBeFalse) 23 }) 24 25 Convey("GetProtoPlatform", t, func() { 26 platform := common.GetProtoPlatform(nil) 27 So(platform, ShouldBeNil) 28 }) 29 30 Convey("ValidateRepoReferenceInput", t, func() { 31 err := common.ValidateRepoReferenceInput("", "tag", "digest") 32 So(err, ShouldNotBeNil) 33 err = common.ValidateRepoReferenceInput("repo", "", "digest") 34 So(err, ShouldNotBeNil) 35 err = common.ValidateRepoReferenceInput("repo", "tag", "") 36 So(err, ShouldNotBeNil) 37 }) 38 39 Convey("CheckImageLastUpdated", t, func() { 40 Convey("No image checked, it doesn't have time", func() { 41 repoLastUpdated := time.Time{} 42 isSigned := false 43 noImageChecked := true 44 manifestFilterData := mTypes.FilterData{ 45 DownloadCount: 10, 46 LastUpdated: time.Time{}, 47 IsSigned: true, 48 } 49 50 repoLastUpdated, noImageChecked, isSigned = common.CheckImageLastUpdated(repoLastUpdated, isSigned, noImageChecked, 51 manifestFilterData) 52 So(repoLastUpdated, ShouldResemble, manifestFilterData.LastUpdated) 53 So(isSigned, ShouldEqual, manifestFilterData.IsSigned) 54 So(noImageChecked, ShouldEqual, false) 55 }) 56 57 Convey("First image checked, it has time", func() { 58 repoLastUpdated := time.Time{} 59 isSigned := false 60 noImageChecked := true 61 manifestFilterData := mTypes.FilterData{ 62 DownloadCount: 10, 63 LastUpdated: time.Date(2000, 1, 1, 1, 1, 1, 1, time.UTC), 64 IsSigned: true, 65 } 66 67 repoLastUpdated, noImageChecked, isSigned = common.CheckImageLastUpdated(repoLastUpdated, isSigned, noImageChecked, 68 manifestFilterData) 69 So(repoLastUpdated, ShouldResemble, manifestFilterData.LastUpdated) 70 So(isSigned, ShouldEqual, manifestFilterData.IsSigned) 71 So(noImageChecked, ShouldEqual, false) 72 }) 73 74 Convey("Not first image checked, current image is newer", func() { 75 repoLastUpdated := time.Date(2000, 1, 1, 1, 1, 1, 1, time.UTC) 76 isSigned := true 77 noImageChecked := false 78 manifestFilterData := mTypes.FilterData{ 79 DownloadCount: 10, 80 LastUpdated: time.Date(2023, 1, 1, 1, 1, 1, 1, time.UTC), 81 IsSigned: false, 82 } 83 84 repoLastUpdated, noImageChecked, isSigned = common.CheckImageLastUpdated(repoLastUpdated, isSigned, 85 noImageChecked, manifestFilterData) 86 So(repoLastUpdated, ShouldResemble, manifestFilterData.LastUpdated) 87 So(isSigned, ShouldEqual, manifestFilterData.IsSigned) 88 So(noImageChecked, ShouldEqual, false) 89 }) 90 91 Convey("Not first image checked, current image is older", func() { 92 repoLastUpdated := time.Date(2024, 1, 1, 1, 1, 1, 1, time.UTC) 93 isSigned := false 94 noImageChecked := false 95 manifestFilterData := mTypes.FilterData{ 96 DownloadCount: 10, 97 LastUpdated: time.Date(2022, 1, 1, 1, 1, 1, 1, time.UTC), 98 IsSigned: true, 99 } 100 101 updatedRepoLastUpdated, noImageChecked, isSigned := common.CheckImageLastUpdated(repoLastUpdated, isSigned, 102 noImageChecked, 103 manifestFilterData) 104 So(updatedRepoLastUpdated, ShouldResemble, repoLastUpdated) 105 So(isSigned, ShouldEqual, false) 106 So(noImageChecked, ShouldEqual, false) 107 }) 108 }) 109 110 Convey("SignatureAlreadyExists", t, func() { 111 res := common.SignatureAlreadyExists( 112 []mTypes.SignatureInfo{{SignatureManifestDigest: "digest"}}, 113 mTypes.SignatureMetadata{SignatureDigest: "digest"}, 114 ) 115 116 So(res, ShouldEqual, true) 117 118 res = common.SignatureAlreadyExists( 119 []mTypes.SignatureInfo{{SignatureManifestDigest: "digest"}}, 120 mTypes.SignatureMetadata{SignatureDigest: "digest2"}, 121 ) 122 123 So(res, ShouldEqual, false) 124 }) 125 }