PSPDFKit-labs / bypass

Bypass provides a quick way to create a custom plug that can be put in place instead of an actual HTTP server to return prebaked responses to client requests.
https://hex.pm/packages/bypass
MIT License
964 stars 111 forks source link

Can Bypass be used for API calls that use Digest Auth? #84

Open ggwc82 opened 4 years ago

ggwc82 commented 4 years ago

I'm trying to use Bypass in my tests to return two different responses in quick succession. The only difference between the two requests is the Authentication headers; I may be wrong, but from reading the docs it doesn't look like Bypass differentiates responses based on this?

The reason for this is because the API I'm trying to test an API that relies on Digest Authentication, where an initial call to the endpoint returns a 401 Unauthorized with a nonce and realm. The second call involves using this nonce and realm, along with credentials to authenticate, after which a 200/201 is returned.

Is this something I can test with Bypass, or should I use something like Mox instead?

VitorTrin commented 4 years ago

You could let the bypass expect both requests in the same Bypass.expect, and inside the function differentiate based on the header using something like

if Conn.get_req_header( ...) == ....
  resp(200, ...
else
  resp(401, ...
end
ream88 commented 4 years ago

As this happened to myself as well, I think we should include a proper example in the Readme.

/cc @MSch