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:
parent
910e2730fe
commit
6e494942d4
2 changed files with 9 additions and 0 deletions
|
@ -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})))
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue