-
Notifications
You must be signed in to change notification settings - Fork 135
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix hackney adapter to work with :with_body
option.
#79
Merged
Conversation
This file contains 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
There were a couple issues: - `sanitize_options` assumed that every value in `options` is a tuple, but hackney supports some boolean options being specified just as atoms: https://github.com/benoitc/hackney/blob/1.6.3/src/hackney.erl#L1016-L1019 - When `:with_body` is provided, the return value from `:hackney.request/5` has the body as the last element in the tuple instead of the client. These two issues affect both recording and replaying of cassettes, so I added tests for both sides of it.
myronmarston
commented
Nov 1, 2016
@@ -8,6 +8,8 @@ defmodule ExVCR.RecorderHackneyTest do | |||
@url_with_query "http://localhost:#{@port}/server?password=sample" | |||
|
|||
setup_all do | |||
File.rm_rf(@dummy_cassette_dir) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had to add this to get the test I added below to consistently fail w/o my fix applied.
`ExVCR.Adapter.Hackney.Converter.response_to_String` assumes that the 4th tuple element is a client ref, and inspects it as a form of getting a string body. However, when using the `:with_body`, this caused the body to be quoted during playback (e.g. `"foo"` instead of `foo`) since that's what `inspect` does when given a string. The solution is to see what the 4th element is and treat it appropriately.
There's a 3rd issue I found and fixed in the 2nd commit. |
Thanks!! |
FoboCasteR
added a commit
to FoboCasteR/ueberauth_vk
that referenced
this pull request
Jan 28, 2017
Also update exvcr to > 0.8.4. See: parroty/exvcr#79
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.
There were a couple issues:
sanitize_options
assumed that every value inoptions
isa tuple, but hackney supports some boolean options being
specified just as atoms:
https://github.com/benoitc/hackney/blob/1.6.3/src/hackney.erl#L1016-L1019
:with_body
is provided, the return value from:hackney.request/5
has the body as the last elementin the tuple instead of the client.
These two issues affect both recording and replaying of cassettes, so
I added tests for both sides of it.