Closed cakejelly closed 3 years ago
This is a hard limitation, but ideally, the matcher should also accept potentially text-based MIME types or explicitly defined text-based MIME types via a new API mock method, e.g: mock.BodyTypes("application/vnd.apiname.v1+json")
Would you like to send a PR? That would possibly be the faster way to proceed forward.
@h2non Thanks for the quick reply. After submitting the issue I discovered the ability to add custom matchers, which allowed me to workaround this limitation pretty easily. I think the new method you're suggesting would be a nice addition though and I'd be happy to submit a PR.
If I understand your suggestion correctly, this new method would be used in conjunction with a body matcher? E.g. something like:
gock.New("http://foo.com").
Post("/bar").
BodyTypes("application/vnd.apiname.v1+json").
BodyString(`{"foo": "bar"}`).
Reply(200).
JSON(map[string]string{"foo": "bar"})
That's exactly it. Happy to review and merge the PR!
Closing as this is fixed now
https://github.com/h2non/gock/pull/88 https://github.com/h2non/gock/releases/tag/v1.1.1
I'm having trouble trying to write a mock that matches POST requests based on the request body and the issue seems to be a result of gock being a bit too strict when it comes to validating mime types.
From reading the source code I noticed that gock checks to see if the request content type header value matches a fixed list of supported mime types: https://github.com/h2non/gock/blob/f77fde839b2a8bd6e8de3e89f2a47a2baa1fb6ce/matchers.go#L21-L28 but the problem is that the API i'm writing a mock for uses a custom json mime type like
application/vnd.apiname.v1+json
, so it never matches.Do you have any suggestions on how I could workaround this?