Feature - conditional body mapping & API polymorphism#28
Open
srenauld wants to merge 5 commits intolocalmed:masterfrom
Open
Feature - conditional body mapping & API polymorphism#28srenauld wants to merge 5 commits intolocalmed:masterfrom
srenauld wants to merge 5 commits intolocalmed:masterfrom
Conversation
added 5 commits
February 19, 2015 18:04
This addition to api-mock allows conditional matching of request bodies in examples. In its simplest form,
it will determine which request payload (body+header combo) matches the request received through express, and
return the response payload from it.
If it fails to find one, it returns the last defined payload.
In addition to this, it still fully honours Prefer header, providing backward-compatibility with the original
api-mock.
Use this if you would like to define routes such as
# /v5/test{?foo,bar}
## Test [GET]
+ Request
+ Body
{
foo: bar
}
+ Response 200 (application/json)
+
+ Body
{ baz: true}
+ Response 404 (application/json)
This UT covers the new methods to build an express handler aggregate from multiple payloads, and to conditionally match headers and body returns.
- Now also mixes in the route parameters defined in express - Now also properly handles the Prefer header again
Contributor
|
The code looks great and I appreciate the solid tests along with it.
Can you explain the reasoning behind this? I'm not sure why this would be a desirable default behavior (and in particular I'm having trouble seeing how it helps "create a feature-rich, scenario-based API mock"). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This MR adds the ability to conditionally respond to an API call in a way other than by passing
Preferheaders. In practice, it enables a developer to use examples described in an API blueprint to create a feature-rich, scenario-based API mock.Each request is now conditionally checked for the following:
Bodyis present, thisBodyis compared with the request body (this also takes into account JSON, if headers are set to the rightcontent-type)Headeris present, this is compared with the request headerIf a
Requestmatches bothBodyandHeader, api-mock returns the associated response.If nothing matched, by specification, api-mock returns the last defined response.
If a
Preferheader is passed, it is taken into account as usual and the behaviour remains unchanged.Unit-tests are updated to reflect this, with a coverage of 100%.