mirror of
https://github.com/project-zot/zot.git
synced 2024-12-16 21:56:37 -05:00
ce4924f841
Signed-off-by: Andrei Aaron <aaaron@luxoft.com>
129 lines
4 KiB
Go
129 lines
4 KiB
Go
package common_test
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
"time"
|
|
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
|
|
"zotregistry.dev/zot/pkg/meta/common"
|
|
mTypes "zotregistry.dev/zot/pkg/meta/types"
|
|
)
|
|
|
|
var ErrTestError = errors.New("test error")
|
|
|
|
func TestUtils(t *testing.T) {
|
|
Convey("GetPartialImageMeta", t, func() {
|
|
So(func() { common.GetPartialImageMeta(mTypes.ImageMeta{}, mTypes.ImageMeta{}) }, ShouldNotPanic)
|
|
})
|
|
|
|
Convey("MatchesArtifactTypes", t, func() {
|
|
res := common.MatchesArtifactTypes("", nil)
|
|
So(res, ShouldBeTrue)
|
|
|
|
res = common.MatchesArtifactTypes("type", []string{"someOtherType"})
|
|
So(res, ShouldBeFalse)
|
|
})
|
|
|
|
Convey("GetProtoPlatform", t, func() {
|
|
platform := common.GetProtoPlatform(nil)
|
|
So(platform, ShouldBeNil)
|
|
})
|
|
|
|
Convey("ValidateRepoReferenceInput", t, func() {
|
|
err := common.ValidateRepoReferenceInput("", "tag", "digest")
|
|
So(err, ShouldNotBeNil)
|
|
err = common.ValidateRepoReferenceInput("repo", "", "digest")
|
|
So(err, ShouldNotBeNil)
|
|
err = common.ValidateRepoReferenceInput("repo", "tag", "")
|
|
So(err, ShouldNotBeNil)
|
|
})
|
|
|
|
Convey("CheckImageLastUpdated", t, func() {
|
|
Convey("No image checked, it doesn't have time", func() {
|
|
repoLastUpdated := time.Time{}
|
|
isSigned := false
|
|
noImageChecked := true
|
|
manifestFilterData := mTypes.FilterData{
|
|
DownloadCount: 10,
|
|
LastUpdated: time.Time{},
|
|
IsSigned: true,
|
|
}
|
|
|
|
repoLastUpdated, noImageChecked, isSigned = common.CheckImageLastUpdated(repoLastUpdated, isSigned, noImageChecked,
|
|
manifestFilterData)
|
|
So(repoLastUpdated, ShouldResemble, manifestFilterData.LastUpdated)
|
|
So(isSigned, ShouldEqual, manifestFilterData.IsSigned)
|
|
So(noImageChecked, ShouldEqual, false)
|
|
})
|
|
|
|
Convey("First image checked, it has time", func() {
|
|
repoLastUpdated := time.Time{}
|
|
isSigned := false
|
|
noImageChecked := true
|
|
manifestFilterData := mTypes.FilterData{
|
|
DownloadCount: 10,
|
|
LastUpdated: time.Date(2000, 1, 1, 1, 1, 1, 1, time.UTC),
|
|
IsSigned: true,
|
|
}
|
|
|
|
repoLastUpdated, noImageChecked, isSigned = common.CheckImageLastUpdated(repoLastUpdated, isSigned, noImageChecked,
|
|
manifestFilterData)
|
|
So(repoLastUpdated, ShouldResemble, manifestFilterData.LastUpdated)
|
|
So(isSigned, ShouldEqual, manifestFilterData.IsSigned)
|
|
So(noImageChecked, ShouldEqual, false)
|
|
})
|
|
|
|
Convey("Not first image checked, current image is newer", func() {
|
|
repoLastUpdated := time.Date(2000, 1, 1, 1, 1, 1, 1, time.UTC)
|
|
isSigned := true
|
|
noImageChecked := false
|
|
manifestFilterData := mTypes.FilterData{
|
|
DownloadCount: 10,
|
|
LastUpdated: time.Date(2023, 1, 1, 1, 1, 1, 1, time.UTC),
|
|
IsSigned: false,
|
|
}
|
|
|
|
repoLastUpdated, noImageChecked, isSigned = common.CheckImageLastUpdated(repoLastUpdated, isSigned,
|
|
noImageChecked, manifestFilterData)
|
|
So(repoLastUpdated, ShouldResemble, manifestFilterData.LastUpdated)
|
|
So(isSigned, ShouldEqual, manifestFilterData.IsSigned)
|
|
So(noImageChecked, ShouldEqual, false)
|
|
})
|
|
|
|
Convey("Not first image checked, current image is older", func() {
|
|
repoLastUpdated := time.Date(2024, 1, 1, 1, 1, 1, 1, time.UTC)
|
|
isSigned := false
|
|
noImageChecked := false
|
|
manifestFilterData := mTypes.FilterData{
|
|
DownloadCount: 10,
|
|
LastUpdated: time.Date(2022, 1, 1, 1, 1, 1, 1, time.UTC),
|
|
IsSigned: true,
|
|
}
|
|
|
|
updatedRepoLastUpdated, noImageChecked, isSigned := common.CheckImageLastUpdated(repoLastUpdated, isSigned,
|
|
noImageChecked,
|
|
manifestFilterData)
|
|
So(updatedRepoLastUpdated, ShouldResemble, repoLastUpdated)
|
|
So(isSigned, ShouldEqual, false)
|
|
So(noImageChecked, ShouldEqual, false)
|
|
})
|
|
})
|
|
|
|
Convey("SignatureAlreadyExists", t, func() {
|
|
res := common.SignatureAlreadyExists(
|
|
[]mTypes.SignatureInfo{{SignatureManifestDigest: "digest"}},
|
|
mTypes.SignatureMetadata{SignatureDigest: "digest"},
|
|
)
|
|
|
|
So(res, ShouldEqual, true)
|
|
|
|
res = common.SignatureAlreadyExists(
|
|
[]mTypes.SignatureInfo{{SignatureManifestDigest: "digest"}},
|
|
mTypes.SignatureMetadata{SignatureDigest: "digest2"},
|
|
)
|
|
|
|
So(res, ShouldEqual, false)
|
|
})
|
|
}
|