Support for custom mime types
cakejelly opened this issue · comments
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:
Lines 21 to 28 in f77fde8
application/vnd.apiname.v1+json
, so it never matches.
Do you have any suggestions on how I could workaround this?
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