mirror of
https://github.com/project-zot/zot.git
synced 2026-06-17 12:58:02 +08:00
refactor(digests): standardise representation of digests to digest.Digest (#898)
- Digests were represented by different ways
- We needed a uniform way to represent the digests and enforce a format
- also replace usage of github.com/google/go-containerregistry/pkg/v1
with github.com/opencontainers/image-spec/specs-go/v1
Signed-off-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com>
(cherry picked from commit 96b2f29d6d57070a913ce419149cd481c0723815)
(cherry picked from commit 3d41b583daea654c98378ce3dcb78937d71538e8)
Co-authored-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com>
This commit is contained in:
+31
-30
@@ -13,6 +13,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
godigest "github.com/opencontainers/go-digest"
|
||||
ispec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
|
||||
@@ -56,7 +57,7 @@ func TestRoutes(t *testing.T) {
|
||||
Convey("Get manifest", func() {
|
||||
// overwrite controller storage
|
||||
ctlr.StoreController.DefaultStore = &mocks.MockedImageStore{
|
||||
GetImageManifestFn: func(repo string, reference string) ([]byte, string, string, error) {
|
||||
GetImageManifestFn: func(repo string, reference string) ([]byte, godigest.Digest, string, error) {
|
||||
return []byte{}, "", "", zerr.ErrRepoBadVersion
|
||||
},
|
||||
}
|
||||
@@ -100,7 +101,7 @@ func TestRoutes(t *testing.T) {
|
||||
"reference": "reference",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
PutImageManifestFn: func(repo, reference, mediaType string, body []byte) (string, error) {
|
||||
PutImageManifestFn: func(repo, reference, mediaType string, body []byte) (godigest.Digest, error) {
|
||||
return "", zerr.ErrRepoNotFound
|
||||
},
|
||||
})
|
||||
@@ -113,7 +114,7 @@ func TestRoutes(t *testing.T) {
|
||||
},
|
||||
|
||||
&mocks.MockedImageStore{
|
||||
PutImageManifestFn: func(repo, reference, mediaType string, body []byte) (string, error) {
|
||||
PutImageManifestFn: func(repo, reference, mediaType string, body []byte) (godigest.Digest, error) {
|
||||
return "", zerr.ErrManifestNotFound
|
||||
},
|
||||
})
|
||||
@@ -125,7 +126,7 @@ func TestRoutes(t *testing.T) {
|
||||
"reference": "reference",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
PutImageManifestFn: func(repo, reference, mediaType string, body []byte) (string, error) {
|
||||
PutImageManifestFn: func(repo, reference, mediaType string, body []byte) (godigest.Digest, error) {
|
||||
return "", zerr.ErrBadManifest
|
||||
},
|
||||
})
|
||||
@@ -137,7 +138,7 @@ func TestRoutes(t *testing.T) {
|
||||
"reference": "reference",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
PutImageManifestFn: func(repo, reference, mediaType string, body []byte) (string, error) {
|
||||
PutImageManifestFn: func(repo, reference, mediaType string, body []byte) (godigest.Digest, error) {
|
||||
return "", zerr.ErrBlobNotFound
|
||||
},
|
||||
})
|
||||
@@ -150,7 +151,7 @@ func TestRoutes(t *testing.T) {
|
||||
"reference": "reference",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
PutImageManifestFn: func(repo, reference, mediaType string, body []byte) (string, error) {
|
||||
PutImageManifestFn: func(repo, reference, mediaType string, body []byte) (godigest.Digest, error) {
|
||||
return "", zerr.ErrRepoBadVersion
|
||||
},
|
||||
})
|
||||
@@ -258,7 +259,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": test.GetTestBlobDigest("zot-cve-test", "layer").String(),
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
DeleteBlobFn: func(repo, digest string) error {
|
||||
DeleteBlobFn: func(repo string, digest godigest.Digest) error {
|
||||
return ErrUnexpectedError
|
||||
},
|
||||
})
|
||||
@@ -270,7 +271,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": "sha256:7b8437f04f83f084b7ed68ad8c4a4947e12fc4e1b006b38129bac89114ec3621",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
DeleteBlobFn: func(repo, digest string) error {
|
||||
DeleteBlobFn: func(repo string, digest godigest.Digest) error {
|
||||
return zerr.ErrBadBlobDigest
|
||||
},
|
||||
})
|
||||
@@ -283,7 +284,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": test.GetTestBlobDigest("zot-cve-test", "layer").String(),
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
DeleteBlobFn: func(repo, digest string) error {
|
||||
DeleteBlobFn: func(repo string, digest godigest.Digest) error {
|
||||
return zerr.ErrBlobNotFound
|
||||
},
|
||||
})
|
||||
@@ -296,7 +297,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": test.GetTestBlobDigest("zot-cve-test", "layer").String(),
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
DeleteBlobFn: func(repo, digest string) error {
|
||||
DeleteBlobFn: func(repo string, digest godigest.Digest) error {
|
||||
return zerr.ErrRepoNotFound
|
||||
},
|
||||
})
|
||||
@@ -326,7 +327,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": "1234",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
CheckBlobFn: func(repo, digest string) (bool, int64, error) {
|
||||
CheckBlobFn: func(repo string, digest godigest.Digest) (bool, int64, error) {
|
||||
return true, 0, zerr.ErrBadBlobDigest
|
||||
},
|
||||
})
|
||||
@@ -339,7 +340,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": "1234",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
CheckBlobFn: func(repo, digest string) (bool, int64, error) {
|
||||
CheckBlobFn: func(repo string, digest godigest.Digest) (bool, int64, error) {
|
||||
return true, 0, zerr.ErrRepoNotFound
|
||||
},
|
||||
})
|
||||
@@ -352,7 +353,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": "1234",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
CheckBlobFn: func(repo, digest string) (bool, int64, error) {
|
||||
CheckBlobFn: func(repo string, digest godigest.Digest) (bool, int64, error) {
|
||||
return true, 0, zerr.ErrBlobNotFound
|
||||
},
|
||||
})
|
||||
@@ -365,7 +366,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": "1234",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
CheckBlobFn: func(repo, digest string) (bool, int64, error) {
|
||||
CheckBlobFn: func(repo string, digest godigest.Digest) (bool, int64, error) {
|
||||
return true, 0, ErrUnexpectedError
|
||||
},
|
||||
})
|
||||
@@ -378,7 +379,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": "1234",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
CheckBlobFn: func(repo, digest string) (bool, int64, error) {
|
||||
CheckBlobFn: func(repo string, digest godigest.Digest) (bool, int64, error) {
|
||||
return false, 0, nil
|
||||
},
|
||||
})
|
||||
@@ -406,7 +407,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": test.GetTestBlobDigest("zot-cve-test", "layer").String(),
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
GetBlobFn: func(repo, digest, mediaType string) (io.ReadCloser, int64, error) {
|
||||
GetBlobFn: func(repo string, digest godigest.Digest, mediaType string) (io.ReadCloser, int64, error) {
|
||||
return io.NopCloser(bytes.NewBuffer([]byte(""))), 0, zerr.ErrRepoNotFound
|
||||
},
|
||||
})
|
||||
@@ -419,7 +420,7 @@ func TestRoutes(t *testing.T) {
|
||||
"digest": test.GetTestBlobDigest("zot-cve-test", "layer").String(),
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
GetBlobFn: func(repo, digest, mediaType string) (io.ReadCloser, int64, error) {
|
||||
GetBlobFn: func(repo string, digest godigest.Digest, mediaType string) (io.ReadCloser, int64, error) {
|
||||
return io.NopCloser(bytes.NewBuffer([]byte(""))), 0, zerr.ErrBadBlobDigest
|
||||
},
|
||||
})
|
||||
@@ -470,7 +471,7 @@ func TestRoutes(t *testing.T) {
|
||||
NewBlobUploadFn: func(repo string) (string, error) {
|
||||
return "", zerr.ErrRepoNotFound
|
||||
},
|
||||
CheckBlobFn: func(repo, digest string) (bool, int64, error) {
|
||||
CheckBlobFn: func(repo string, digest godigest.Digest) (bool, int64, error) {
|
||||
return true, 0, zerr.ErrRepoNotFound
|
||||
},
|
||||
})
|
||||
@@ -487,7 +488,7 @@ func TestRoutes(t *testing.T) {
|
||||
NewBlobUploadFn: func(repo string) (string, error) {
|
||||
return "", zerr.ErrRepoNotFound
|
||||
},
|
||||
CheckBlobFn: func(repo, digest string) (bool, int64, error) {
|
||||
CheckBlobFn: func(repo string, digest godigest.Digest) (bool, int64, error) {
|
||||
return true, 0, zerr.ErrRepoNotFound
|
||||
},
|
||||
})
|
||||
@@ -505,7 +506,7 @@ func TestRoutes(t *testing.T) {
|
||||
NewBlobUploadFn: func(repo string) (string, error) {
|
||||
return "", zerr.ErrRepoNotFound
|
||||
},
|
||||
CheckBlobFn: func(repo, digest string) (bool, int64, error) {
|
||||
CheckBlobFn: func(repo string, digest godigest.Digest) (bool, int64, error) {
|
||||
return true, 0, zerr.ErrRepoNotFound
|
||||
},
|
||||
})
|
||||
@@ -521,7 +522,7 @@ func TestRoutes(t *testing.T) {
|
||||
"Content-Length": "100",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
FullBlobUploadFn: func(repo string, body io.Reader, digest string) (string, int64, error) {
|
||||
FullBlobUploadFn: func(repo string, body io.Reader, digest godigest.Digest) (string, int64, error) {
|
||||
return "session", 0, zerr.ErrBadBlobDigest
|
||||
},
|
||||
})
|
||||
@@ -537,7 +538,7 @@ func TestRoutes(t *testing.T) {
|
||||
"Content-Length": "100",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
FullBlobUploadFn: func(repo string, body io.Reader, digest string) (string, int64, error) {
|
||||
FullBlobUploadFn: func(repo string, body io.Reader, digest godigest.Digest) (string, int64, error) {
|
||||
return "session", 20, nil
|
||||
},
|
||||
})
|
||||
@@ -965,7 +966,7 @@ func TestRoutes(t *testing.T) {
|
||||
"session_id": "test",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest string) error {
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest godigest.Digest) error {
|
||||
return zerr.ErrBadBlobDigest
|
||||
},
|
||||
},
|
||||
@@ -985,7 +986,7 @@ func TestRoutes(t *testing.T) {
|
||||
"session_id": "test",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest string) error {
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest godigest.Digest) error {
|
||||
return zerr.ErrBadUploadRange
|
||||
},
|
||||
},
|
||||
@@ -1005,7 +1006,7 @@ func TestRoutes(t *testing.T) {
|
||||
"session_id": "test",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest string) error {
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest godigest.Digest) error {
|
||||
return zerr.ErrRepoNotFound
|
||||
},
|
||||
},
|
||||
@@ -1025,7 +1026,7 @@ func TestRoutes(t *testing.T) {
|
||||
"session_id": "test",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest string) error {
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest godigest.Digest) error {
|
||||
return zerr.ErrUploadNotFound
|
||||
},
|
||||
},
|
||||
@@ -1045,7 +1046,7 @@ func TestRoutes(t *testing.T) {
|
||||
"session_id": "test",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest string) error {
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest godigest.Digest) error {
|
||||
return ErrUnexpectedError
|
||||
},
|
||||
DeleteBlobUploadFn: func(repo, uuid string) error {
|
||||
@@ -1319,7 +1320,7 @@ func TestRoutes(t *testing.T) {
|
||||
"session_id": "test",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest string) error {
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest godigest.Digest) error {
|
||||
return zerr.ErrUploadNotFound
|
||||
},
|
||||
},
|
||||
@@ -1339,7 +1340,7 @@ func TestRoutes(t *testing.T) {
|
||||
"session_id": "test",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest string) error {
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest godigest.Digest) error {
|
||||
return zerr.ErrUploadNotFound
|
||||
},
|
||||
},
|
||||
@@ -1359,7 +1360,7 @@ func TestRoutes(t *testing.T) {
|
||||
"session_id": "test",
|
||||
},
|
||||
&mocks.MockedImageStore{
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest string) error {
|
||||
FinishBlobUploadFn: func(repo, uuid string, body io.Reader, digest godigest.Digest) error {
|
||||
return zerr.ErrUploadNotFound
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user