test(refactor): change upload image function signature (#1655)

Signed-off-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com>
This commit is contained in:
LaurentiuNiculae
2023-07-28 17:53:46 +03:00
committed by GitHub
parent 635d71853e
commit a5c92bcac3
26 changed files with 602 additions and 1255 deletions
+37 -303
View File
@@ -278,7 +278,7 @@ func NewControllerManager(controller Controller) ControllerManager {
return cm
}
func WriteImageToFileSystem(image Image, repoName string, storeController storage.StoreController) error {
func WriteImageToFileSystem(image Image, repoName, ref string, storeController storage.StoreController) error {
store := storeController.GetImageStore(repoName)
err := store.InitRepo(repoName)
@@ -314,7 +314,7 @@ func WriteImageToFileSystem(image Image, repoName string, storeController storag
return err
}
_, _, err = store.PutImageManifest(repoName, image.Reference, ispec.MediaTypeImageManifest, manifestBlob)
_, _, err = store.PutImageManifest(repoName, ref, ispec.MediaTypeImageManifest, manifestBlob)
if err != nil {
return err
}
@@ -333,7 +333,7 @@ func WriteMultiArchImageToFileSystem(multiarchImage MultiarchImage, repoName, re
}
for _, image := range multiarchImage.Images {
err := WriteImageToFileSystem(image, repoName, storeController)
err := WriteImageToFileSystem(image, repoName, image.DigestStr(), storeController)
if err != nil {
return err
}
@@ -503,6 +503,7 @@ func GetOciLayoutDigests(imagePath string) (godigest.Digest, godigest.Digest, go
return manifestDigest, configDigest, layerDigest
}
// Deprecated: Should use the new functions starting with "Create".
func GetImageComponents(layerSize int) (ispec.Image, [][]byte, ispec.Manifest, error) {
config := ispec.Image{
Platform: ispec.Platform{
@@ -551,6 +552,7 @@ func GetImageComponents(layerSize int) (ispec.Image, [][]byte, ispec.Manifest, e
return config, layers, manifest, nil
}
// Deprecated: Should use the new functions starting with "Create".
func GetRandomImageComponents(layerSize int) (ispec.Image, [][]byte, ispec.Manifest, error) {
config := ispec.Image{
Platform: ispec.Platform{
@@ -606,7 +608,8 @@ const (
Vulnerability3ID = "CVE-2023-2975"
)
func GetVulnImageWithConfig(ref string, config ispec.Image) (Image, error) {
// Deprecated: Should use the new functions starting with "Create".
func GetVulnImageWithConfig(config ispec.Image) (Image, error) {
vulnerableLayer, err := GetLayerWithVulnerability()
if err != nil {
return Image{}, err
@@ -632,8 +635,6 @@ func GetVulnImageWithConfig(ref string, config ispec.Image) (Image, error) {
return Image{}, err
}
img.Reference = ref
return img, err
}
@@ -693,7 +694,8 @@ func GetRandomLayer(size int) []byte {
return layer
}
func GetRandomImage(reference string) (Image, error) {
// Deprecated: Should use the new functions starting with "Create".
func GetRandomImage() (Image, error) {
const layerSize = 20
config, layers, manifest, err := GetRandomImageComponents(layerSize)
@@ -701,23 +703,14 @@ func GetRandomImage(reference string) (Image, error) {
return Image{}, err
}
if reference == "" {
blob, err := json.Marshal(manifest)
if err != nil {
return Image{}, err
}
reference = godigest.FromBytes(blob).String()
}
return Image{
Manifest: manifest,
Layers: layers,
Config: config,
Reference: reference,
Manifest: manifest,
Layers: layers,
Config: config,
}, nil
}
// Deprecated: Should use the new functions starting with "Create".
func GetImageComponentsWithConfig(conf ispec.Image) (ispec.Image, [][]byte, ispec.Manifest, error) {
configBlob, err := json.Marshal(conf)
if err = inject.Error(err); err != nil {
@@ -762,25 +755,21 @@ func GetImageComponentsWithConfig(conf ispec.Image) (ispec.Image, [][]byte, ispe
return conf, layers, manifest, nil
}
// Deprecated: Should use the new functions starting with "Create".
func GetImageWithConfig(conf ispec.Image) (Image, error) {
config, layers, manifest, err := GetImageComponentsWithConfig(conf)
if err != nil {
return Image{}, err
}
blob, err := json.Marshal(manifest)
if err != nil {
return Image{}, err
}
return Image{
Manifest: manifest,
Config: config,
Layers: layers,
Reference: godigest.FromBytes(blob).String(),
Manifest: manifest,
Config: config,
Layers: layers,
}, nil
}
// Deprecated: Should use the new functions starting with "Create".
func GetImageWithComponents(config ispec.Image, layers [][]byte) (Image, error) {
configBlob, err := json.Marshal(config)
if err != nil {
@@ -812,16 +801,10 @@ func GetImageWithComponents(config ispec.Image, layers [][]byte) (Image, error)
Layers: manifestLayers,
}
manifestBlob, err := json.Marshal(manifest)
if err != nil {
return Image{}, err
}
return Image{
Manifest: manifest,
Config: config,
Layers: layers,
Reference: godigest.FromBytes(manifestBlob).String(),
Manifest: manifest,
Config: config,
Layers: layers,
}, nil
}
@@ -840,6 +823,7 @@ func GetCosignSignatureTagForDigest(manifestDigest godigest.Digest) string {
return manifestDigest.Algorithm().String() + "-" + manifestDigest.Encoded() + ".sig"
}
// Deprecated: Should use the new functions starting with "Create".
func GetImageWithSubject(subjectDigest godigest.Digest, mediaType string) (Image, error) {
num := 100
@@ -853,133 +837,14 @@ func GetImageWithSubject(subjectDigest godigest.Digest, mediaType string) (Image
MediaType: mediaType,
}
blob, err := json.Marshal(manifest)
if err != nil {
return Image{}, err
}
return Image{
Manifest: manifest,
Config: conf,
Layers: layers,
Reference: godigest.FromBytes(blob).String(),
Manifest: manifest,
Config: conf,
Layers: layers,
}, nil
}
func UploadImage(img Image, baseURL, repo string) error {
for _, blob := range img.Layers {
resp, err := resty.R().Post(baseURL + "/v2/" + repo + "/blobs/uploads/")
if err != nil {
return err
}
if resp.StatusCode() != http.StatusAccepted {
return ErrPostBlob
}
loc := resp.Header().Get("Location")
digest := godigest.FromBytes(blob).String()
resp, err = resty.R().
SetHeader("Content-Length", fmt.Sprintf("%d", len(blob))).
SetHeader("Content-Type", "application/octet-stream").
SetQueryParam("digest", digest).
SetBody(blob).
Put(baseURL + loc)
if err != nil {
return err
}
if resp.StatusCode() != http.StatusCreated {
return ErrPutBlob
}
}
var err error
cblob := img.ConfigDescriptor.Data
// we'll remove this check once we make the full transition to the new way of generating test images
if len(cblob) == 0 {
cblob, err = json.Marshal(img.Config)
if err = inject.Error(err); err != nil {
return err
}
}
cdigest := godigest.FromBytes(cblob)
if img.Manifest.Config.MediaType == ispec.MediaTypeEmptyJSON ||
img.Manifest.Config.Digest == ispec.DescriptorEmptyJSON.Digest {
cblob = ispec.DescriptorEmptyJSON.Data
cdigest = ispec.DescriptorEmptyJSON.Digest
}
resp, err := resty.R().
Post(baseURL + "/v2/" + repo + "/blobs/uploads/")
if err = inject.Error(err); err != nil {
return err
}
if inject.ErrStatusCode(resp.StatusCode()) != http.StatusAccepted || inject.ErrStatusCode(resp.StatusCode()) == -1 {
return ErrPostBlob
}
loc := Location(baseURL, resp)
// uploading blob should get 201
resp, err = resty.R().
SetHeader("Content-Length", fmt.Sprintf("%d", len(cblob))).
SetHeader("Content-Type", "application/octet-stream").
SetQueryParam("digest", cdigest.String()).
SetBody(cblob).
Put(loc)
if err = inject.Error(err); err != nil {
return err
}
if inject.ErrStatusCode(resp.StatusCode()) != http.StatusCreated || inject.ErrStatusCode(resp.StatusCode()) == -1 {
return ErrPostBlob
}
manifestBlob := img.ManifestDescriptor.Data
// we'll remove this check once we make the full transition to the new way of generating test images
if len(manifestBlob) == 0 {
manifestBlob, err = json.Marshal(img.Manifest)
if err = inject.Error(err); err != nil {
return err
}
}
// validate manifest
if err := storageCommon.ValidateManifestSchema(manifestBlob); err != nil {
return err
}
if img.Reference == "" {
img.Reference = godigest.FromBytes(manifestBlob).String()
}
resp, err = resty.R().
SetHeader("Content-type", ispec.MediaTypeImageManifest).
SetBody(manifestBlob).
Put(baseURL + "/v2/" + repo + "/manifests/" + img.Reference)
if inject.ErrStatusCode(resp.StatusCode()) != http.StatusCreated {
return ErrPutBlob
}
if inject.ErrStatusCode(resp.StatusCode()) != http.StatusCreated {
return ErrPutBlob
}
return err
}
func UploadImageWithRef(img Image, baseURL, repo, ref string) error {
func UploadImage(img Image, baseURL, repo, ref string) error {
for _, blob := range img.Layers {
resp, err := resty.R().Post(baseURL + "/v2/" + repo + "/blobs/uploads/")
if err != nil {
@@ -1137,13 +1002,13 @@ func PushTestImage(repoName string, tag string, //nolint:unparam
) error {
err := UploadImage(
Image{
Manifest: manifest,
Config: config,
Layers: layers,
Reference: tag,
Manifest: manifest,
Config: config,
Layers: layers,
},
baseURL,
repoName,
tag,
)
return err
@@ -1662,101 +1527,7 @@ func Contains[E isser](s []E, name string) bool {
return Index(s, name) >= 0
}
func UploadImageWithBasicAuth(img Image, baseURL, repo, user, password string) error {
for _, blob := range img.Layers {
resp, err := resty.R().
SetBasicAuth(user, password).
Post(baseURL + "/v2/" + repo + "/blobs/uploads/")
if err != nil {
return err
}
if resp.StatusCode() != http.StatusAccepted {
return ErrPostBlob
}
loc := resp.Header().Get("Location")
digest := godigest.FromBytes(blob).String()
resp, err = resty.R().
SetBasicAuth(user, password).
SetHeader("Content-Length", fmt.Sprintf("%d", len(blob))).
SetHeader("Content-Type", "application/octet-stream").
SetQueryParam("digest", digest).
SetBody(blob).
Put(baseURL + loc)
if err != nil {
return err
}
if resp.StatusCode() != http.StatusCreated {
return ErrPutBlob
}
}
// upload config
cblob, err := json.Marshal(img.Config)
if err = inject.Error(err); err != nil {
return err
}
cdigest := godigest.FromBytes(cblob)
if img.Manifest.Config.MediaType == ispec.MediaTypeEmptyJSON {
cblob = ispec.DescriptorEmptyJSON.Data
cdigest = ispec.DescriptorEmptyJSON.Digest
}
resp, err := resty.R().
SetBasicAuth(user, password).
Post(baseURL + "/v2/" + repo + "/blobs/uploads/")
if err = inject.Error(err); err != nil {
return err
}
if inject.ErrStatusCode(resp.StatusCode()) != http.StatusAccepted || inject.ErrStatusCode(resp.StatusCode()) == -1 {
return ErrPostBlob
}
loc := Location(baseURL, resp)
// uploading blob should get 201
resp, err = resty.R().
SetBasicAuth(user, password).
SetHeader("Content-Length", fmt.Sprintf("%d", len(cblob))).
SetHeader("Content-Type", "application/octet-stream").
SetQueryParam("digest", cdigest.String()).
SetBody(cblob).
Put(loc)
if err = inject.Error(err); err != nil {
return err
}
if inject.ErrStatusCode(resp.StatusCode()) != http.StatusCreated || inject.ErrStatusCode(resp.StatusCode()) == -1 {
return ErrPostBlob
}
// put manifest
manifestBlob, err := json.Marshal(img.Manifest)
if err = inject.Error(err); err != nil {
return err
}
if img.Reference == "" {
img.Reference = godigest.FromBytes(manifestBlob).String()
}
_, err = resty.R().
SetBasicAuth(user, password).
SetHeader("Content-type", "application/vnd.oci.image.manifest.v1+json").
SetBody(manifestBlob).
Put(baseURL + "/v2/" + repo + "/manifests/" + img.Reference)
return err
}
func UploadImageWithBasicAuthRef(img Image, baseURL, repo, ref, user, password string) error {
func UploadImageWithBasicAuth(img Image, baseURL, repo, ref, user, password string) error {
for _, blob := range img.Layers {
resp, err := resty.R().
SetBasicAuth(user, password).
@@ -1922,6 +1693,7 @@ func SignImageUsingNotary(repoTag, port string) error {
return err
}
// Deprecated: Should use the new functions starting with "Create".
func GetRandomMultiarchImageComponents() (ispec.Index, []Image, error) {
const layerSize = 100
@@ -1946,8 +1718,6 @@ func GetRandomMultiarchImageComponents() (ispec.Index, []Image, error) {
return ispec.Index{}, []Image{}, err
}
image1.Reference = getManifestDigest(image1.Manifest).String()
randomLayer2 := make([]byte, layerSize)
_, err = rand.Read(randomLayer2)
@@ -1969,8 +1739,6 @@ func GetRandomMultiarchImageComponents() (ispec.Index, []Image, error) {
return ispec.Index{}, []Image{}, err
}
image2.Reference = getManifestDigest(image2.Manifest).String()
randomLayer3 := make([]byte, layerSize)
_, err = rand.Read(randomLayer3)
@@ -1992,8 +1760,6 @@ func GetRandomMultiarchImageComponents() (ispec.Index, []Image, error) {
return ispec.Index{}, []Image{}, err
}
image3.Reference = getManifestDigest(image3.Manifest).String()
index := ispec.Index{
MediaType: ispec.MediaTypeImageIndex,
Manifests: []ispec.Descriptor{
@@ -2018,6 +1784,7 @@ func GetRandomMultiarchImageComponents() (ispec.Index, []Image, error) {
return index, []Image{image1, image2, image3}, nil
}
// Deprecated: Should use the new functions starting with "Create".
func GetRandomMultiarchImage(reference string) (MultiarchImage, error) {
index, images, err := GetRandomMultiarchImageComponents()
if err != nil {
@@ -2031,18 +1798,16 @@ func GetRandomMultiarchImage(reference string) (MultiarchImage, error) {
}, err
}
// Deprecated: Should use the new functions starting with "Create".
func GetMultiarchImageForImages(images []Image) MultiarchImage {
var index ispec.Index
for i, image := range images {
for _, image := range images {
index.Manifests = append(index.Manifests, ispec.Descriptor{
MediaType: ispec.MediaTypeImageManifest,
Digest: getManifestDigest(image.Manifest),
Size: getManifestSize(image.Manifest),
})
// update the reference with the digest of the manifest
images[i].Reference = getManifestDigest(image.Manifest).String()
}
index.SchemaVersion = 2
@@ -2068,40 +1833,9 @@ func getManifestDigest(manifest ispec.Manifest) godigest.Digest {
return godigest.FromBytes(manifestBlob)
}
func UploadMultiarchImage(multiImage MultiarchImage, baseURL string, repo string) error {
func UploadMultiarchImage(multiImage MultiarchImage, baseURL string, repo, ref string) error {
for _, image := range multiImage.Images {
err := UploadImage(image, baseURL, repo)
if err != nil {
return err
}
}
// put manifest
indexBlob, err := json.Marshal(multiImage.Index)
if err = inject.Error(err); err != nil {
return err
}
// validate manifest
if err := storageCommon.ValidateImageIndexSchema(indexBlob); err != nil {
return err
}
resp, err := resty.R().
SetHeader("Content-type", ispec.MediaTypeImageIndex).
SetBody(indexBlob).
Put(baseURL + "/v2/" + repo + "/manifests/" + multiImage.Reference)
if resp.StatusCode() != http.StatusCreated {
return ErrPutIndex
}
return err
}
func UploadMultiarchImageWithRef(multiImage MultiarchImage, baseURL string, repo, ref string) error {
for _, image := range multiImage.Images {
err := UploadImageWithRef(image, baseURL, repo, image.DigestStr())
err := UploadImage(image, baseURL, repo, image.DigestStr())
if err != nil {
return err
}
+32 -56
View File
@@ -433,9 +433,8 @@ func TestUploadMultiarchImage(t *testing.T) {
},
},
},
Images: []test.Image{img},
Reference: "index",
}, baseURL, "test")
Images: []test.Image{img},
}, baseURL, "test", "index")
So(err, ShouldBeNil)
})
@@ -451,9 +450,8 @@ func TestUploadMultiarchImage(t *testing.T) {
},
},
},
Images: []test.Image{img},
Reference: "index",
}, baseURL, "test")
Images: []test.Image{img},
}, baseURL, "test", "index")
So(err, ShouldNotBeNil)
})
})
@@ -493,7 +491,7 @@ func TestUploadImage(t *testing.T) {
Config: ispec.Image{},
}
err := test.UploadImage(img, baseURL, "test")
err := test.UploadImage(img, baseURL, "test", img.DigestStr())
So(err, ShouldNotBeNil)
})
@@ -509,7 +507,7 @@ func TestUploadImage(t *testing.T) {
Layers: make([][]byte, 10),
}
err := test.UploadImage(img, baseURL, "test")
err := test.UploadImage(img, baseURL, "test", "")
So(err, ShouldNotBeNil)
})
@@ -537,7 +535,7 @@ func TestUploadImage(t *testing.T) {
Layers: make([][]byte, 10),
}
err = test.UploadImage(img, baseURL, "test")
err = test.UploadImage(img, baseURL, "test", "")
So(err, ShouldNotBeNil)
})
@@ -560,7 +558,7 @@ func TestUploadImage(t *testing.T) {
Config: ispec.Image{},
}
err := test.UploadImage(img, baseURL, "test")
err := test.UploadImage(img, baseURL, "test", "")
So(err, ShouldNotBeNil)
})
@@ -600,7 +598,7 @@ func TestUploadImage(t *testing.T) {
Config: ispec.Image{},
}
err := test.UploadImage(img, baseURL, "test")
err := test.UploadImage(img, baseURL, "test", img.DigestStr())
So(err, ShouldBeNil)
})
@@ -659,31 +657,19 @@ func TestUploadImage(t *testing.T) {
defer ctlrManager.StopServer()
Convey("Request fail while pushing layer", func() {
err := test.UploadImageWithBasicAuth(test.Image{Layers: [][]byte{{1, 2, 3}}}, "badURL", "", "", "")
So(err, ShouldNotBeNil)
err = test.UploadImageWithBasicAuthRef(test.Image{Layers: [][]byte{{1, 2, 3}}}, "badURL", "", "", "", "")
err := test.UploadImageWithBasicAuth(test.Image{Layers: [][]byte{{1, 2, 3}}}, "badURL", "", "", "", "")
So(err, ShouldNotBeNil)
})
Convey("Request status is not StatusOk while pushing layer", func() {
err := test.UploadImageWithBasicAuth(test.Image{Layers: [][]byte{{1, 2, 3}}}, baseURL, "", "repo", "")
So(err, ShouldNotBeNil)
err = test.UploadImageWithBasicAuthRef(test.Image{Layers: [][]byte{{1, 2, 3}}}, baseURL, "", "repo", "", "")
err := test.UploadImageWithBasicAuth(test.Image{Layers: [][]byte{{1, 2, 3}}}, baseURL, "", "repo", "", "")
So(err, ShouldNotBeNil)
})
Convey("Request fail while pushing config", func() {
err := test.UploadImageWithBasicAuth(test.Image{}, "badURL", "", "", "")
So(err, ShouldNotBeNil)
err = test.UploadImageWithBasicAuthRef(test.Image{}, "badURL", "", "", "", "")
err := test.UploadImageWithBasicAuth(test.Image{}, "badURL", "", "", "", "")
So(err, ShouldNotBeNil)
})
Convey("Request status is not StatusOk while pushing config", func() {
err := test.UploadImageWithBasicAuth(test.Image{}, baseURL, "", "repo", "")
So(err, ShouldNotBeNil)
err = test.UploadImageWithBasicAuthRef(test.Image{}, baseURL, "", "repo", "", "")
err := test.UploadImageWithBasicAuth(test.Image{}, baseURL, "", "repo", "", "")
So(err, ShouldNotBeNil)
})
})
@@ -737,7 +723,7 @@ func TestUploadImage(t *testing.T) {
Config: ispec.Image{},
}
err := test.UploadImage(img, baseURL, "test")
err := test.UploadImage(img, baseURL, "test", "")
So(err, ShouldNotBeNil)
})
@@ -768,14 +754,14 @@ func TestUploadImage(t *testing.T) {
Convey("CreateBlobUpload", func() {
injected := inject.InjectFailure(2)
if injected {
err := test.UploadImage(img, baseURL, "test")
err := test.UploadImage(img, baseURL, "test", img.DigestStr())
So(err, ShouldNotBeNil)
}
})
Convey("UpdateBlobUpload", func() {
injected := inject.InjectFailure(4)
if injected {
err := test.UploadImage(img, baseURL, "test")
err := test.UploadImage(img, baseURL, "test", img.DigestStr())
So(err, ShouldNotBeNil)
}
})
@@ -829,40 +815,28 @@ func TestInjectUploadImage(t *testing.T) {
Convey("first marshal", func() {
injected := inject.InjectFailure(0)
if injected {
err := test.UploadImage(img, baseURL, "test")
So(err, ShouldNotBeNil)
err = test.UploadImageWithRef(img, baseURL, "test", img.DigestStr())
err := test.UploadImage(img, baseURL, "test", img.DigestStr())
So(err, ShouldNotBeNil)
}
})
Convey("CreateBlobUpload POST call", func() {
injected := inject.InjectFailure(1)
if injected {
err := test.UploadImage(img, baseURL, "test")
So(err, ShouldNotBeNil)
err = test.UploadImageWithRef(img, baseURL, "test", img.DigestStr())
err := test.UploadImage(img, baseURL, "test", img.DigestStr())
So(err, ShouldNotBeNil)
}
})
Convey("UpdateBlobUpload PUT call", func() {
injected := inject.InjectFailure(3)
if injected {
err := test.UploadImage(img, baseURL, "test")
So(err, ShouldNotBeNil)
err = test.UploadImageWithRef(img, baseURL, "test", img.DigestStr())
err := test.UploadImage(img, baseURL, "test", img.DigestStr())
So(err, ShouldNotBeNil)
}
})
Convey("second marshal", func() {
injected := inject.InjectFailure(5)
if injected {
err := test.UploadImage(img, baseURL, "test")
So(err, ShouldNotBeNil)
err = test.UploadImageWithRef(img, baseURL, "test", img.DigestStr())
err := test.UploadImage(img, baseURL, "test", img.DigestStr())
So(err, ShouldNotBeNil)
}
})
@@ -970,28 +944,28 @@ func TestInjectUploadImageWithBasicAuth(t *testing.T) {
Convey("first marshal", func() {
injected := inject.InjectFailure(0)
if injected {
err := test.UploadImageWithBasicAuth(img, baseURL, "test", "user", "password")
err := test.UploadImageWithBasicAuth(img, baseURL, "test", img.DigestStr(), "user", "password")
So(err, ShouldNotBeNil)
}
})
Convey("CreateBlobUpload POST call", func() {
injected := inject.InjectFailure(1)
if injected {
err := test.UploadImageWithBasicAuth(img, baseURL, "test", "user", "password")
err := test.UploadImageWithBasicAuth(img, baseURL, "test", img.DigestStr(), "user", "password")
So(err, ShouldNotBeNil)
}
})
Convey("UpdateBlobUpload PUT call", func() {
injected := inject.InjectFailure(3)
if injected {
err := test.UploadImageWithBasicAuth(img, baseURL, "test", "user", "password")
err := test.UploadImageWithBasicAuth(img, baseURL, "test", img.DigestStr(), "user", "password")
So(err, ShouldNotBeNil)
}
})
Convey("second marshal", func() {
injected := inject.InjectFailure(5)
if injected {
err := test.UploadImageWithBasicAuth(img, baseURL, "test", "user", "password")
err := test.UploadImageWithBasicAuth(img, baseURL, "test", img.DigestStr(), "user", "password")
So(err, ShouldNotBeNil)
}
})
@@ -1265,11 +1239,10 @@ func TestVerifyWithNotation(t *testing.T) {
err = test.UploadImage(
test.Image{
Config: cfg,
Layers: layers,
Manifest: manifest,
Reference: tag,
}, baseURL, repoName)
Config: cfg,
Layers: layers,
Manifest: manifest,
}, baseURL, repoName, tag)
So(err, ShouldBeNil)
content, err := json.Marshal(manifest)
@@ -1478,7 +1451,7 @@ func TestGenerateNotationCerts(t *testing.T) {
func TestWriteImageToFileSystem(t *testing.T) {
Convey("WriteImageToFileSystem errors", t, func() {
err := test.WriteImageToFileSystem(test.Image{}, "repo", storage.StoreController{
err := test.WriteImageToFileSystem(test.Image{}, "repo", "dig", storage.StoreController{
DefaultStore: mocks.MockedImageStore{
InitRepoFn: func(name string) error {
return ErrTestError
@@ -1490,6 +1463,7 @@ func TestWriteImageToFileSystem(t *testing.T) {
err = test.WriteImageToFileSystem(
test.Image{Layers: [][]byte{[]byte("testLayer")}},
"repo",
"tag",
storage.StoreController{
DefaultStore: mocks.MockedImageStore{
FullBlobUploadFn: func(repo string, body io.Reader, digest godigest.Digest,
@@ -1504,6 +1478,7 @@ func TestWriteImageToFileSystem(t *testing.T) {
err = test.WriteImageToFileSystem(
test.Image{Layers: [][]byte{[]byte("testLayer")}},
"repo",
"tag",
storage.StoreController{
DefaultStore: mocks.MockedImageStore{
FullBlobUploadFn: func(repo string, body io.Reader, digest godigest.Digest,
@@ -1523,6 +1498,7 @@ func TestWriteImageToFileSystem(t *testing.T) {
err = test.WriteImageToFileSystem(
test.Image{Layers: [][]byte{[]byte("testLayer")}},
"repo",
"tag",
storage.StoreController{
DefaultStore: mocks.MockedImageStore{
PutImageManifestFn: func(repo, reference, mediaType string, body []byte,
+4 -6
View File
@@ -77,10 +77,9 @@ type ManifestBuilder interface {
}
type Image struct {
Manifest ispec.Manifest
Config ispec.Image
Layers [][]byte
Reference string
Manifest ispec.Manifest
Config ispec.Image
Layers [][]byte
ConfigDescriptor ispec.Descriptor
ManifestDescriptor ispec.Descriptor
@@ -151,6 +150,7 @@ func CreateRandomImageWith() ManifestBuilder {
return CreateImageWith().RandomLayers(layerCount, layerSize).RandomConfig()
}
// CreateVulnerableImage creates a vulnerable image with the default config.
func CreateVulnerableImage() Image {
return CreateImageWith().VulnerableLayers().DefaultVulnConfig().Build()
}
@@ -433,8 +433,6 @@ func (ib *BaseImageBuilder) Build() Image {
Data: manifestBlob,
}
img.Reference = img.ManifestDescriptor.Digest.String()
return img
}
-1
View File
@@ -83,7 +83,6 @@ func TestImageBuilder(t *testing.T) {
img := configBuilder.EmptyConfig().Build()
So(img.Manifest.Config.Size, ShouldEqual, ispec.DescriptorEmptyJSON.Size)
So(img.Manifest.Config.Digest, ShouldResemble, ispec.DescriptorEmptyJSON.Digest)
So(img.Reference, ShouldResemble, img.Digest().String())
})
})
+15 -20
View File
@@ -307,7 +307,7 @@ func TestBaseOciLayoutUtils(t *testing.T) {
defer ctlrManager.StopServer()
// push test image to repo
config, layers, manifest, err := GetImageComponents(100)
config, layers, manifest, err := GetImageComponents(100) //nolint:staticcheck
So(err, ShouldBeNil)
layersSize1 := 0
@@ -319,13 +319,10 @@ func TestBaseOciLayoutUtils(t *testing.T) {
tag := "1.0.1"
err = UploadImage(
Image{
Manifest: manifest,
Config: config,
Layers: layers,
Reference: tag,
},
baseURL,
repo,
Manifest: manifest,
Config: config,
Layers: layers,
}, baseURL, repo, tag,
)
So(err, ShouldBeNil)
@@ -357,16 +354,15 @@ func TestExtractImageDetails(t *testing.T) {
}
num := 10
config, layers, manifest, err := GetImageComponents(num)
config, layers, manifest, err := GetImageComponents(num) //nolint:staticcheck
So(err, ShouldBeNil)
err = WriteImageToFileSystem(
Image{
Manifest: manifest,
Layers: layers,
Config: config,
Reference: "latest",
}, "zot-test", storeController,
Manifest: manifest,
Layers: layers,
Config: config,
}, "zot-test", "latest", storeController,
)
So(err, ShouldBeNil)
@@ -414,16 +410,15 @@ func TestExtractImageDetails(t *testing.T) {
}
num := 10
config, layers, manifest, err := GetImageComponents(num)
config, layers, manifest, err := GetImageComponents(num) //nolint:staticcheck
So(err, ShouldBeNil)
err = WriteImageToFileSystem(
Image{
Manifest: manifest,
Layers: layers,
Config: config,
Reference: "latest",
}, "zot-test", storeController,
Manifest: manifest,
Layers: layers,
Config: config,
}, "zot-test", "latest", storeController,
)
So(err, ShouldBeNil)