diff --git a/pkg/api/routes.go b/pkg/api/routes.go index d973d7a8..068140a4 100644 --- a/pkg/api/routes.go +++ b/pkg/api/routes.go @@ -242,6 +242,9 @@ func (rh *RouteHandler) CheckManifest(w http.ResponseWriter, r *http.Request) { _, digest, _, err := rh.c.ImageStore.GetImageManifest(name, reference) if err != nil { switch err { + case errors.ErrRepoNotFound: + WriteJSON(w, http.StatusNotFound, + NewErrorList(NewError(NAME_UNKNOWN, map[string]string{"reference": reference}))) case errors.ErrManifestNotFound: WriteJSON(w, http.StatusNotFound, NewErrorList(NewError(MANIFEST_UNKNOWN, map[string]string{"reference": reference}))) diff --git a/pkg/compliance/v1_0_0/check.go b/pkg/compliance/v1_0_0/check.go index 4d7be43b..6749cd07 100644 --- a/pkg/compliance/v1_0_0/check.go +++ b/pkg/compliance/v1_0_0/check.go @@ -474,6 +474,12 @@ func CheckWorkflows(t *testing.T, config *compliance.Config) { So(resp.Header().Get("Content-Length"), ShouldEqual, "0") So(resp.Header().Get(api.DistContentDigestKey), ShouldNotBeEmpty) + // check a non-existent manifest + resp, err = resty.R().SetHeader("Content-Type", "application/vnd.oci.image.manifest.v1+json"). + SetBody(content).Head(baseURL + "/v2/unknown/manifests/test:1.0") + So(err, ShouldBeNil) + So(resp.StatusCode(), ShouldEqual, 404) + // create a manifest m := ispec.Manifest{Layers: []ispec.Descriptor{{Digest: digest}}} content, err = json.Marshal(m)