0
Fork 0
mirror of https://github.com/project-zot/zot.git synced 2025-01-13 22:50:38 -05:00

refactor(tests): Migrate some of the older tests to the new image-utils library (#1863)

Signed-off-by: Andrei Aaron <aaaron@luxoft.com>
This commit is contained in:
Andrei Aaron 2023-10-02 21:10:43 +03:00 committed by GitHub
parent 2fd7bfc37a
commit 99e29c0f46
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 99 additions and 287 deletions

View file

@ -35,7 +35,6 @@ import (
zlog "zotregistry.io/zot/pkg/log" zlog "zotregistry.io/zot/pkg/log"
stypes "zotregistry.io/zot/pkg/storage/types" stypes "zotregistry.io/zot/pkg/storage/types"
test "zotregistry.io/zot/pkg/test/common" test "zotregistry.io/zot/pkg/test/common"
"zotregistry.io/zot/pkg/test/deprecated"
. "zotregistry.io/zot/pkg/test/image-utils" . "zotregistry.io/zot/pkg/test/image-utils"
ociutils "zotregistry.io/zot/pkg/test/oci-utils" ociutils "zotregistry.io/zot/pkg/test/oci-utils"
"zotregistry.io/zot/pkg/test/signature" "zotregistry.io/zot/pkg/test/signature"
@ -1324,11 +1323,11 @@ func runDisplayIndexTests(baseURL string) {
actual := strings.TrimSpace(str) actual := strings.TrimSpace(str)
// Actual cli output should be something similar to (order of images may differ): // Actual cli output should be something similar to (order of images may differ):
// REPOSITORY TAG OS/ARCH DIGEST SIGNED SIZE // REPOSITORY TAG OS/ARCH DIGEST SIGNED SIZE
// repo multi-arch * 28665f71 false 1.5kB // repo multi-arch * 4780eafe false 1.5kB
// linux/amd64 02e0ac42 false 644B // linux/amd64 02e0ac42 false 644B
// windows/arm64/v6 5e09b7f9 false 444B // windows/arm64/v6 5e09b7f9 false 444B
So(actual, ShouldContainSubstring, "REPOSITORY TAG OS/ARCH DIGEST SIGNED SIZE") So(actual, ShouldContainSubstring, "REPOSITORY TAG OS/ARCH DIGEST SIGNED SIZE")
So(actual, ShouldContainSubstring, "repo multi-arch * 28665f71 false 1.5kB ") So(actual, ShouldContainSubstring, "repo multi-arch * 4780eafe false 1.5kB ")
So(actual, ShouldContainSubstring, "linux/amd64 02e0ac42 false 644B ") So(actual, ShouldContainSubstring, "linux/amd64 02e0ac42 false 644B ")
So(actual, ShouldContainSubstring, "windows/arm64/v6 5e09b7f9 false 506B") So(actual, ShouldContainSubstring, "windows/arm64/v6 5e09b7f9 false 506B")
}) })
@ -1346,14 +1345,14 @@ func runDisplayIndexTests(baseURL string) {
actual := strings.TrimSpace(str) actual := strings.TrimSpace(str)
// Actual cli output should be something similar to (order of images may differ): // Actual cli output should be something similar to (order of images may differ):
// REPOSITORY TAG OS/ARCH DIGEST CONFIG SIGNED LAYERS SIZE // REPOSITORY TAG OS/ARCH DIGEST CONFIG SIGNED LAYERS SIZE
// repo multi-arch * 28665f71 false 1.5kB // repo multi-arch * 4780eafe false 1.5kB
// linux/amd64 02e0ac42 58cc9abe false 644B // linux/amd64 02e0ac42 58cc9abe false 644B
// cbb5b121 4B // cbb5b121 4B
// a00291e8 4B // a00291e8 4B
// windows/arm64/v6 5e09b7f9 5132a1cd false 506B // windows/arm64/v6 5e09b7f9 5132a1cd false 506B
// 7d08ce29 4B // 7d08ce29 4B
So(actual, ShouldContainSubstring, "REPOSITORY TAG OS/ARCH DIGEST CONFIG SIGNED LAYERS SIZE") So(actual, ShouldContainSubstring, "REPOSITORY TAG OS/ARCH DIGEST CONFIG SIGNED LAYERS SIZE")
So(actual, ShouldContainSubstring, "repo multi-arch * 28665f71 false 1.5kB") So(actual, ShouldContainSubstring, "repo multi-arch * 4780eafe false 1.5kB")
So(actual, ShouldContainSubstring, "linux/amd64 02e0ac42 58cc9abe false 644B") So(actual, ShouldContainSubstring, "linux/amd64 02e0ac42 58cc9abe false 644B")
So(actual, ShouldContainSubstring, "cbb5b121 4B") So(actual, ShouldContainSubstring, "cbb5b121 4B")
So(actual, ShouldContainSubstring, "a00291e8 4B") So(actual, ShouldContainSubstring, "a00291e8 4B")
@ -2012,7 +2011,7 @@ func uploadTestMultiarch(baseURL string) {
// ------- Upload The multiarch image // ------- Upload The multiarch image
multiarch := deprecated.GetMultiarchImageForImages([]Image{image1, image2}) //nolint:staticcheck multiarch := CreateMultiarchWith().Images([]Image{image1, image2}).Build()
err := UploadMultiarchImage(multiarch, baseURL, "repo", "multi-arch") err := UploadMultiarchImage(multiarch, baseURL, "repo", "multi-arch")
So(err, ShouldBeNil) So(err, ShouldBeNil)

View file

@ -23,7 +23,6 @@ import (
"zotregistry.io/zot/pkg/api/constants" "zotregistry.io/zot/pkg/api/constants"
"zotregistry.io/zot/pkg/compliance" "zotregistry.io/zot/pkg/compliance"
test "zotregistry.io/zot/pkg/test/common" test "zotregistry.io/zot/pkg/test/common"
"zotregistry.io/zot/pkg/test/deprecated"
"zotregistry.io/zot/pkg/test/image-utils" "zotregistry.io/zot/pkg/test/image-utils"
) )
@ -486,46 +485,17 @@ func CheckWorkflows(t *testing.T, config *compliance.Config) {
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(resp.StatusCode(), ShouldEqual, http.StatusNotFound) So(resp.StatusCode(), ShouldEqual, http.StatusNotFound)
cfg, layers, manifest, err := deprecated.GetImageComponents(1) //nolint:staticcheck img := image.CreateDefaultImage()
So(err, ShouldBeNil) digest = img.ManifestDescriptor.Digest
repoName := "repo7" repoName := "repo7"
err = image.UploadImage( err = image.UploadImage(img, baseURL, repoName, "test:1.0")
image.Image{
Config: cfg,
Layers: layers,
Manifest: manifest,
}, baseURL, repoName, "test:1.0")
So(err, ShouldBeNil) So(err, ShouldBeNil)
content, err = json.Marshal(manifest) err = image.UploadImage(img, baseURL, repoName, "test:1.0.1")
So(err, ShouldBeNil)
digest = godigest.FromBytes(content)
So(digest, ShouldNotBeNil)
err = image.UploadImage(
image.Image{
Config: cfg,
Layers: layers,
Manifest: manifest,
}, baseURL, repoName, "test:1.0.1")
So(err, ShouldBeNil) So(err, ShouldBeNil)
content = []byte("this is a blob5") err = image.UploadImage(img, baseURL, repoName, "test:2.0")
digest = godigest.FromBytes(content)
So(digest, ShouldNotBeNil)
content, err = json.Marshal(manifest)
So(err, ShouldBeNil)
digest = godigest.FromBytes(content)
So(digest, ShouldNotBeNil)
err = image.UploadImage(
image.Image{
Config: cfg,
Layers: layers,
Manifest: manifest,
}, baseURL, repoName, "test:2.0")
So(err, ShouldBeNil) So(err, ShouldBeNil)
// check/get by tag // check/get by tag
@ -593,23 +563,13 @@ func CheckWorkflows(t *testing.T, config *compliance.Config) {
Convey("Pagination", func() { Convey("Pagination", func() {
_, _ = Print("\nPagination") _, _ = Print("\nPagination")
img := image.CreateDefaultImage()
for index := 0; index <= 4; index++ { for index := 0; index <= 4; index++ {
cfg, layers, manifest, err := deprecated.GetImageComponents(1) //nolint:staticcheck
So(err, ShouldBeNil)
repoName := "page0" repoName := "page0"
err = image.UploadImage( err := image.UploadImage(
image.Image{ img, baseURL, repoName, fmt.Sprintf("test:%d.0", index))
Config: cfg,
Layers: layers,
Manifest: manifest,
}, baseURL, repoName, fmt.Sprintf("test:%d.0", index))
So(err, ShouldBeNil) So(err, ShouldBeNil)
content, err := json.Marshal(manifest)
So(err, ShouldBeNil)
digest := godigest.FromBytes(content)
So(digest, ShouldNotBeNil)
} }
resp, err := resty.R().Get(baseURL + "/v2/page0/tags/list") resp, err := resty.R().Get(baseURL + "/v2/page0/tags/list")
@ -734,62 +694,23 @@ func CheckWorkflows(t *testing.T, config *compliance.Config) {
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(resp.StatusCode(), ShouldEqual, http.StatusNotFound) So(resp.StatusCode(), ShouldEqual, http.StatusNotFound)
cfg, layers, manifest, err := deprecated.GetImageComponents(1) //nolint:staticcheck img := image.CreateDefaultImage()
digest = img.ManifestDescriptor.Digest
// subpath firsttest
err = image.UploadImage(img, baseURL, "firsttest/first", "test:1.0")
So(err, ShouldBeNil)
// subpath secondtest
err = image.UploadImage(img, baseURL, "secondtest/second", "test:1.0")
So(err, ShouldBeNil) So(err, ShouldBeNil)
// subpath firsttest // subpath firsttest
err = image.UploadImage( err = image.UploadImage(img, baseURL, "firsttest/first", "test:2.0")
image.Image{
Config: cfg,
Layers: layers,
Manifest: manifest,
}, baseURL, "firsttest/first", "test:1.0")
So(err, ShouldBeNil) So(err, ShouldBeNil)
content, err = json.Marshal(manifest)
So(err, ShouldBeNil)
digest = godigest.FromBytes(content)
So(digest, ShouldNotBeNil)
// subpath secondtest // subpath secondtest
err = image.UploadImage( err = image.UploadImage(img, baseURL, "secondtest/second", "test:2.0")
image.Image{
Config: cfg,
Layers: layers,
Manifest: manifest,
}, baseURL, "secondtest/second", "test:1.0")
So(err, ShouldBeNil)
content, err = json.Marshal(manifest)
So(err, ShouldBeNil)
digest = godigest.FromBytes(content)
So(digest, ShouldNotBeNil)
content = []byte("this is a blob5")
digest = godigest.FromBytes(content)
So(digest, ShouldNotBeNil)
// subpath firsttest
err = image.UploadImage(
image.Image{
Config: cfg,
Layers: layers,
Manifest: manifest,
}, baseURL, "firsttest/first", "test:2.0")
So(err, ShouldBeNil)
content, err = json.Marshal(manifest)
So(err, ShouldBeNil)
digest = godigest.FromBytes(content)
So(digest, ShouldNotBeNil)
// subpath secondtest
err = image.UploadImage(
image.Image{
Config: cfg,
Layers: layers,
Manifest: manifest,
}, baseURL, "secondtest/second", "test:2.0")
So(err, ShouldBeNil) So(err, ShouldBeNil)
// check/get by tag // check/get by tag

View file

@ -17,7 +17,6 @@ import (
"zotregistry.io/zot/pkg/api/config" "zotregistry.io/zot/pkg/api/config"
extconf "zotregistry.io/zot/pkg/extensions/config" extconf "zotregistry.io/zot/pkg/extensions/config"
test "zotregistry.io/zot/pkg/test/common" test "zotregistry.io/zot/pkg/test/common"
"zotregistry.io/zot/pkg/test/deprecated"
. "zotregistry.io/zot/pkg/test/image-utils" . "zotregistry.io/zot/pkg/test/image-utils"
) )
@ -59,19 +58,13 @@ func TestUIExtension(t *testing.T) {
So(found, ShouldBeTrue) So(found, ShouldBeTrue)
So(err, ShouldBeNil) So(err, ShouldBeNil)
cfg, layers, manifest, err := deprecated.GetImageComponents(1) //nolint:staticcheck image := CreateRandomImage()
So(err, ShouldBeNil)
repoName := "test-repo" repoName := "test-repo"
tagName := "test-tag" tagName := "test-tag"
// Upload a test image // Upload a test image
err = UploadImage( err = UploadImage(image, baseURL, repoName, tagName)
Image{
Config: cfg,
Layers: layers,
Manifest: manifest,
}, baseURL, repoName, tagName)
So(err, ShouldBeNil) So(err, ShouldBeNil)
resp, err := resty.R().Get(baseURL + "/home") resp, err := resty.R().Get(baseURL + "/home")

View file

@ -3,7 +3,6 @@
package imagetrust_test package imagetrust_test
import ( import (
"encoding/json"
"os" "os"
"path" "path"
"testing" "testing"
@ -11,7 +10,7 @@ import (
. "github.com/smartystreets/goconvey/convey" . "github.com/smartystreets/goconvey/convey"
"zotregistry.io/zot/pkg/extensions/imagetrust" "zotregistry.io/zot/pkg/extensions/imagetrust"
"zotregistry.io/zot/pkg/test/deprecated" . "zotregistry.io/zot/pkg/test/image-utils"
) )
func TestImageTrust(t *testing.T) { func TestImageTrust(t *testing.T) {
@ -28,13 +27,9 @@ func TestImageTrust(t *testing.T) {
repo := "repo" repo := "repo"
image, err := deprecated.GetRandomImage() //nolint:staticcheck image := CreateRandomImage() //nolint:staticcheck
So(err, ShouldBeNil) manifestContent := image.ManifestDescriptor.Data
manifestDigest := image.ManifestDescriptor.Digest
manifestContent, err := json.Marshal(image.Manifest)
So(err, ShouldBeNil)
manifestDigest := image.Digest()
localImgTrustStore, err := imagetrust.NewLocalImageTrustStore(rootDir) localImgTrustStore, err := imagetrust.NewLocalImageTrustStore(rootDir)
So(err, ShouldBeNil) So(err, ShouldBeNil)

View file

@ -38,7 +38,6 @@ import (
extconf "zotregistry.io/zot/pkg/extensions/config" extconf "zotregistry.io/zot/pkg/extensions/config"
"zotregistry.io/zot/pkg/extensions/imagetrust" "zotregistry.io/zot/pkg/extensions/imagetrust"
test "zotregistry.io/zot/pkg/test/common" test "zotregistry.io/zot/pkg/test/common"
"zotregistry.io/zot/pkg/test/deprecated"
. "zotregistry.io/zot/pkg/test/image-utils" . "zotregistry.io/zot/pkg/test/image-utils"
"zotregistry.io/zot/pkg/test/mocks" "zotregistry.io/zot/pkg/test/mocks"
"zotregistry.io/zot/pkg/test/signature" "zotregistry.io/zot/pkg/test/signature"
@ -156,50 +155,40 @@ func TestVerifySignatures(t *testing.T) {
}) })
Convey("empty manifest digest", t, func() { Convey("empty manifest digest", t, func() {
image, err := deprecated.GetRandomImage() //nolint:staticcheck image := CreateRandomImage()
So(err, ShouldBeNil) manifestContent := image.ManifestDescriptor.Data
manifestContent, err := json.Marshal(image.Manifest)
So(err, ShouldBeNil)
imgTrustStore := &imagetrust.ImageTrustStore{} imgTrustStore := &imagetrust.ImageTrustStore{}
_, _, _, err = imgTrustStore.VerifySignature("", []byte(""), "", "", manifestContent, "repo") _, _, _, err := imgTrustStore.VerifySignature("", []byte(""), "", "", manifestContent, "repo")
So(err, ShouldNotBeNil) So(err, ShouldNotBeNil)
So(err, ShouldEqual, zerr.ErrBadManifestDigest) So(err, ShouldEqual, zerr.ErrBadManifestDigest)
}) })
Convey("wrong signature type", t, func() { Convey("wrong signature type", t, func() {
image, err := deprecated.GetRandomImage() //nolint:staticcheck image := CreateRandomImage()
So(err, ShouldBeNil) manifestContent := image.ManifestDescriptor.Data
manifestDigest := image.ManifestDescriptor.Digest
manifestContent, err := json.Marshal(image.Manifest)
So(err, ShouldBeNil)
manifestDigest := image.Digest()
imgTrustStore := &imagetrust.ImageTrustStore{} imgTrustStore := &imagetrust.ImageTrustStore{}
_, _, _, err = imgTrustStore.VerifySignature("wrongType", []byte(""), "", manifestDigest, manifestContent, "repo") _, _, _, err := imgTrustStore.VerifySignature("wrongType", []byte(""), "", manifestDigest, manifestContent, "repo")
So(err, ShouldNotBeNil) So(err, ShouldNotBeNil)
So(err, ShouldEqual, zerr.ErrInvalidSignatureType) So(err, ShouldEqual, zerr.ErrInvalidSignatureType)
}) })
Convey("verify cosign signature", t, func() { Convey("verify cosign signature", t, func() {
repo := "repo" //nolint:goconst repo := "repo" //nolint:goconst
tag := "test" //nolint:goconst tag := "test" //nolint:goconst
image, err := deprecated.GetRandomImage() //nolint:staticcheck
So(err, ShouldBeNil)
manifestContent, err := json.Marshal(image.Manifest) image := CreateRandomImage()
So(err, ShouldBeNil) manifestContent := image.ManifestDescriptor.Data
manifestDigest := image.ManifestDescriptor.Digest
manifestDigest := image.Digest()
Convey("cosignDir is not set", func() { Convey("cosignDir is not set", func() {
imgTrustStore := &imagetrust.ImageTrustStore{ imgTrustStore := &imagetrust.ImageTrustStore{
CosignStorage: &imagetrust.PublicKeyLocalStorage{}, CosignStorage: &imagetrust.PublicKeyLocalStorage{},
} }
_, _, _, err = imgTrustStore.VerifySignature("cosign", []byte(""), "", manifestDigest, manifestContent, repo) _, _, _, err := imgTrustStore.VerifySignature("cosign", []byte(""), "", manifestDigest, manifestContent, repo)
So(err, ShouldNotBeNil) So(err, ShouldNotBeNil)
So(err, ShouldEqual, zerr.ErrSignConfigDirNotSet) So(err, ShouldEqual, zerr.ErrSignConfigDirNotSet)
}) })
@ -336,22 +325,18 @@ func TestVerifySignatures(t *testing.T) {
}) })
Convey("verify notation signature", t, func() { Convey("verify notation signature", t, func() {
repo := "repo" //nolint:goconst repo := "repo" //nolint:goconst
tag := "test" //nolint:goconst tag := "test" //nolint:goconst
image, err := deprecated.GetRandomImage() //nolint:staticcheck image := CreateRandomImage()
So(err, ShouldBeNil) manifestContent := image.ManifestDescriptor.Data
manifestDigest := image.ManifestDescriptor.Digest
manifestContent, err := json.Marshal(image.Manifest)
So(err, ShouldBeNil)
manifestDigest := image.Digest()
Convey("notationDir is not set", func() { Convey("notationDir is not set", func() {
imgTrustStore := &imagetrust.ImageTrustStore{ imgTrustStore := &imagetrust.ImageTrustStore{
NotationStorage: &imagetrust.CertificateLocalStorage{}, NotationStorage: &imagetrust.CertificateLocalStorage{},
} }
_, _, _, err = imgTrustStore.VerifySignature("notation", []byte("signature"), "", manifestDigest, _, _, _, err := imgTrustStore.VerifySignature("notation", []byte("signature"), "", manifestDigest,
manifestContent, repo) manifestContent, repo)
So(err, ShouldNotBeNil) So(err, ShouldNotBeNil)
So(err, ShouldEqual, zerr.ErrSignConfigDirNotSet) So(err, ShouldEqual, zerr.ErrSignConfigDirNotSet)
@ -920,10 +905,8 @@ func TestAWSTrustStore(t *testing.T) {
repo := "repo" repo := "repo"
image := CreateRandomImage() image := CreateRandomImage()
manifestContent, err := json.Marshal(image.Manifest) manifestContent := image.ManifestDescriptor.Data
So(err, ShouldBeNil) manifestDigest := image.ManifestDescriptor.Digest
manifestDigest := image.Digest()
secretsManagerMock := mocks.SecretsManagerMock{ secretsManagerMock := mocks.SecretsManagerMock{
CreateSecretFn: func(ctx context.Context, params *secretsmanager.CreateSecretInput, CreateSecretFn: func(ctx context.Context, params *secretsmanager.CreateSecretInput,
@ -955,10 +938,8 @@ func TestAWSTrustStore(t *testing.T) {
repo := "repo" repo := "repo"
image := CreateRandomImage() image := CreateRandomImage()
manifestContent, err := json.Marshal(image.Manifest) manifestContent := image.ManifestDescriptor.Data
So(err, ShouldBeNil) manifestDigest := image.ManifestDescriptor.Digest
manifestDigest := image.Digest()
secretsManagerMock := mocks.SecretsManagerMock{ secretsManagerMock := mocks.SecretsManagerMock{
CreateSecretFn: func(ctx context.Context, params *secretsmanager.CreateSecretInput, CreateSecretFn: func(ctx context.Context, params *secretsmanager.CreateSecretInput,
@ -1183,13 +1164,9 @@ func RunVerificationTests(t *testing.T, dbDriverParams map[string]interface{}) {
tag := "test" //nolint:goconst tag := "test" //nolint:goconst
Convey("verify cosign signature is trusted", func() { Convey("verify cosign signature is trusted", func() {
image, err := deprecated.GetRandomImage() //nolint:staticcheck image := CreateRandomImage()
So(err, ShouldBeNil) manifestContent := image.ManifestDescriptor.Data
manifestDigest := image.ManifestDescriptor.Digest
manifestContent, err := json.Marshal(image.Manifest)
So(err, ShouldBeNil)
manifestDigest := image.Digest()
err = UploadImage(image, baseURL, repo, tag) err = UploadImage(image, baseURL, repo, tag)
So(err, ShouldBeNil) So(err, ShouldBeNil)
@ -1267,13 +1244,9 @@ func RunVerificationTests(t *testing.T, dbDriverParams map[string]interface{}) {
}) })
Convey("verify notation signature is trusted", func() { Convey("verify notation signature is trusted", func() {
image, err := deprecated.GetRandomImage() //nolint:staticcheck image := CreateRandomImage()
So(err, ShouldBeNil) manifestContent := image.ManifestDescriptor.Data
manifestDigest := image.ManifestDescriptor.Digest
manifestContent, err := json.Marshal(image.Manifest)
So(err, ShouldBeNil)
manifestDigest := image.Digest()
err = UploadImage(image, baseURL, repo, tag) err = UploadImage(image, baseURL, repo, tag)
So(err, ShouldBeNil) So(err, ShouldBeNil)

View file

@ -48,7 +48,6 @@ import (
mTypes "zotregistry.io/zot/pkg/meta/types" mTypes "zotregistry.io/zot/pkg/meta/types"
storageConstants "zotregistry.io/zot/pkg/storage/constants" storageConstants "zotregistry.io/zot/pkg/storage/constants"
test "zotregistry.io/zot/pkg/test/common" test "zotregistry.io/zot/pkg/test/common"
"zotregistry.io/zot/pkg/test/deprecated"
. "zotregistry.io/zot/pkg/test/image-utils" . "zotregistry.io/zot/pkg/test/image-utils"
"zotregistry.io/zot/pkg/test/mocks" "zotregistry.io/zot/pkg/test/mocks"
ociutils "zotregistry.io/zot/pkg/test/oci-utils" ociutils "zotregistry.io/zot/pkg/test/oci-utils"
@ -737,18 +736,11 @@ func TestOnDemand(t *testing.T) {
cm.StartAndWait(conf.HTTP.Port) cm.StartAndWait(conf.HTTP.Port)
defer cm.StopServer() defer cm.StopServer()
imageConfig, layers, manifest, err := deprecated.GetRandomImageComponents(10) //nolint:staticcheck image := CreateRandomImage()
So(err, ShouldBeNil) manifestBlob := image.ManifestDescriptor.Data
manifestDigest := image.ManifestDescriptor.Digest
manifestBlob, err := json.Marshal(manifest) err := UploadImage(image, srcBaseURL, "remote-repo", "test")
So(err, ShouldBeNil)
manifestDigest := godigest.FromBytes(manifestBlob)
err = UploadImage(
Image{Config: imageConfig, Layers: layers, Manifest: manifest},
srcBaseURL, "remote-repo", "test",
)
So(err, ShouldBeNil) So(err, ShouldBeNil)
// sign using cosign // sign using cosign
@ -1091,31 +1083,22 @@ func TestSyncWithNonDistributableBlob(t *testing.T) {
dcm := test.NewControllerManager(dctlr) dcm := test.NewControllerManager(dctlr)
imageConfig, layers, manifest, err := deprecated.GetRandomImageComponents(10) //nolint:staticcheck nonDistributableLayerData := make([]byte, 10)
So(err, ShouldBeNil) nonDistributableDigest := godigest.FromBytes(nonDistributableLayerData)
nonDistributableLayer := Layer{
nonDistributableLayer := make([]byte, 10) Blob: nonDistributableLayerData,
nonDistributableDigest := godigest.FromBytes(nonDistributableLayer)
nonDistributableLayerDesc := ispec.Descriptor{
MediaType: ispec.MediaTypeImageLayerNonDistributableGzip, //nolint:staticcheck
Digest: nonDistributableDigest, Digest: nonDistributableDigest,
Size: int64(len(nonDistributableLayer)), MediaType: ispec.MediaTypeImageLayerNonDistributableGzip, //nolint:staticcheck
URLs: []string{
path.Join(srcBaseURL, "v2", repoName, "blobs", nonDistributableDigest.String()),
},
} }
manifest.Layers = append(manifest.Layers, nonDistributableLayerDesc) layers := append(GetDefaultLayers(), nonDistributableLayer)
image := CreateImageWith().Layers(layers).DefaultConfig().Build()
err = UploadImage(
Image{Config: imageConfig, Layers: layers, Manifest: manifest},
srcBaseURL, repoName, tag,
)
err := UploadImage(image, srcBaseURL, repoName, tag)
So(err, ShouldBeNil) So(err, ShouldBeNil)
err = os.WriteFile(path.Join(srcDir, repoName, "blobs/sha256", nonDistributableDigest.Encoded()), err = os.WriteFile(path.Join(srcDir, repoName, "blobs/sha256", nonDistributableDigest.Encoded()),
nonDistributableLayer, 0o600) nonDistributableLayerData, 0o600)
So(err, ShouldBeNil) So(err, ShouldBeNil)
dcm.StartAndWait(dctlr.Config.HTTP.Port) dcm.StartAndWait(dctlr.Config.HTTP.Port)
@ -1274,47 +1257,20 @@ func TestDockerImagesAreSkipped(t *testing.T) {
Convey("skipping already synced multiarch docker image", func() { Convey("skipping already synced multiarch docker image", func() {
// create an image index on upstream // create an image index on upstream
var index ispec.Index multiarchImage := CreateMultiarchWith().Images(
index.SchemaVersion = 2 []Image{
index.MediaType = ispec.MediaTypeImageIndex CreateRandomImage(),
CreateRandomImage(),
CreateRandomImage(),
CreateRandomImage(),
},
).Build()
// upload multiple manifests // upload the previously defined images
for i := 0; i < 4; i++ { err := UploadMultiarchImage(multiarchImage, srcBaseURL, indexRepoName, "latest")
config, layers, manifest, err := deprecated.GetImageComponents(1000 + i) //nolint:staticcheck
So(err, ShouldBeNil)
manifestContent, err := json.Marshal(manifest)
So(err, ShouldBeNil)
manifestDigest := godigest.FromBytes(manifestContent)
err = UploadImage(
Image{
Manifest: manifest,
Config: config,
Layers: layers,
}, srcBaseURL, "index", manifestDigest.String())
So(err, ShouldBeNil)
index.Manifests = append(index.Manifests, ispec.Descriptor{
Digest: manifestDigest,
MediaType: ispec.MediaTypeImageManifest,
Size: int64(len(manifestContent)),
})
}
content, err := json.Marshal(index)
So(err, ShouldBeNil) So(err, ShouldBeNil)
digest := godigest.FromBytes(content)
So(digest, ShouldNotBeNil)
resp, err := resty.R().SetHeader("Content-Type", ispec.MediaTypeImageIndex). resp, err := resty.R().SetHeader("Content-Type", ispec.MediaTypeImageIndex).
SetBody(content).Put(srcBaseURL + "/v2/index/manifests/latest")
So(err, ShouldBeNil)
So(resp.StatusCode(), ShouldEqual, http.StatusCreated)
resp, err = resty.R().SetHeader("Content-Type", ispec.MediaTypeImageIndex).
Get(srcBaseURL + "/v2/index/manifests/latest") Get(srcBaseURL + "/v2/index/manifests/latest")
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(resp.StatusCode(), ShouldEqual, http.StatusOK) So(resp.StatusCode(), ShouldEqual, http.StatusOK)
@ -4513,10 +4469,9 @@ func TestSyncedSignaturesMetaDB(t *testing.T) {
defer scm.StopServer() defer scm.StopServer()
// Push an image // Push an image
signedImage, err := deprecated.GetRandomImage() //nolint:staticcheck signedImage := CreateRandomImage()
So(err, ShouldBeNil)
err = UploadImage(signedImage, srcBaseURL, repoName, tag) err := UploadImage(signedImage, srcBaseURL, repoName, tag)
So(err, ShouldBeNil) So(err, ShouldBeNil)
err = signature.SignImageUsingNotary(repoName+":"+tag, srcPort) err = signature.SignImageUsingNotary(repoName+":"+tag, srcPort)
@ -6197,45 +6152,20 @@ func TestSyncImageIndex(t *testing.T) {
Registries: []syncconf.RegistryConfig{syncRegistryConfig}, Registries: []syncconf.RegistryConfig{syncRegistryConfig},
} }
// create an image index on upstream multiarchImage := CreateMultiarchWith().Images(
var index ispec.Index []Image{
index.SchemaVersion = 2 CreateRandomImage(),
index.MediaType = ispec.MediaTypeImageIndex CreateRandomImage(),
CreateRandomImage(),
CreateRandomImage(),
},
).Build()
// upload multiple manifests // upload the previously defined images
for i := 0; i < 4; i++ { err := UploadMultiarchImage(multiarchImage, srcBaseURL, "index", "latest")
config, layers, manifest, err := deprecated.GetImageComponents(1000 + i) //nolint:staticcheck
So(err, ShouldBeNil)
manifestContent, err := json.Marshal(manifest)
So(err, ShouldBeNil)
manifestDigest := godigest.FromBytes(manifestContent)
err = UploadImage(
Image{
Manifest: manifest,
Config: config,
Layers: layers,
}, srcBaseURL, "index", manifestDigest.String())
So(err, ShouldBeNil)
index.Manifests = append(index.Manifests, ispec.Descriptor{
Digest: manifestDigest,
MediaType: ispec.MediaTypeImageManifest,
Size: int64(len(manifestContent)),
})
}
content, err := json.Marshal(index)
So(err, ShouldBeNil) So(err, ShouldBeNil)
digest := godigest.FromBytes(content)
So(digest, ShouldNotBeNil)
resp, err := resty.R().SetHeader("Content-Type", ispec.MediaTypeImageIndex). resp, err := resty.R().SetHeader("Content-Type", ispec.MediaTypeImageIndex).
SetBody(content).Put(srcBaseURL + "/v2/index/manifests/latest")
So(err, ShouldBeNil)
So(resp.StatusCode(), ShouldEqual, http.StatusCreated)
resp, err = resty.R().SetHeader("Content-Type", ispec.MediaTypeImageIndex).
Get(srcBaseURL + "/v2/index/manifests/latest") Get(srcBaseURL + "/v2/index/manifests/latest")
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(resp.StatusCode(), ShouldEqual, http.StatusOK) So(resp.StatusCode(), ShouldEqual, http.StatusOK)
@ -6265,7 +6195,7 @@ func TestSyncImageIndex(t *testing.T) {
err := json.Unmarshal(resp.Body(), &syncedIndex) err := json.Unmarshal(resp.Body(), &syncedIndex)
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(reflect.DeepEqual(syncedIndex, index), ShouldEqual, true) So(reflect.DeepEqual(syncedIndex, multiarchImage.Index), ShouldEqual, true)
waitSyncFinish(dctlr.Config.Log.Output) waitSyncFinish(dctlr.Config.Log.Output)
}) })
@ -6292,7 +6222,7 @@ func TestSyncImageIndex(t *testing.T) {
err := json.Unmarshal(resp.Body(), &syncedIndex) err := json.Unmarshal(resp.Body(), &syncedIndex)
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(reflect.DeepEqual(syncedIndex, index), ShouldEqual, true) So(reflect.DeepEqual(syncedIndex, multiarchImage.Index), ShouldEqual, true)
}) })
}) })
} }

View file

@ -112,6 +112,7 @@ func (mb *BaseMultiarchBuilder) Build() MultiarchImage {
for i := range manifests { for i := range manifests {
manifests[i] = ispec.Descriptor{ manifests[i] = ispec.Descriptor{
Digest: mb.images[i].ManifestDescriptor.Digest, Digest: mb.images[i].ManifestDescriptor.Digest,
Size: mb.images[i].ManifestDescriptor.Size,
MediaType: ispec.MediaTypeImageManifest, MediaType: ispec.MediaTypeImageManifest,
} }
} }