agiley-faraday_middleware 0.8.3.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -2
- data/.rspec +2 -1
- data/.travis.yml +6 -3
- data/Gemfile +5 -1
- data/Rakefile +16 -4
- data/faraday_middleware.gemspec +1 -1
- data/lib/faraday_middleware.rb +17 -13
- data/lib/faraday_middleware/instrumentation.rb +2 -2
- data/lib/faraday_middleware/rack_compatible.rb +14 -9
- data/lib/faraday_middleware/request/encode_json.rb +4 -2
- data/lib/faraday_middleware/request/method_override.rb +51 -0
- data/lib/faraday_middleware/request/oauth.rb +28 -5
- data/lib/faraday_middleware/response/caching.rb +7 -2
- data/lib/faraday_middleware/response/chunked.rb +29 -0
- data/lib/faraday_middleware/response/follow_redirects.rb +100 -11
- data/lib/faraday_middleware/response/mashify.rb +11 -2
- data/lib/faraday_middleware/response/parse_dates.rb +39 -0
- data/lib/faraday_middleware/response/parse_json.rb +17 -5
- data/lib/faraday_middleware/response/parse_marshal.rb +2 -2
- data/lib/faraday_middleware/response/parse_xml.rb +3 -2
- data/lib/faraday_middleware/response/parse_yaml.rb +3 -1
- data/lib/faraday_middleware/response/rashify.rb +2 -0
- data/lib/faraday_middleware/response_middleware.rb +2 -2
- data/lib/faraday_middleware/version.rb +1 -1
- data/spec/caching_test.rb +37 -4
- data/spec/chunked_spec.rb +78 -0
- data/spec/encode_json_spec.rb +13 -13
- data/spec/follow_redirects_spec.rb +203 -18
- data/spec/helper.rb +15 -1
- data/spec/mashify_spec.rb +46 -26
- data/spec/method_override_spec.rb +92 -0
- data/spec/oauth2_spec.rb +18 -18
- data/spec/oauth_spec.rb +67 -17
- data/spec/parse_dates_spec.rb +39 -0
- data/spec/parse_json_spec.rb +37 -19
- data/spec/parse_marshal_spec.rb +3 -3
- data/spec/parse_xml_spec.rb +13 -13
- data/spec/parse_yaml_spec.rb +10 -10
- data/spec/rashify_spec.rb +26 -23
- metadata +78 -21
data/spec/helper.rb
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
if ENV['COVERAGE']
|
2
2
|
require 'simplecov'
|
3
|
+
|
4
|
+
SimpleCov.formatter = Class.new do
|
5
|
+
def format(result)
|
6
|
+
SimpleCov::Formatter::HTMLFormatter.new.format(result) unless ENV['CI']
|
7
|
+
File.open('coverage/covered_percent', 'w') do |f|
|
8
|
+
f.puts result.source_files.covered_percent.to_i
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
3
13
|
SimpleCov.start do
|
4
14
|
# add_filter 'faraday_middleware.rb'
|
5
15
|
add_filter 'backwards_compatibility.rb'
|
@@ -11,6 +21,7 @@ require 'rspec'
|
|
11
21
|
module ResponseMiddlewareExampleGroup
|
12
22
|
def self.included(base)
|
13
23
|
base.let(:options) { Hash.new }
|
24
|
+
base.let(:headers) { Hash.new }
|
14
25
|
base.let(:middleware) {
|
15
26
|
described_class.new(lambda {|env|
|
16
27
|
Faraday::Response.new(env)
|
@@ -21,7 +32,7 @@ module ResponseMiddlewareExampleGroup
|
|
21
32
|
def process(body, content_type = nil, options = {})
|
22
33
|
env = {
|
23
34
|
:body => body, :request => options,
|
24
|
-
:response_headers => Faraday::Utils::Headers.new
|
35
|
+
:response_headers => Faraday::Utils::Headers.new(headers)
|
25
36
|
}
|
26
37
|
env[:response_headers]['content-type'] = content_type if content_type
|
27
38
|
middleware.call(env)
|
@@ -30,4 +41,7 @@ end
|
|
30
41
|
|
31
42
|
RSpec.configure do |config|
|
32
43
|
config.include ResponseMiddlewareExampleGroup, :type => :response
|
44
|
+
config.expect_with :rspec do |c|
|
45
|
+
c.syntax = :expect
|
46
|
+
end
|
33
47
|
end
|
data/spec/mashify_spec.rb
CHANGED
@@ -2,63 +2,80 @@ require 'helper'
|
|
2
2
|
require 'faraday_middleware/response/mashify'
|
3
3
|
|
4
4
|
describe FaradayMiddleware::Mashify do
|
5
|
-
context
|
6
|
-
it
|
7
|
-
described_class.
|
8
|
-
described_class.
|
5
|
+
context "during configuration" do
|
6
|
+
it "allows for a custom Mash class to be set" do
|
7
|
+
expect(described_class).to respond_to(:mash_class)
|
8
|
+
expect(described_class).to respond_to(:mash_class=)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
context
|
12
|
+
context "when used" do
|
13
13
|
before(:each) { described_class.mash_class = ::Hashie::Mash }
|
14
14
|
let(:mashify) { described_class.new }
|
15
15
|
|
16
|
-
it
|
16
|
+
it "creates a Hashie::Mash from the body" do
|
17
17
|
env = { :body => { "name" => "Erik Michaels-Ober", "username" => "sferik" } }
|
18
18
|
me = mashify.on_complete(env)
|
19
|
-
me.class.
|
19
|
+
expect(me.class).to eq(Hashie::Mash)
|
20
20
|
end
|
21
21
|
|
22
|
-
it
|
22
|
+
it "handles strings" do
|
23
23
|
env = { :body => "Most amazing string EVER" }
|
24
24
|
me = mashify.on_complete(env)
|
25
|
-
me.
|
25
|
+
expect(me).to eq("Most amazing string EVER")
|
26
26
|
end
|
27
27
|
|
28
|
-
it
|
28
|
+
it "handles arrays" do
|
29
29
|
env = { :body => [123, 456] }
|
30
30
|
values = mashify.on_complete(env)
|
31
|
-
values.first.
|
32
|
-
values.last.
|
31
|
+
expect(values.first).to eq(123)
|
32
|
+
expect(values.last).to eq(456)
|
33
33
|
end
|
34
34
|
|
35
|
-
it
|
35
|
+
it "handles arrays of hashes" do
|
36
36
|
env = { :body => [{ "username" => "sferik" }, { "username" => "pengwynn" }] }
|
37
37
|
us = mashify.on_complete(env)
|
38
|
-
us.first.username.
|
39
|
-
us.last.username.
|
38
|
+
expect(us.first.username).to eq('sferik')
|
39
|
+
expect(us.last.username).to eq('pengwynn')
|
40
40
|
end
|
41
41
|
|
42
|
-
it
|
42
|
+
it "handles nested arrays of hashes" do
|
43
|
+
env = { :body => [[{ "username" => "sferik" }, { "username" => "pengwynn" }]] }
|
44
|
+
us = mashify.on_complete(env)
|
45
|
+
expect(us.first.first.username).to eq('sferik')
|
46
|
+
expect(us.first.last.username).to eq('pengwynn')
|
47
|
+
end
|
48
|
+
|
49
|
+
it "handles mixed arrays" do
|
43
50
|
env = { :body => [123, { "username" => "sferik" }, 456] }
|
44
51
|
values = mashify.on_complete(env)
|
45
|
-
values.first.
|
46
|
-
values.last.
|
47
|
-
values[1].username.
|
52
|
+
expect(values.first).to eq(123)
|
53
|
+
expect(values.last).to eq(456)
|
54
|
+
expect(values[1].username).to eq('sferik')
|
48
55
|
end
|
49
56
|
|
50
|
-
it
|
57
|
+
it "allows for use of custom Mash subclasses at the class level" do
|
51
58
|
class MyMash < ::Hashie::Mash; end
|
52
59
|
described_class.mash_class = MyMash
|
53
60
|
|
54
61
|
env = { :body => { "name" => "Erik Michaels-Ober", "username" => "sferik" } }
|
55
62
|
me = mashify.on_complete(env)
|
56
63
|
|
57
|
-
me.class.
|
64
|
+
expect(me.class).to eq(MyMash)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "allows for use of custom Mash subclasses at the instance level" do
|
68
|
+
class MyMash < ::Hashie::Mash; end
|
69
|
+
mashify = described_class.new(nil, :mash_class => MyMash)
|
70
|
+
|
71
|
+
env = { :body => { "name" => "Erik Michaels-Ober", "username" => "sferik" } }
|
72
|
+
me = mashify.on_complete(env)
|
73
|
+
|
74
|
+
expect(me.class).to eq(MyMash)
|
58
75
|
end
|
59
76
|
end
|
60
77
|
|
61
|
-
context
|
78
|
+
context "integration test" do
|
62
79
|
let(:stubs) { Faraday::Adapter::Test::Stubs.new }
|
63
80
|
let(:connection) do
|
64
81
|
Faraday::Connection.new do |builder|
|
@@ -69,11 +86,14 @@ describe FaradayMiddleware::Mashify do
|
|
69
86
|
|
70
87
|
# although it is not good practice to pass a hash as the body, if we add ParseJson
|
71
88
|
# to the middleware stack we end up testing two middlewares instead of one
|
72
|
-
it
|
73
|
-
stubs.get('/hash') {
|
89
|
+
it "creates a Hash from the body" do
|
90
|
+
stubs.get('/hash') {
|
91
|
+
data = { 'name' => 'Erik Michaels-Ober', 'username' => 'sferik' }
|
92
|
+
[200, {'content-type' => 'application/json; charset=utf-8'}, data]
|
93
|
+
}
|
74
94
|
me = connection.get('/hash').body
|
75
|
-
me.name.
|
76
|
-
me.username.
|
95
|
+
expect(me.name).to eq('Erik Michaels-Ober')
|
96
|
+
expect(me.username).to eq('sferik')
|
77
97
|
end
|
78
98
|
end
|
79
99
|
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'faraday_middleware/request/method_override'
|
3
|
+
|
4
|
+
describe FaradayMiddleware::MethodOverride do
|
5
|
+
|
6
|
+
let(:middleware) { described_class.new(lambda {|env| env }, *options) }
|
7
|
+
let(:env) { middleware.call request_env(request_method) }
|
8
|
+
|
9
|
+
def request_env(method)
|
10
|
+
{ :method => method,
|
11
|
+
:request_headers => Faraday::Utils::Headers.new
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
shared_examples "overrides method" do |method|
|
16
|
+
it "sets physical method to POST" do
|
17
|
+
expect(env[:method]).to eq(:post)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "sets header to #{method}" do
|
21
|
+
expect(env[:request_headers]['X-Http-Method-Override']).to eq(method)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
shared_examples "doesn't override method" do |method|
|
26
|
+
it "keeps original method" do
|
27
|
+
expect(env[:method]).to eq(method)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "doesn't set header value" do
|
31
|
+
expect(env[:request_headers]).not_to have_key('X-Http-Method-Override')
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
context "with default options" do
|
37
|
+
let(:options) { nil }
|
38
|
+
|
39
|
+
context "GET" do
|
40
|
+
let(:request_method) { :get }
|
41
|
+
include_examples "doesn't override method", :get
|
42
|
+
end
|
43
|
+
|
44
|
+
context "POST" do
|
45
|
+
let(:request_method) { :post }
|
46
|
+
include_examples "doesn't override method", :post
|
47
|
+
end
|
48
|
+
|
49
|
+
context "PUT" do
|
50
|
+
let(:request_method) { :put }
|
51
|
+
include_examples "overrides method", 'PUT'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context "configured to rewrite [:patch, :delete]" do
|
56
|
+
let(:options) { [{ :rewrite => [:patch, :delete] }] }
|
57
|
+
|
58
|
+
context "PUT" do
|
59
|
+
let(:request_method) { :put }
|
60
|
+
include_examples "doesn't override method", :put
|
61
|
+
end
|
62
|
+
|
63
|
+
context "PATCH" do
|
64
|
+
let(:request_method) { :patch }
|
65
|
+
include_examples "overrides method", 'PATCH'
|
66
|
+
end
|
67
|
+
|
68
|
+
context "DELETE" do
|
69
|
+
let(:request_method) { :delete }
|
70
|
+
include_examples "overrides method", 'DELETE'
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context "configured to rewrite ['PATCH']" do
|
75
|
+
let(:options) { [{ :rewrite => %w[PATCH] }] }
|
76
|
+
|
77
|
+
context "PATCH" do
|
78
|
+
let(:request_method) { :patch }
|
79
|
+
include_examples "overrides method", 'PATCH'
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "with invalid option" do
|
84
|
+
let(:options) { [{ :hello => 'world' }] }
|
85
|
+
let(:request_method) { :get }
|
86
|
+
|
87
|
+
it "raises key error" do
|
88
|
+
expect{ env }.to raise_error(IndexError, /key not found/)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
data/spec/oauth2_spec.rb
CHANGED
@@ -31,17 +31,17 @@ describe FaradayMiddleware::OAuth2 do
|
|
31
31
|
|
32
32
|
it "doesn't add params" do
|
33
33
|
request = perform(:q => 'hello')
|
34
|
-
query_params(request).
|
34
|
+
expect(query_params(request)).to eq('q' => 'hello')
|
35
35
|
end
|
36
36
|
|
37
37
|
it "doesn't add headers" do
|
38
|
-
auth_header(perform).
|
38
|
+
expect(auth_header(perform)).to be_nil
|
39
39
|
end
|
40
40
|
|
41
41
|
it "creates header for explicit token" do
|
42
42
|
request = perform(:q => 'hello', :access_token => 'abc123')
|
43
|
-
query_params(request).
|
44
|
-
auth_header(request).
|
43
|
+
expect(query_params(request)).to eq('q' => 'hello', 'access_token' => 'abc123')
|
44
|
+
expect(auth_header(request)).to eq(%(Token token="abc123"))
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -49,23 +49,23 @@ describe FaradayMiddleware::OAuth2 do
|
|
49
49
|
let(:options) { 'XYZ' }
|
50
50
|
|
51
51
|
it "adds token param" do
|
52
|
-
query_params(perform(:q => 'hello')).
|
52
|
+
expect(query_params(perform(:q => 'hello'))).to eq('q' => 'hello', 'access_token' => 'XYZ')
|
53
53
|
end
|
54
54
|
|
55
55
|
it "adds token header" do
|
56
|
-
auth_header(perform).
|
56
|
+
expect(auth_header(perform)).to eq(%(Token token="XYZ"))
|
57
57
|
end
|
58
58
|
|
59
59
|
it "overrides default with explicit token" do
|
60
60
|
request = perform(:q => 'hello', :access_token => 'abc123')
|
61
|
-
query_params(request).
|
62
|
-
auth_header(request).
|
61
|
+
expect(query_params(request)).to eq('q' => 'hello', 'access_token' => 'abc123')
|
62
|
+
expect(auth_header(request)).to eq(%(Token token="abc123"))
|
63
63
|
end
|
64
64
|
|
65
65
|
it "clears default with empty explicit token" do
|
66
66
|
request = perform(:q => 'hello', :access_token => nil)
|
67
|
-
query_params(request).
|
68
|
-
auth_header(request).
|
67
|
+
expect(query_params(request)).to eq('q' => 'hello', 'access_token' => nil)
|
68
|
+
expect(auth_header(request)).to be_nil
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
@@ -74,11 +74,11 @@ describe FaradayMiddleware::OAuth2 do
|
|
74
74
|
subject { perform({:q => 'hello'}, 'Authorization' => 'custom') }
|
75
75
|
|
76
76
|
it "adds token param" do
|
77
|
-
query_params(subject).
|
77
|
+
expect(query_params(subject)).to eq('q' => 'hello', 'access_token' => 'XYZ')
|
78
78
|
end
|
79
79
|
|
80
80
|
it "doesn't override existing header" do
|
81
|
-
auth_header(subject).
|
81
|
+
expect(auth_header(subject)).to eq('custom')
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
@@ -86,13 +86,13 @@ describe FaradayMiddleware::OAuth2 do
|
|
86
86
|
let(:options) { ['XYZ', {:param_name => :oauth}] }
|
87
87
|
|
88
88
|
it "adds token param" do
|
89
|
-
query_params(perform).
|
89
|
+
expect(query_params(perform)).to eq('oauth' => 'XYZ')
|
90
90
|
end
|
91
91
|
|
92
92
|
it "overrides default with explicit token" do
|
93
93
|
request = perform(:oauth => 'abc123')
|
94
|
-
query_params(request).
|
95
|
-
auth_header(request).
|
94
|
+
expect(query_params(request)).to eq('oauth' => 'abc123')
|
95
|
+
expect(auth_header(request)).to eq(%(Token token="abc123"))
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
@@ -100,11 +100,11 @@ describe FaradayMiddleware::OAuth2 do
|
|
100
100
|
let(:options) { [{:param_name => :oauth}] }
|
101
101
|
|
102
102
|
it "doesn't add param" do
|
103
|
-
query_params(perform).
|
103
|
+
expect(query_params(perform)).to be_empty
|
104
104
|
end
|
105
105
|
|
106
106
|
it "overrides default with explicit token" do
|
107
|
-
query_params(perform(:oauth => 'abc123')).
|
107
|
+
expect(query_params(perform(:oauth => 'abc123'))).to eq('oauth' => 'abc123')
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
@@ -112,7 +112,7 @@ describe FaradayMiddleware::OAuth2 do
|
|
112
112
|
let(:options) { ['XYZ', {:param_name => nil}] }
|
113
113
|
|
114
114
|
it "raises error" do
|
115
|
-
expect
|
115
|
+
expect{ make_app }.to raise_error(ArgumentError, ":param_name can't be blank")
|
116
116
|
end
|
117
117
|
end
|
118
118
|
end
|
data/spec/oauth_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'helper'
|
2
2
|
require 'faraday_middleware/request/oauth'
|
3
3
|
require 'uri'
|
4
|
+
require 'forwardable'
|
4
5
|
|
5
6
|
describe FaradayMiddleware::OAuth do
|
6
7
|
def auth_header(env)
|
@@ -14,11 +15,12 @@ describe FaradayMiddleware::OAuth do
|
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
17
|
-
def perform(oauth_options = {}, headers = {})
|
18
|
+
def perform(oauth_options = {}, headers = {}, params = {})
|
18
19
|
env = {
|
19
20
|
:url => URI('http://example.com/'),
|
20
21
|
:request_headers => Faraday::Utils::Headers.new.update(headers),
|
21
|
-
:request => {}
|
22
|
+
:request => {},
|
23
|
+
:body => params
|
22
24
|
}
|
23
25
|
unless oauth_options.is_a? Hash and oauth_options.empty?
|
24
26
|
env[:request][:oauth] = oauth_options
|
@@ -34,21 +36,21 @@ describe FaradayMiddleware::OAuth do
|
|
34
36
|
context "invalid options" do
|
35
37
|
let(:options) { nil }
|
36
38
|
|
37
|
-
it "
|
38
|
-
expect
|
39
|
+
it "errors out" do
|
40
|
+
expect{ make_app }.to raise_error(ArgumentError)
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
42
44
|
context "empty options" do
|
43
45
|
let(:options) { [{}] }
|
44
46
|
|
45
|
-
it "
|
47
|
+
it "signs request" do
|
46
48
|
auth = auth_values(perform)
|
47
49
|
expected_keys = %w[ oauth_nonce
|
48
50
|
oauth_signature oauth_signature_method
|
49
51
|
oauth_timestamp oauth_version ]
|
50
52
|
|
51
|
-
auth.keys.
|
53
|
+
expect(auth.keys).to match_array expected_keys
|
52
54
|
end
|
53
55
|
end
|
54
56
|
|
@@ -65,27 +67,27 @@ describe FaradayMiddleware::OAuth do
|
|
65
67
|
oauth_signature oauth_signature_method
|
66
68
|
oauth_timestamp oauth_token oauth_version ]
|
67
69
|
|
68
|
-
auth.keys.
|
69
|
-
auth['oauth_version'].
|
70
|
-
auth['oauth_signature_method'].
|
71
|
-
auth['oauth_consumer_key'].
|
72
|
-
auth['oauth_token'].
|
70
|
+
expect(auth.keys).to match_array expected_keys
|
71
|
+
expect(auth['oauth_version']).to eq(%("1.0"))
|
72
|
+
expect(auth['oauth_signature_method']).to eq(%("HMAC-SHA1"))
|
73
|
+
expect(auth['oauth_consumer_key']).to eq(%("CKEY"))
|
74
|
+
expect(auth['oauth_token']).to eq(%("TOKEN"))
|
73
75
|
end
|
74
76
|
|
75
77
|
it "doesn't override existing header" do
|
76
78
|
request = perform({}, "Authorization" => "iz me!")
|
77
|
-
auth_header(request).
|
79
|
+
expect(auth_header(request)).to eq("iz me!")
|
78
80
|
end
|
79
81
|
|
80
82
|
it "can override oauth options per-request" do
|
81
83
|
auth = auth_values(perform(:consumer_key => 'CKEY2'))
|
82
84
|
|
83
|
-
auth['oauth_consumer_key'].
|
84
|
-
auth['oauth_token'].
|
85
|
+
expect(auth['oauth_consumer_key']).to eq(%("CKEY2"))
|
86
|
+
expect(auth['oauth_token']).to eq(%("TOKEN"))
|
85
87
|
end
|
86
88
|
|
87
89
|
it "can turn off oauth signing per-request" do
|
88
|
-
auth_header(perform(false)).
|
90
|
+
expect(auth_header(perform(false))).to be_nil
|
89
91
|
end
|
90
92
|
end
|
91
93
|
|
@@ -94,8 +96,56 @@ describe FaradayMiddleware::OAuth do
|
|
94
96
|
|
95
97
|
it "adds auth info to the header" do
|
96
98
|
auth = auth_values(perform)
|
97
|
-
auth.
|
98
|
-
auth.
|
99
|
+
expect(auth).to include('oauth_consumer_key')
|
100
|
+
expect(auth).not_to include('oauth_token')
|
99
101
|
end
|
100
102
|
end
|
103
|
+
|
104
|
+
context "handling body parameters" do
|
105
|
+
let(:options) { [{ :consumer_key => 'CKEY',
|
106
|
+
:consumer_secret => 'CSECRET',
|
107
|
+
:nonce => '547fed103e122eecf84c080843eedfe6',
|
108
|
+
:timestamp => '1286830180'}] }
|
109
|
+
|
110
|
+
let(:value) { {'foo' => 'bar'} }
|
111
|
+
|
112
|
+
let(:type_json) { {'Content-Type' => 'application/json'} }
|
113
|
+
let(:type_form) { {'Content-Type' => 'application/x-www-form-urlencoded'} }
|
114
|
+
|
115
|
+
extend Forwardable
|
116
|
+
query_method = :build_nested_query
|
117
|
+
query_module = ::Faraday::Utils.respond_to?(query_method) ? 'Faraday::Utils' : 'Rack::Utils'
|
118
|
+
def_delegator query_module, query_method
|
119
|
+
|
120
|
+
it "does not include the body for JSON" do
|
121
|
+
auth_header_with = auth_header(perform({}, type_json, '{"foo":"bar"}'))
|
122
|
+
auth_header_without = auth_header(perform({}, type_json, {}))
|
123
|
+
|
124
|
+
expect(auth_header_with).to eq(auth_header_without)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "includes the body parameters with form Content-Type" do
|
128
|
+
auth_header_with = auth_header(perform({}, type_form, {}))
|
129
|
+
auth_header_without = auth_header(perform({}, type_form, value))
|
130
|
+
|
131
|
+
expect(auth_header_with).not_to eq(auth_header_without)
|
132
|
+
end
|
133
|
+
|
134
|
+
it "includes the body parameters with an unspecified Content-Type" do
|
135
|
+
auth_header_with = auth_header(perform({}, {}, value))
|
136
|
+
auth_header_without = auth_header(perform({}, type_form, value))
|
137
|
+
|
138
|
+
expect(auth_header_with).to eq(auth_header_without)
|
139
|
+
end
|
140
|
+
|
141
|
+
it "includes the body parameters for form type with string body" do
|
142
|
+
# simulates the behavior of Faraday::MiddleWare::UrlEncoded
|
143
|
+
value = { 'foo' => ['bar', 'baz', 'wat'] }
|
144
|
+
auth_header_hash = auth_header(perform({}, type_form, value))
|
145
|
+
auth_header_string = auth_header(perform({}, type_form, build_nested_query(value)))
|
146
|
+
expect(auth_header_string).to eq(auth_header_hash)
|
147
|
+
end
|
148
|
+
|
149
|
+
end
|
150
|
+
|
101
151
|
end
|