faraday 0.8.11 → 0.9.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +6 -0
- data/CONTRIBUTING.md +36 -0
- data/Gemfile +7 -6
- data/LICENSE.md +1 -1
- data/README.md +38 -51
- data/Rakefile +2 -18
- data/faraday.gemspec +34 -0
- data/lib/faraday.rb +181 -67
- data/lib/faraday/adapter.rb +19 -34
- data/lib/faraday/adapter/em_http.rb +24 -10
- data/lib/faraday/adapter/em_synchrony.rb +1 -15
- data/lib/faraday/adapter/excon.rb +6 -12
- data/lib/faraday/adapter/httpclient.rb +92 -0
- data/lib/faraday/adapter/net_http.rb +2 -3
- data/lib/faraday/adapter/net_http_persistent.rb +3 -15
- data/lib/faraday/adapter/patron.rb +13 -21
- data/lib/faraday/adapter/rack.rb +0 -2
- data/lib/faraday/adapter/test.rb +35 -36
- data/lib/faraday/adapter/typhoeus.rb +10 -12
- data/lib/faraday/autoload.rb +87 -0
- data/lib/faraday/connection.rb +196 -99
- data/lib/faraday/error.rb +33 -33
- data/lib/faraday/options.rb +215 -0
- data/lib/faraday/parameters.rb +193 -0
- data/lib/faraday/{builder.rb → rack_builder.rb} +78 -21
- data/lib/faraday/request.rb +12 -25
- data/lib/faraday/request/authorization.rb +3 -3
- data/lib/faraday/request/basic_authentication.rb +1 -1
- data/lib/faraday/request/instrumentation.rb +38 -0
- data/lib/faraday/request/multipart.rb +10 -9
- data/lib/faraday/request/retry.rb +70 -6
- data/lib/faraday/request/token_authentication.rb +2 -2
- data/lib/faraday/request/url_encoded.rb +7 -6
- data/lib/faraday/response.rb +17 -22
- data/lib/faraday/response/logger.rb +4 -4
- data/lib/faraday/response/raise_error.rb +4 -5
- data/lib/faraday/utils.rb +54 -67
- data/script/console +7 -0
- data/script/release +6 -3
- data/script/server +3 -1
- data/script/test +7 -33
- data/test/adapters/em_http_test.rb +6 -1
- data/test/adapters/em_synchrony_test.rb +7 -1
- data/test/adapters/excon_test.rb +0 -7
- data/test/adapters/httpclient_test.rb +16 -0
- data/test/adapters/integration.rb +8 -39
- data/test/adapters/logger_test.rb +1 -1
- data/test/adapters/net_http_test.rb +0 -31
- data/test/adapters/patron_test.rb +1 -1
- data/test/adapters/rack_test.rb +0 -5
- data/test/adapters/test_middleware_test.rb +19 -4
- data/test/adapters/typhoeus_test.rb +20 -3
- data/test/authentication_middleware_test.rb +7 -7
- data/test/connection_test.rb +52 -75
- data/test/env_test.rb +33 -24
- data/test/helper.rb +15 -13
- data/test/live_server.rb +10 -4
- data/test/middleware/instrumentation_test.rb +75 -0
- data/test/middleware/retry_test.rb +44 -38
- data/test/middleware_stack_test.rb +12 -11
- data/test/options_test.rb +126 -0
- data/test/request_middleware_test.rb +17 -7
- data/test/response_middleware_test.rb +2 -4
- data/test/strawberry.rb +2 -0
- metadata +82 -28
- checksums.yaml +0 -7
- data/script/proxy-server +0 -41
- data/test/multibyte.txt +0 -1
- data/test/parameters_test.rb +0 -24
- data/test/utils_test.rb +0 -30
@@ -8,8 +8,13 @@ module Adapters
|
|
8
8
|
Integration.apply(self, :Parallel) do
|
9
9
|
# https://github.com/eventmachine/eventmachine/pull/289
|
10
10
|
undef :test_timeout
|
11
|
+
|
12
|
+
def test_binds_local_socket
|
13
|
+
host = '1.2.3.4'
|
14
|
+
conn = create_connection :request => { :bind => { :host => host } }
|
15
|
+
assert_equal host, conn.options[:bind][:host]
|
16
|
+
end
|
11
17
|
end unless jruby? and ssl_mode?
|
12
18
|
# https://github.com/eventmachine/eventmachine/issues/180
|
13
|
-
|
14
19
|
end
|
15
20
|
end
|
@@ -8,7 +8,13 @@ module Adapters
|
|
8
8
|
Integration.apply(self, :Parallel) do
|
9
9
|
# https://github.com/eventmachine/eventmachine/pull/289
|
10
10
|
undef :test_timeout
|
11
|
-
end unless RUBY_VERSION < '1.9' or jruby?
|
12
11
|
|
12
|
+
def test_binds_local_socket
|
13
|
+
host = '1.2.3.4'
|
14
|
+
conn = create_connection :request => { :bind => { :host => host } }
|
15
|
+
#put conn.get('/who-am-i').body
|
16
|
+
assert_equal host, conn.options[:bind][:host]
|
17
|
+
end
|
18
|
+
end unless RUBY_VERSION < '1.9' or jruby?
|
13
19
|
end
|
14
20
|
end
|
data/test/adapters/excon_test.rb
CHANGED
@@ -8,13 +8,6 @@ module Adapters
|
|
8
8
|
Integration.apply(self, :NonParallel) do
|
9
9
|
# https://github.com/geemus/excon/issues/126 ?
|
10
10
|
undef :test_timeout if ssl_mode?
|
11
|
-
|
12
|
-
# Excon lets OpenSSL::SSL::SSLError be raised without any way to
|
13
|
-
# distinguish whether it happened because of a 407 proxy response
|
14
|
-
undef :test_proxy_auth_fail if ssl_mode?
|
15
|
-
|
16
|
-
# https://github.com/geemus/excon/issues/358
|
17
|
-
undef :test_connection_error if RUBY_VERSION >= '2.1.0'
|
18
11
|
end
|
19
12
|
end
|
20
13
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path('../integration', __FILE__)
|
2
|
+
|
3
|
+
module Adapters
|
4
|
+
class HttpclientTest < Faraday::TestCase
|
5
|
+
|
6
|
+
def adapter() :httpclient end
|
7
|
+
|
8
|
+
Integration.apply(self, :NonParallel) do
|
9
|
+
def test_binds_local_socket
|
10
|
+
host = '1.2.3.4'
|
11
|
+
conn = create_connection :request => { :bind => { :host => host } }
|
12
|
+
assert_equal host, conn.options[:bind][:host]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'forwardable'
|
2
2
|
require File.expand_path("../../helper", __FILE__)
|
3
|
+
Faraday.require_lib 'autoload'
|
3
4
|
|
4
5
|
module Adapters
|
5
6
|
# Adapter integration tests. To use, implement two methods:
|
@@ -57,7 +58,7 @@ module Adapters
|
|
57
58
|
module Compression
|
58
59
|
def test_GET_handles_compression
|
59
60
|
res = get('echo_header', :name => 'accept-encoding')
|
60
|
-
assert_match
|
61
|
+
assert_match /gzip;.+\bdeflate\b/, res.body
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
@@ -117,7 +118,7 @@ module Adapters
|
|
117
118
|
resp = post('file') do |req|
|
118
119
|
req.body = {'uploaded_file' => Faraday::UploadIO.new(__FILE__, 'text/x-ruby')}
|
119
120
|
end
|
120
|
-
assert_equal "file integration.rb text/x-ruby
|
121
|
+
assert_equal "file integration.rb text/x-ruby", resp.body
|
121
122
|
end
|
122
123
|
|
123
124
|
def test_PUT_send_url_encoded_params
|
@@ -143,8 +144,7 @@ module Adapters
|
|
143
144
|
end
|
144
145
|
|
145
146
|
def test_HEAD_retrieves_no_response_body
|
146
|
-
|
147
|
-
assert_equal '', head('echo').body.to_s
|
147
|
+
assert_equal '', head('echo').body
|
148
148
|
end
|
149
149
|
|
150
150
|
def test_HEAD_retrieves_the_response_headers
|
@@ -161,45 +161,14 @@ module Adapters
|
|
161
161
|
|
162
162
|
def test_timeout
|
163
163
|
conn = create_connection(:request => {:timeout => 1, :open_timeout => 1})
|
164
|
-
|
164
|
+
assert_raises Faraday::Error::TimeoutError do
|
165
165
|
conn.get '/slow'
|
166
166
|
end
|
167
167
|
end
|
168
168
|
|
169
|
-
def
|
170
|
-
|
171
|
-
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
def test_proxy
|
176
|
-
proxy_uri = URI(ENV['LIVE_PROXY'])
|
177
|
-
conn = create_connection(:proxy => proxy_uri)
|
178
|
-
|
179
|
-
res = conn.get '/echo'
|
180
|
-
assert_equal 'get', res.body
|
181
|
-
|
182
|
-
unless self.class.ssl_mode?
|
183
|
-
# proxy can't append "Via" header for HTTPS responses
|
184
|
-
assert_match(/:#{proxy_uri.port}$/, res['via'])
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
def test_proxy_auth_fail
|
189
|
-
proxy_uri = URI(ENV['LIVE_PROXY'])
|
190
|
-
proxy_uri.password = 'WRONG'
|
191
|
-
conn = create_connection(:proxy => proxy_uri)
|
192
|
-
|
193
|
-
err = assert_raise Faraday::Error::ConnectionFailed do
|
194
|
-
conn.get '/echo'
|
195
|
-
end
|
196
|
-
|
197
|
-
unless self.class.ssl_mode? && (self.class.jruby? ||
|
198
|
-
adapter == :em_http || adapter == :em_synchrony)
|
199
|
-
# JRuby raises "End of file reached" which cannot be distinguished from a 407
|
200
|
-
# EM raises "connection closed by server" due to https://github.com/igrigorik/em-socksify/pull/19
|
201
|
-
assert_equal %{407 "Proxy Authentication Required "}, err.message
|
202
|
-
end
|
169
|
+
def test_empty_body_response_represented_as_blank_string
|
170
|
+
response = get('204')
|
171
|
+
assert_equal '', response.body
|
203
172
|
end
|
204
173
|
|
205
174
|
def adapter
|
@@ -1,6 +1,4 @@
|
|
1
1
|
require File.expand_path('../integration', __FILE__)
|
2
|
-
require 'ostruct'
|
3
|
-
require 'uri'
|
4
2
|
|
5
3
|
module Adapters
|
6
4
|
class NetHttpTest < Faraday::TestCase
|
@@ -12,34 +10,5 @@ module Adapters
|
|
12
10
|
|
13
11
|
Integration.apply(self, *behaviors)
|
14
12
|
|
15
|
-
def test_no_explicit_http_port_number
|
16
|
-
url = URI('http://example.com')
|
17
|
-
url.port = nil
|
18
|
-
|
19
|
-
adapter = Faraday::Adapter::NetHttp.new
|
20
|
-
http = adapter.net_http_connection(:url => url, :request => {})
|
21
|
-
|
22
|
-
assert_equal 80, http.port
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_no_explicit_https_port_number
|
26
|
-
url = URI('https://example.com')
|
27
|
-
url.port = nil
|
28
|
-
|
29
|
-
adapter = Faraday::Adapter::NetHttp.new
|
30
|
-
http = adapter.net_http_connection(:url => url, :request => {})
|
31
|
-
|
32
|
-
assert_equal 443, http.port
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_explicit_port_number
|
36
|
-
url = URI('https://example.com:1234')
|
37
|
-
|
38
|
-
adapter = Faraday::Adapter::NetHttp.new
|
39
|
-
http = adapter.net_http_connection(:url => url, :request => {})
|
40
|
-
|
41
|
-
assert_equal 1234, http.port
|
42
|
-
end
|
43
|
-
|
44
13
|
end
|
45
14
|
end
|
data/test/adapters/rack_test.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
require File.expand_path(
|
1
|
+
require File.expand_path('../../helper', __FILE__)
|
2
2
|
|
3
3
|
module Adapters
|
4
4
|
class TestMiddleware < Faraday::TestCase
|
5
|
+
Stubs = Faraday::Adapter.lookup_middleware(:test)::Stubs
|
5
6
|
def setup
|
6
|
-
@stubs =
|
7
|
+
@stubs = Stubs.new
|
7
8
|
@conn = Faraday.new do |builder|
|
8
9
|
builder.adapter :test, @stubs
|
9
10
|
end
|
@@ -36,11 +37,18 @@ module Adapters
|
|
36
37
|
@stubs.get('/optional?a=1') { [200, {}, 'a'] }
|
37
38
|
assert_equal 'a', @conn.get('/optional?a=1&b=1').body
|
38
39
|
assert_equal 'a', @conn.get('/optional?a=1').body
|
39
|
-
|
40
|
+
assert_raises Faraday::Adapter::Test::Stubs::NotFound do
|
40
41
|
@conn.get('/optional')
|
41
42
|
end
|
42
43
|
end
|
43
44
|
|
45
|
+
def test_middleware_with_http_headers
|
46
|
+
@stubs.get('/yo', { 'X-HELLO' => 'hello' }) { [200, {}, 'a'] }
|
47
|
+
@stubs.get('/yo') { [200, {}, 'b'] }
|
48
|
+
assert_equal 'a', @conn.get('/yo') { |env| env.headers['X-HELLO'] = 'hello' }.body
|
49
|
+
assert_equal 'b', @conn.get('/yo').body
|
50
|
+
end
|
51
|
+
|
44
52
|
def test_middleware_allow_different_outcomes_for_the_same_request
|
45
53
|
@stubs.get('/hello') { [200, {'Content-Type' => 'text/html'}, 'hello'] }
|
46
54
|
@stubs.get('/hello') { [200, {'Content-Type' => 'text/html'}, 'world'] }
|
@@ -62,9 +70,16 @@ module Adapters
|
|
62
70
|
end
|
63
71
|
|
64
72
|
def test_raises_an_error_if_no_stub_is_found_for_request
|
65
|
-
|
73
|
+
assert_raises Stubs::NotFound do
|
66
74
|
@conn.get('/invalid'){ [200, {}, []] }
|
67
75
|
end
|
68
76
|
end
|
77
|
+
|
78
|
+
def test_raises_an_error_if_no_stub_is_found_for_request_without_this_header
|
79
|
+
@stubs.get('/yo', { 'X-HELLO' => 'hello' }) { [200, {}, 'a'] }
|
80
|
+
assert_raises Faraday::Adapter::Test::Stubs::NotFound do
|
81
|
+
@conn.get('/yo')
|
82
|
+
end
|
83
|
+
end
|
69
84
|
end
|
70
85
|
end
|
@@ -13,9 +13,26 @@ module Adapters
|
|
13
13
|
# which libcurl seems to generate for this particular request:
|
14
14
|
undef :test_POST_sends_files
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
def test_binds_local_socket
|
17
|
+
host = '1.2.3.4'
|
18
|
+
conn = create_connection :request => { :bind => { :host => host } }
|
19
|
+
assert_equal host, conn.options[:bind][:host]
|
20
|
+
end
|
19
21
|
|
22
|
+
def test_GET_ssl_rejects_bad_hosts
|
23
|
+
original_ssl_file = ENV['SSL_FILE']
|
24
|
+
begin
|
25
|
+
ENV['SSL_FILE'] = 'tmp/faraday-different-ca-cert.crt'
|
26
|
+
conn = create_connection
|
27
|
+
expected = ''
|
28
|
+
response = conn.get('/ssl')
|
29
|
+
assert_equal expected, response.body
|
30
|
+
ensure
|
31
|
+
ENV['SSL_FILE'] = original_ssl_file
|
32
|
+
end
|
33
|
+
end if ssl_mode?
|
34
|
+
|
35
|
+
end unless jruby?
|
20
36
|
end
|
21
37
|
end
|
38
|
+
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.expand_path(
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
2
|
|
3
3
|
class AuthenticationMiddlewareTest < Faraday::TestCase
|
4
4
|
def conn
|
@@ -37,9 +37,9 @@ class AuthenticationMiddlewareTest < Faraday::TestCase
|
|
37
37
|
response = conn { |b|
|
38
38
|
b.request :token_auth, 'baz', :foo => 42
|
39
39
|
}.get('/auth-echo')
|
40
|
-
assert_match
|
41
|
-
assert_match
|
42
|
-
assert_match
|
40
|
+
assert_match /^Token /, response.body
|
41
|
+
assert_match /token="baz"/, response.body
|
42
|
+
assert_match /foo="42"/, response.body
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_token_middleware_does_not_interfere_with_existing_authorization
|
@@ -52,14 +52,14 @@ class AuthenticationMiddlewareTest < Faraday::TestCase
|
|
52
52
|
response = conn { |b|
|
53
53
|
b.request :authorization, 'custom', 'abc def'
|
54
54
|
}.get('/auth-echo')
|
55
|
-
assert_match
|
55
|
+
assert_match /^custom abc def$/, response.body
|
56
56
|
end
|
57
57
|
|
58
58
|
def test_authorization_middleware_with_hash
|
59
59
|
response = conn { |b|
|
60
60
|
b.request :authorization, 'baz', :foo => 42
|
61
61
|
}.get('/auth-echo')
|
62
|
-
assert_match
|
63
|
-
assert_match
|
62
|
+
assert_match /^baz /, response.body
|
63
|
+
assert_match /foo="42"/, response.body
|
64
64
|
end
|
65
65
|
end
|
data/test/connection_test.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
-
require File.expand_path(
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
2
|
require 'uri'
|
3
3
|
|
4
4
|
class TestConnection < Faraday::TestCase
|
5
5
|
|
6
|
+
def teardown
|
7
|
+
Faraday::Utils.default_params_encoder = nil
|
8
|
+
end
|
9
|
+
|
6
10
|
def with_env(key, proxy)
|
7
11
|
old_value = ENV.fetch(key, false)
|
8
12
|
ENV[key] = proxy
|
@@ -191,6 +195,19 @@ class TestConnection < Faraday::TestCase
|
|
191
195
|
assert_equal "a%5Bb%5D=c", uri.query
|
192
196
|
end
|
193
197
|
|
198
|
+
def test_build_url_bracketizes_repeated_params_in_query
|
199
|
+
conn = Faraday::Connection.new
|
200
|
+
uri = conn.build_url("http://sushi.com/sake.html", 'a' => [1, 2])
|
201
|
+
assert_equal "a%5B%5D=1&a%5B%5D=2", uri.query
|
202
|
+
end
|
203
|
+
|
204
|
+
def test_build_url_without_braketizing_repeated_params_in_query
|
205
|
+
conn = Faraday::Connection.new
|
206
|
+
conn.options.params_encoder = Faraday::FlatParamsEncoder
|
207
|
+
uri = conn.build_url("http://sushi.com/sake.html", 'a' => [1, 2])
|
208
|
+
assert_equal "a=1&a=2", uri.query
|
209
|
+
end
|
210
|
+
|
194
211
|
def test_build_url_parses_url
|
195
212
|
conn = Faraday::Connection.new
|
196
213
|
uri = conn.build_url("http://sushi.com/sake.html")
|
@@ -212,26 +229,11 @@ class TestConnection < Faraday::TestCase
|
|
212
229
|
assert_equal '/sake.html', uri.path
|
213
230
|
end
|
214
231
|
|
215
|
-
def test_request_header_change_does_not_modify_connection_header
|
216
|
-
connection = Faraday.new(:url => "https://asushi.com/sake.html")
|
217
|
-
connection.headers = { "Authorization"=>"token abc123" }
|
218
|
-
|
219
|
-
request = connection.build_request(:get)
|
220
|
-
request.headers.delete("Authorization")
|
221
|
-
|
222
|
-
assert_equal connection.headers.keys.sort, ["Authorization"]
|
223
|
-
assert connection.headers.include?("Authorization")
|
224
|
-
|
225
|
-
assert_equal request.headers.keys.sort, []
|
226
|
-
assert !request.headers.include?("Authorization")
|
227
|
-
end
|
228
|
-
|
229
232
|
def test_proxy_accepts_string
|
230
233
|
with_env 'http_proxy', "http://duncan.proxy.com:80" do
|
231
234
|
conn = Faraday::Connection.new
|
232
235
|
conn.proxy 'http://proxy.com'
|
233
|
-
assert_equal 'proxy.com', conn.proxy
|
234
|
-
assert_equal [:uri], conn.proxy.keys
|
236
|
+
assert_equal 'proxy.com', conn.proxy.host
|
235
237
|
end
|
236
238
|
end
|
237
239
|
|
@@ -239,8 +241,7 @@ class TestConnection < Faraday::TestCase
|
|
239
241
|
with_env 'http_proxy', "http://duncan.proxy.com:80" do
|
240
242
|
conn = Faraday::Connection.new
|
241
243
|
conn.proxy URI.parse('http://proxy.com')
|
242
|
-
assert_equal 'proxy.com', conn.proxy
|
243
|
-
assert_equal [:uri], conn.proxy.keys
|
244
|
+
assert_equal 'proxy.com', conn.proxy.host
|
244
245
|
end
|
245
246
|
end
|
246
247
|
|
@@ -248,8 +249,8 @@ class TestConnection < Faraday::TestCase
|
|
248
249
|
with_env 'http_proxy', "http://duncan.proxy.com:80" do
|
249
250
|
conn = Faraday::Connection.new
|
250
251
|
conn.proxy :uri => 'http://proxy.com', :user => 'rick'
|
251
|
-
assert_equal 'proxy.com', conn.proxy
|
252
|
-
assert_equal 'rick', conn.proxy
|
252
|
+
assert_equal 'proxy.com', conn.proxy.host
|
253
|
+
assert_equal 'rick', conn.proxy.user
|
253
254
|
end
|
254
255
|
end
|
255
256
|
|
@@ -257,59 +258,23 @@ class TestConnection < Faraday::TestCase
|
|
257
258
|
with_env 'http_proxy', "http://duncan.proxy.com:80" do
|
258
259
|
conn = Faraday::Connection.new
|
259
260
|
conn.proxy :uri => URI.parse('http://proxy.com'), :user => 'rick'
|
260
|
-
assert_equal 'proxy.com', conn.proxy
|
261
|
-
assert_equal 'rick', conn.proxy
|
261
|
+
assert_equal 'proxy.com', conn.proxy.host
|
262
|
+
assert_equal 'rick', conn.proxy.user
|
262
263
|
end
|
263
264
|
end
|
264
265
|
|
265
266
|
def test_proxy_accepts_http_env
|
266
267
|
with_env 'http_proxy', "http://duncan.proxy.com:80" do
|
267
268
|
conn = Faraday::Connection.new
|
268
|
-
assert_equal 'duncan.proxy.com', conn.proxy
|
269
|
+
assert_equal 'duncan.proxy.com', conn.proxy.host
|
269
270
|
end
|
270
271
|
end
|
271
272
|
|
272
273
|
def test_proxy_accepts_http_env_with_auth
|
273
274
|
with_env 'http_proxy', "http://a%40b:my%20pass@duncan.proxy.com:80" do
|
274
275
|
conn = Faraday::Connection.new
|
275
|
-
assert_equal 'a@b', conn.proxy
|
276
|
-
assert_equal 'my pass', conn.proxy
|
277
|
-
end
|
278
|
-
end
|
279
|
-
|
280
|
-
def test_proxy_accepts_env_without_scheme
|
281
|
-
with_env 'http_proxy', "localhost:8888" do
|
282
|
-
uri = Faraday::Connection.new.proxy[:uri]
|
283
|
-
assert_equal 'localhost', uri.host
|
284
|
-
assert_equal 8888, uri.port
|
285
|
-
end
|
286
|
-
end
|
287
|
-
|
288
|
-
def test_no_proxy_from_env
|
289
|
-
with_env 'http_proxy', nil do
|
290
|
-
conn = Faraday::Connection.new
|
291
|
-
assert_equal nil, conn.proxy
|
292
|
-
end
|
293
|
-
end
|
294
|
-
|
295
|
-
def test_no_proxy_from_blank_env
|
296
|
-
with_env 'http_proxy', '' do
|
297
|
-
conn = Faraday::Connection.new
|
298
|
-
assert_equal nil, conn.proxy
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
def test_proxy_doesnt_accept_uppercase_env
|
303
|
-
with_env 'HTTP_PROXY', "http://localhost:8888/" do
|
304
|
-
conn = Faraday::Connection.new
|
305
|
-
assert_nil conn.proxy
|
306
|
-
end
|
307
|
-
end
|
308
|
-
|
309
|
-
def test_proxy_requires_uri
|
310
|
-
conn = Faraday::Connection.new
|
311
|
-
assert_raises ArgumentError do
|
312
|
-
conn.proxy :uri => :bad_uri, :user => 'rick'
|
276
|
+
assert_equal 'a@b', conn.proxy.user
|
277
|
+
assert_equal 'my pass', conn.proxy.password
|
313
278
|
end
|
314
279
|
end
|
315
280
|
|
@@ -317,8 +282,7 @@ class TestConnection < Faraday::TestCase
|
|
317
282
|
conn = Faraday::Connection.new 'http://sushi.com/foo',
|
318
283
|
:ssl => { :verify => :none },
|
319
284
|
:headers => {'content-type' => 'text/plain'},
|
320
|
-
:params => {'a'=>'1'}
|
321
|
-
:request => {:timeout => 5}
|
285
|
+
:params => {'a'=>'1'}
|
322
286
|
|
323
287
|
other = conn.dup
|
324
288
|
|
@@ -329,14 +293,11 @@ class TestConnection < Faraday::TestCase
|
|
329
293
|
other.basic_auth('', '')
|
330
294
|
other.headers['content-length'] = 12
|
331
295
|
other.params['b'] = '2'
|
332
|
-
other.options[:open_timeout] = 10
|
333
296
|
|
334
297
|
assert_equal 2, other.builder.handlers.size
|
335
298
|
assert_equal 2, conn.builder.handlers.size
|
336
299
|
assert !conn.headers.key?('content-length')
|
337
300
|
assert !conn.params.key?('b')
|
338
|
-
assert_equal 5, other.options[:timeout]
|
339
|
-
assert_nil conn.options[:open_timeout]
|
340
301
|
end
|
341
302
|
|
342
303
|
def test_init_with_block
|
@@ -359,20 +320,13 @@ class TestRequestParams < Faraday::TestCase
|
|
359
320
|
def create_connection(*args)
|
360
321
|
@conn = Faraday::Connection.new(*args) do |conn|
|
361
322
|
yield conn if block_given?
|
362
|
-
class << conn
|
323
|
+
class << conn.builder
|
363
324
|
undef app
|
364
325
|
def app() lambda { |env| env } end
|
365
326
|
end
|
366
327
|
end
|
367
328
|
end
|
368
329
|
|
369
|
-
def get(*args)
|
370
|
-
env = @conn.get(*args) do |req|
|
371
|
-
yield req if block_given?
|
372
|
-
end
|
373
|
-
env[:url].query
|
374
|
-
end
|
375
|
-
|
376
330
|
def assert_query_equal(expected, query)
|
377
331
|
assert_equal expected, query.split('&').sort
|
378
332
|
end
|
@@ -433,14 +387,37 @@ class TestRequestParams < Faraday::TestCase
|
|
433
387
|
end
|
434
388
|
|
435
389
|
def test_array_params_in_url
|
390
|
+
Faraday::Utils.default_params_encoder = nil
|
436
391
|
create_connection 'http://a.co/page1?color[]=red&color[]=blue'
|
437
392
|
query = get
|
438
393
|
assert_equal "color%5B%5D=red&color%5B%5D=blue", query
|
439
394
|
end
|
440
395
|
|
441
396
|
def test_array_params_in_params
|
397
|
+
Faraday::Utils.default_params_encoder = nil
|
442
398
|
create_connection 'http://a.co/page1', :params => {:color => ['red', 'blue']}
|
443
399
|
query = get
|
444
400
|
assert_equal "color%5B%5D=red&color%5B%5D=blue", query
|
445
401
|
end
|
402
|
+
|
403
|
+
def test_array_params_in_url_with_flat_params
|
404
|
+
Faraday::Utils.default_params_encoder = Faraday::FlatParamsEncoder
|
405
|
+
create_connection 'http://a.co/page1?color=red&color=blue'
|
406
|
+
query = get
|
407
|
+
assert_equal "color=red&color=blue", query
|
408
|
+
end
|
409
|
+
|
410
|
+
def test_array_params_in_params_with_flat_params
|
411
|
+
Faraday::Utils.default_params_encoder = Faraday::FlatParamsEncoder
|
412
|
+
create_connection 'http://a.co/page1', :params => {:color => ['red', 'blue']}
|
413
|
+
query = get
|
414
|
+
assert_equal "color=red&color=blue", query
|
415
|
+
end
|
416
|
+
|
417
|
+
def get(*args)
|
418
|
+
env = @conn.get(*args) do |req|
|
419
|
+
yield req if block_given?
|
420
|
+
end
|
421
|
+
env[:url].query
|
422
|
+
end
|
446
423
|
end
|