From caf88ddb1ebe387ae04230e96f448e62470dd290 Mon Sep 17 00:00:00 2001 From: Catalin Hofnar Date: Wed, 19 Oct 2022 06:43:56 +0300 Subject: [PATCH] refactor(tests): remove hardcoded digests (#871) Signed-off-by: Catalin Hofnar --- pkg/api/controller_test.go | 4 +-- pkg/api/routes_test.go | 38 ++++++++++----------- pkg/extensions/search/common/common_test.go | 23 +++++++------ pkg/test/common.go | 23 +++++++++++++ 4 files changed, 56 insertions(+), 32 deletions(-) diff --git a/pkg/api/controller_test.go b/pkg/api/controller_test.go index 1d3b5d0d..3082a45b 100644 --- a/pkg/api/controller_test.go +++ b/pkg/api/controller_test.go @@ -3077,7 +3077,7 @@ func TestInvalidCases(t *testing.T) { }(ctlr) test.WaitTillServerReady(baseURL) - digest := "sha256:8dd57e171a61368ffcfde38045ddb6ed74a32950c271c1da93eaddfb66a77e78" + digest := test.GetTestBlobDigest("zot-cve-test", "config").String() name := "zot-c-test" client := resty.New() @@ -3380,7 +3380,7 @@ func TestCrossRepoMount(t *testing.T) { defer stopServer(ctlr) test.WaitTillServerReady(baseURL) - digest := "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621" + digest := test.GetTestBlobDigest("zot-cve-test", "layer").String() name := "zot-c-test" client := resty.New() headResponse, err := client.R().SetBasicAuth(username, passphrase). diff --git a/pkg/api/routes_test.go b/pkg/api/routes_test.go index f6094fd3..fca43c12 100644 --- a/pkg/api/routes_test.go +++ b/pkg/api/routes_test.go @@ -254,7 +254,7 @@ func TestRoutes(t *testing.T) { statusCode := testDeleteBlob( map[string]string{ "name": "ErrUnexpectedError", - "digest": "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621", + "digest": test.GetTestBlobDigest("zot-cve-test", "layer").String(), }, &mocks.MockedImageStore{ DeleteBlobFn: func(repo, digest string) error { @@ -279,7 +279,7 @@ func TestRoutes(t *testing.T) { statusCode = testDeleteBlob( map[string]string{ "name": "ErrBlobNotFound", - "digest": "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621", + "digest": test.GetTestBlobDigest("zot-cve-test", "layer").String(), }, &mocks.MockedImageStore{ DeleteBlobFn: func(repo, digest string) error { @@ -292,7 +292,7 @@ func TestRoutes(t *testing.T) { statusCode = testDeleteBlob( map[string]string{ "name": "ErrRepoNotFound", - "digest": "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621", + "digest": test.GetTestBlobDigest("zot-cve-test", "layer").String(), }, &mocks.MockedImageStore{ DeleteBlobFn: func(repo, digest string) error { @@ -402,7 +402,7 @@ func TestRoutes(t *testing.T) { statusCode := testGetBlob( map[string]string{ "name": "ErrRepoNotFound", - "digest": "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621", + "digest": test.GetTestBlobDigest("zot-cve-test", "layer").String(), }, &mocks.MockedImageStore{ GetBlobFn: func(repo, digest, mediaType string) (io.ReadCloser, int64, error) { @@ -415,7 +415,7 @@ func TestRoutes(t *testing.T) { statusCode = testGetBlob( map[string]string{ "name": "ErrRepoNotFound", - "digest": "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621", + "digest": test.GetTestBlobDigest("zot-cve-test", "layer").String(), }, &mocks.MockedImageStore{ GetBlobFn: func(repo, digest, mediaType string) (io.ReadCloser, int64, error) { @@ -835,7 +835,7 @@ func TestRoutes(t *testing.T) { status := testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "", @@ -851,7 +851,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "100", @@ -867,7 +867,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "100", @@ -887,7 +887,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "100", @@ -907,7 +907,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "100", @@ -927,7 +927,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "100", @@ -947,7 +947,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "0", @@ -967,7 +967,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "0", @@ -987,7 +987,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "0", @@ -1007,7 +1007,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "0", @@ -1027,7 +1027,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "0", @@ -1298,7 +1298,7 @@ func TestRoutes(t *testing.T) { status := testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "0", @@ -1318,7 +1318,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "0", @@ -1338,7 +1338,7 @@ func TestRoutes(t *testing.T) { status = testUpdateBlobUpload( []struct{ k, v string }{ - {"digest", "sha256:7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621"}, + {"digest", test.GetTestBlobDigest("zot-cve-test", "layer").String()}, }, map[string]string{ "Content-Length": "0", diff --git a/pkg/extensions/search/common/common_test.go b/pkg/extensions/search/common/common_test.go index ab5f43eb..f6a9025f 100644 --- a/pkg/extensions/search/common/common_test.go +++ b/pkg/extensions/search/common/common_test.go @@ -142,6 +142,8 @@ func signUsingCosign(port string) error { defer os.RemoveAll(tdir) + digest := GetTestBlobDigest("zot-cve-test", "manifest").String() + _ = os.Chdir(tdir) // generate a keypair @@ -152,8 +154,7 @@ func signUsingCosign(port string) error { return err } - imageURL := fmt.Sprintf("localhost:%s/%s@%s", port, "zot-cve-test", - "sha256:63a795ca90aa6e7cca60941e826810a4cd0a2e73ea02bf458241df2a5c973e29") + imageURL := fmt.Sprintf("localhost:%s/%s@%s", port, "zot-cve-test", digest) // sign the image return sign.SignCmd(&options.RootOptions{Verbose: true, Timeout: 1 * time.Minute}, @@ -318,7 +319,7 @@ func TestRepoListWithNewestImage(t *testing.T) { So(resp.StatusCode(), ShouldEqual, 200) err = os.Remove(path.Join(rootDir, - "zot-test/blobs/sha256/2bacca16b9df395fc855c14ccf50b12b58d35d468b8e7f25758aff90f89bf396")) + "zot-test/blobs/sha256", GetTestBlobDigest("zot-test", "manifest").Encoded())) if err != nil { panic(err) } @@ -337,13 +338,13 @@ func TestRepoListWithNewestImage(t *testing.T) { } err = os.Remove(path.Join(rootDir, - "zot-test/blobs/sha256/adf3bb6cc81f8bd6a9d5233be5f0c1a4f1e3ed1cf5bbdfad7708cc8d4099b741")) + "zot-test/blobs/sha256/", GetTestBlobDigest("zot-test", "config").Encoded())) if err != nil { panic(err) } err = os.Remove(path.Join(rootDir, - "zot-test/blobs/sha256/2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc")) + "zot-test/blobs/sha256", GetTestBlobDigest("zot-test", "layer").Encoded())) if err != nil { panic(err) } @@ -366,7 +367,7 @@ func TestRepoListWithNewestImage(t *testing.T) { panic(err) } //nolint: lll - manifestNoAnnotations := "{\"schemaVersion\":2,\"manifests\":[{\"mediaType\":\"application/vnd.oci.image.manifest.v1+json\",\"digest\":\"sha256:2bacca16b9df395fc855c14ccf50b12b58d35d468b8e7f25758aff90f89bf396\",\"size\":350}]}" + manifestNoAnnotations := "{\"schemaVersion\":2,\"manifests\":[{\"mediaType\":\"application/vnd.oci.image.manifest.v1+json\",\"digest\":\"" + GetTestBlobDigest("zot-test", "manifest").String() + "\",\"size\":350}]}" err = os.WriteFile(path.Join(rootDir, "zot-test/index.json"), []byte(manifestNoAnnotations), 0o600) if err != nil { panic(err) @@ -838,7 +839,7 @@ func TestExpandedRepoInfo(t *testing.T) { So(len(responseStruct.ExpandedRepoInfo.RepoInfo.ImageSummaries[0].Layers), ShouldNotEqual, 0) found := false for _, m := range responseStruct.ExpandedRepoInfo.RepoInfo.ImageSummaries { - if m.Digest == "63a795ca90aa6e7cca60941e826810a4cd0a2e73ea02bf458241df2a5c973e29" { + if m.Digest == GetTestBlobDigest("zot-cve-test", "manifest").Encoded() { found = true So(m.IsSigned, ShouldEqual, false) } @@ -859,7 +860,7 @@ func TestExpandedRepoInfo(t *testing.T) { So(len(responseStruct.ExpandedRepoInfo.RepoInfo.ImageSummaries[0].Layers), ShouldNotEqual, 0) found = false for _, m := range responseStruct.ExpandedRepoInfo.RepoInfo.ImageSummaries { - if m.Digest == "63a795ca90aa6e7cca60941e826810a4cd0a2e73ea02bf458241df2a5c973e29" { + if m.Digest == GetTestBlobDigest("zot-cve-test", "manifest").Encoded() { found = true So(m.IsSigned, ShouldEqual, true) } @@ -885,7 +886,7 @@ func TestExpandedRepoInfo(t *testing.T) { So(len(responseStruct.ExpandedRepoInfo.RepoInfo.ImageSummaries[0].Layers), ShouldNotEqual, 0) found = false for _, m := range responseStruct.ExpandedRepoInfo.RepoInfo.ImageSummaries { - if m.Digest == "2bacca16b9df395fc855c14ccf50b12b58d35d468b8e7f25758aff90f89bf396" { + if m.Digest == GetTestBlobDigest("zot-test", "manifest").Encoded() { found = true So(m.IsSigned, ShouldEqual, false) } @@ -906,7 +907,7 @@ func TestExpandedRepoInfo(t *testing.T) { So(len(responseStruct.ExpandedRepoInfo.RepoInfo.ImageSummaries[0].Layers), ShouldNotEqual, 0) found = false for _, m := range responseStruct.ExpandedRepoInfo.RepoInfo.ImageSummaries { - if m.Digest == "2bacca16b9df395fc855c14ccf50b12b58d35d468b8e7f25758aff90f89bf396" { + if m.Digest == GetTestBlobDigest("zot-test", "manifest").Encoded() { found = true So(m.IsSigned, ShouldEqual, true) } @@ -2698,7 +2699,7 @@ func TestBuildImageInfo(t *testing.T) { } func TestBaseOciLayoutUtils(t *testing.T) { - manifestDigest := "sha256:adf3bb6cc81f8bd6a9d5233be5f0c1a4f1e3ed1cf5bbdfad7708cc8d4099b741" + manifestDigest := GetTestBlobDigest("zot-test", "config").String() Convey("GetImageManifestSize fail", t, func() { mockStoreController := mocks.MockedImageStore{ diff --git a/pkg/test/common.go b/pkg/test/common.go index 6c9bd92d..c203126c 100644 --- a/pkg/test/common.go +++ b/pkg/test/common.go @@ -29,6 +29,29 @@ const ( SleepTime = 100 * time.Millisecond ) +// which: manifest, config, layer +func GetTestBlobDigest(image, which string) godigest.Digest { + prePath := "../test/data" + + for _, err := os.Stat(prePath); err != nil; _, err = os.Stat(prePath) { + prePath = "../" + prePath + } + + imgPath := path.Join(prePath, image) + manifest, config, layer := GetOciLayoutDigests(imgPath) + + switch which { + case "manifest": + return manifest + case "config": + return config + case "layer": + return layer + } + + return "" +} + var ( ErrPostBlob = errors.New("can't post blob") ErrPutBlob = errors.New("can't put blob")