opencontainers / distribution-spec

OCI Distribution Specification
https://opencontainers.org
Apache License 2.0
792 stars 199 forks source link

Conformance Test: 'Accept' header set during manifest put #396

Closed Dylmay closed 1 year ago

Dylmay commented 1 year ago

Within the OCI spec there is no mention of the 'Accept' header being set during put operations. Is it expected behaviour to have the Accept header set to 'application/vnd.oci.image.manifest.v1+json'?

The server I am currently testing will return 406 due to the endpoint not producing 'application/vnd.oci.image.manifest.v1+json', only 'application/json', and the server is responding strictly to the request.

Can you provide clarification on whether the conformance test is incorrectly setting this header or whether the server should be expected to produce 'application/vnd.oci.image.manifest.v1+json'.

Note:

The header isn't being set by the conformance test explicitly but the underlying resty client is setting it here.

Request:

~~~ REQUEST ~~~
PUT  /v2/test-img-name/manifests/tagtest0  HTTP/1.1
HEADERS:
    Accept: application/vnd.oci.image.manifest.v1+json
    Content-Type: application/vnd.oci.image.manifest.v1+json
    User-Agent: distribution-spec-conformance-tests
~~~ RESPONSE ~~~
STATUS       : 406 Not Acceptable
sudo-bmitch commented 1 year ago

It's not something I think we want to check in tests, and I'd expect the response to a PUT to be different from the body of the request. That makes me think it's a bug in resty.

sudo-bmitch commented 1 year ago

@jdolitsky PTAL

jdolitsky commented 1 year ago

Looks like something we may be able to fix using SetPreRequestHook https://github.com/go-resty/resty/blob/cf2d4c4212b78f4b4848afe74d89a73e5980f769/client.go#L549