americanexpress / parrot

✨ Scenario-based HTTP mocking
Apache License 2.0
138 stars 30 forks source link

Add ability to use function for status #101

Open smackfu opened 3 years ago

smackfu commented 3 years ago

For more complex mocks, parrot supports passing a function as the body, which can be matched against the request object to return different responses.

See: https://github.com/americanexpress/parrot/blob/main/packages/parrot-core/src/utils/resolveResponse.js#L31

There are use-cases where it would be convenient to return a different http status code for different requests to the same endpoint.

Currently the status field does not support being passed a function:

RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: () => 200
    at ServerResponse.writeHead (_http_server.js:248:11)
    at ServerResponse._implicitHeader (_http_server.js:239:8)
    at write_ (_http_outgoing.js:654:9)
    at ServerResponse.end (_http_outgoing.js:766:5)
github-actions[bot] commented 3 years ago

Thanks for opening your first issue. Pull requests are always welcome!

github-actions[bot] commented 3 years ago

This issue is stale because it has been open 30 days with no activity.

ghost commented 3 years ago

Sorry for the late response on this.

I think it would be good to support this but I'm not sure if having the response body and status both be function is the right way to do it. Should the response itself be a function from which you could return the body and status? I'm definitely open to suggestions.