0
Fork 0
mirror of https://github.com/project-zot/zot.git synced 2025-01-20 22:52:51 -05:00

routes: CheckManifest should return 404 when repo is unknown

Previously, CheckManifest() was not checking for repo not found
condition and would default to 500 status code.

Add the check now to return 404.

Fixes issue #74
This commit is contained in:
Ramkumar Chinchani 2020-02-13 11:00:11 -08:00
parent 910e2730fe
commit 6e494942d4
2 changed files with 9 additions and 0 deletions

View file

@ -242,6 +242,9 @@ func (rh *RouteHandler) CheckManifest(w http.ResponseWriter, r *http.Request) {
_, digest, _, err := rh.c.ImageStore.GetImageManifest(name, reference) _, digest, _, err := rh.c.ImageStore.GetImageManifest(name, reference)
if err != nil { if err != nil {
switch err { switch err {
case errors.ErrRepoNotFound:
WriteJSON(w, http.StatusNotFound,
NewErrorList(NewError(NAME_UNKNOWN, map[string]string{"reference": reference})))
case errors.ErrManifestNotFound: case errors.ErrManifestNotFound:
WriteJSON(w, http.StatusNotFound, WriteJSON(w, http.StatusNotFound,
NewErrorList(NewError(MANIFEST_UNKNOWN, map[string]string{"reference": reference}))) NewErrorList(NewError(MANIFEST_UNKNOWN, map[string]string{"reference": reference})))

View file

@ -474,6 +474,12 @@ func CheckWorkflows(t *testing.T, config *compliance.Config) {
So(resp.Header().Get("Content-Length"), ShouldEqual, "0") So(resp.Header().Get("Content-Length"), ShouldEqual, "0")
So(resp.Header().Get(api.DistContentDigestKey), ShouldNotBeEmpty) 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 // create a manifest
m := ispec.Manifest{Layers: []ispec.Descriptor{{Digest: digest}}} m := ispec.Manifest{Layers: []ispec.Descriptor{{Digest: digest}}}
content, err = json.Marshal(m) content, err = json.Marshal(m)