faraday 0.8.0.rc2 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ require File.expand_path('../integration', __FILE__)
2
+
3
+ module Adapters
4
+ class NetHttpPersistentTest < Faraday::TestCase
5
+
6
+ def adapter() :net_http_persistent end
7
+
8
+ Integration.apply(self, :NonParallel)
9
+
10
+ end
11
+ end
@@ -1,33 +1,49 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'helper'))
1
+ require File.expand_path('../integration', __FILE__)
2
2
 
3
3
  module Adapters
4
4
  class NetHttpTest < Faraday::TestCase
5
- def setup
6
- @connection = Faraday.new('http://disney.com') do |b|
5
+
6
+ def adapter() :net_http end
7
+
8
+ behaviors = [:NonParallel]
9
+ behaviors << :Compression if RUBY_VERSION >= '1.9'
10
+
11
+ Integration.apply(self, *behaviors)
12
+
13
+ def test_connection_errors_get_wrapped
14
+ connection = Faraday.new('http://disney.com') do |b|
7
15
  b.adapter :net_http
8
16
  end
9
- end
10
17
 
11
- def test_handles_compression_transparently_on_get
12
- stub_request(:get, 'disney.com/hello').with { |request|
13
- accept_encoding = request.headers['Accept-Encoding']
14
- if RUBY_VERSION.index('1.8') == 0
15
- # ruby 1.8 doesn't do any gzip/deflate automatically
16
- accept_encoding == nil
17
- else
18
- # test for a value such as "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
19
- accept_encoding =~ /gzip;.+\bdeflate\b/
20
- end
21
- }
22
- @connection.get('/hello')
23
- end
18
+ exceptions = [
19
+ EOFError,
20
+ Errno::ECONNABORTED,
21
+ Errno::ECONNREFUSED,
22
+ Errno::ECONNRESET,
23
+ Errno::EINVAL,
24
+ Net::HTTPBadResponse,
25
+ Net::HTTPHeaderSyntaxError,
26
+ Net::ProtocolError,
27
+ SocketError
28
+ ]
29
+
30
+ exceptions << OpenSSL::SSL::SSLError if defined?(OpenSSL)
24
31
 
25
- def test_connect_error_gets_wrapped
26
- stub_request(:get, 'disney.com/hello').to_raise(Errno::ECONNREFUSED)
32
+ exceptions.each do |exception_class|
33
+ stub_request(:get, 'disney.com/hello').to_raise(exception_class)
27
34
 
28
- assert_raise Faraday::Error::ConnectionFailed do
29
- @connection.get('/hello')
35
+ assert_raise(Faraday::Error::ConnectionFailed,
36
+ "Failed to wrap #{exception_class} exceptions") do
37
+ connection.get('/hello')
38
+ end
30
39
  end
31
40
  end
41
+
42
+ def test_configure_ssl
43
+ http = Net::HTTP.new 'disney.com', 443
44
+ # this should not raise an error
45
+ Faraday::Adapter::NetHttp.new.configure_ssl(http, :ssl => {:verify => true})
46
+ end
47
+
32
48
  end
33
49
  end
@@ -0,0 +1,17 @@
1
+ require File.expand_path('../integration', __FILE__)
2
+
3
+ module Adapters
4
+ class Patron < Faraday::TestCase
5
+
6
+ def adapter() :patron end
7
+
8
+ Integration.apply(self, :NonParallel) do
9
+ # https://github.com/toland/patron/issues/34
10
+ undef :test_PATCH_send_url_encoded_params
11
+
12
+ # https://github.com/toland/patron/issues/52
13
+ undef :test_GET_with_body
14
+ end
15
+
16
+ end unless defined? RUBY_ENGINE and 'jruby' == RUBY_ENGINE
17
+ end
@@ -0,0 +1,26 @@
1
+ require File.expand_path("../integration", __FILE__)
2
+ require File.expand_path('../../live_server', __FILE__)
3
+
4
+ module Adapters
5
+ class RackTest < Faraday::TestCase
6
+
7
+ def adapter() :rack end
8
+
9
+ def adapter_options
10
+ [FaradayTestServer]
11
+ end
12
+
13
+ # no Integration.apply because this doesn't require a server as a separate process
14
+ include Integration::Common
15
+ include Integration::NonParallel
16
+
17
+ # not using shared test because error is swallowed by Sinatra
18
+ def test_timeout
19
+ conn = create_connection(:request => {:timeout => 1, :open_timeout => 1})
20
+ begin
21
+ conn.get '/slow'
22
+ rescue Faraday::Error::ClientError
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,20 +1,14 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'helper'))
1
+ require File.expand_path('../integration', __FILE__)
2
2
 
3
3
  module Adapters
4
4
  class TyphoeusTest < Faraday::TestCase
5
- def setup
6
- @connection = Faraday.new('http://disney.com') do |b|
7
- b.adapter :typhoeus
8
- end
9
- end
10
5
 
11
- def test_handles_user_agent
12
- # default typhoeus agent
13
- stub_request(:get, 'disney.com/world').with(:headers => {'User-Agent'=>'Faraday Agent'}){ |request|
14
- request.headers["User-Agent"] == 'Faraday Agent'
15
- }
16
- @connection.get('/world', nil, :user_agent => 'Faraday Agent')
6
+ def adapter() :typhoeus end
7
+
8
+ Integration.apply(self, :Parallel) do
9
+ # https://github.com/dbalatero/typhoeus/issues/75
10
+ undef :test_GET_with_body
17
11
  end
18
12
 
19
- end if defined? ::Typhoeus
13
+ end unless defined? RUBY_ENGINE and 'jruby' == RUBY_ENGINE
20
14
  end
@@ -37,7 +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_equal "Token token=\"baz\",\n foo=\"42\"", response.body
40
+ assert_match /^Token /, response.body
41
+ assert_match /token="baz"/, response.body
42
+ assert_match /foo="42"/, response.body
41
43
  end
42
44
 
43
45
  def test_token_middleware_does_not_interfere_with_existing_authorization
@@ -45,4 +47,19 @@ class AuthenticationMiddlewareTest < Faraday::TestCase
45
47
  get('/auth-echo', nil, :authorization => 'Token token="bar"')
46
48
  assert_equal 'Token token="bar"', response.body
47
49
  end
50
+
51
+ def test_authorization_middleware_with_string
52
+ response = conn { |b|
53
+ b.request :authorization, 'custom', 'abc def'
54
+ }.get('/auth-echo')
55
+ assert_match /^custom abc def$/, response.body
56
+ end
57
+
58
+ def test_authorization_middleware_with_hash
59
+ response = conn { |b|
60
+ b.request :authorization, 'baz', :foo => 42
61
+ }.get('/auth-echo')
62
+ assert_match /^baz /, response.body
63
+ assert_match /foo="42"/, response.body
64
+ end
48
65
  end
@@ -68,24 +68,30 @@ class TestConnection < Faraday::TestCase
68
68
  assert_equal 'Faraday', conn.headers['User-agent']
69
69
  end
70
70
 
71
- def test_basic_auth_prepends_basic_auth_middleware
71
+ def test_basic_auth_sets_header
72
72
  conn = Faraday::Connection.new
73
+ assert_nil conn.headers['Authorization']
74
+
73
75
  conn.basic_auth 'Aladdin', 'open sesame'
74
- assert_equal Faraday::Request::BasicAuthentication, conn.builder[0].klass
75
- assert_equal ['Aladdin', 'open sesame'], conn.builder[0].instance_eval { @args }
76
+ assert auth = conn.headers['Authorization']
77
+ assert_equal 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==', auth
76
78
  end
77
79
 
78
80
  def test_auto_parses_basic_auth_from_url_and_unescapes
79
81
  conn = Faraday::Connection.new :url => "http://foo%40bar.com:pass%20word@sushi.com/fish"
80
- assert_equal Faraday::Request::BasicAuthentication, conn.builder[0].klass
81
- assert_equal ['foo@bar.com', 'pass word'], conn.builder[0].instance_eval { @args }
82
+ assert auth = conn.headers['Authorization']
83
+ assert_equal Faraday::Request::BasicAuthentication.header("foo@bar.com", "pass word"), auth
82
84
  end
83
85
 
84
- def test_token_auth_prepends_token_auth_middleware
86
+ def test_token_auth_sets_header
85
87
  conn = Faraday::Connection.new
88
+ assert_nil conn.headers['Authorization']
89
+
86
90
  conn.token_auth 'abcdef', :nonce => 'abc'
87
- assert_equal Faraday::Request::TokenAuthentication, conn.builder[0].klass
88
- assert_equal ['abcdef', { :nonce => 'abc' }], conn.builder[0].instance_eval { @args }
91
+ assert auth = conn.headers['Authorization']
92
+ assert_match /^Token /, auth
93
+ assert_match /token="abcdef"/, auth
94
+ assert_match /nonce="abc"/, auth
89
95
  end
90
96
 
91
97
  def test_build_url_uses_connection_host_as_default_uri_host
@@ -268,7 +274,7 @@ class TestConnection < Faraday::TestCase
268
274
  other.headers['content-length'] = 12
269
275
  other.params['b'] = '2'
270
276
 
271
- assert_equal 3, other.builder.handlers.size
277
+ assert_equal 2, other.builder.handlers.size
272
278
  assert_equal 2, conn.builder.handlers.size
273
279
  assert !conn.headers.key?('content-length')
274
280
  assert !conn.params.key?('b')
@@ -1,3 +1,11 @@
1
+ unless ENV['CI']
2
+ begin
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+ rescue LoadError
6
+ end
7
+ end
8
+
1
9
  require 'test/unit'
2
10
  require 'stringio'
3
11
 
@@ -1,62 +1,50 @@
1
- require 'sinatra'
2
- set :logging, false
3
-
4
- [:get, :post, :put, :patch, :delete, :options].each do |method|
5
- send(method, '/echo') do
6
- kind = request.request_method.downcase
7
- out = kind.dup
8
- out << ' ?' << request.GET.inspect if request.GET.any?
9
- out << ' ' << request.POST.inspect if request.POST.any?
10
-
11
- content_type 'text/plain'
12
- return out
1
+ require 'sinatra/base'
2
+
3
+ class FaradayTestServer < Sinatra::Base
4
+ set :logging => false,
5
+ :show_exceptions => false
6
+
7
+ [:get, :post, :put, :patch, :delete, :options].each do |method|
8
+ send(method, '/echo') do
9
+ kind = request.request_method.downcase
10
+ out = kind.dup
11
+ out << ' ?' << request.GET.inspect if request.GET.any?
12
+ out << ' ' << request.POST.inspect if request.POST.any?
13
+
14
+ content_type 'text/plain'
15
+ return out
16
+ end
13
17
  end
14
- end
15
-
16
- get '/hello_world' do
17
- 'hello world'
18
- end
19
18
 
20
- get '/json' do
21
- content_type 'application/json'
22
- "[1,2,3]"
23
- end
24
-
25
- post '/file' do
26
- if params[:uploaded_file].respond_to? :each_key
27
- "file %s %s" % [
28
- params[:uploaded_file][:filename],
29
- params[:uploaded_file][:type]]
30
- else
31
- status 400
19
+ get '/echo_header' do
20
+ header = "HTTP_#{params[:name].tr('-', '_').upcase}"
21
+ request.env.fetch(header) { 'NONE' }
32
22
  end
33
- end
34
23
 
35
- [:get, :post].each do |method|
36
- send(method, '/hello') do
37
- "hello #{params[:name]}"
24
+ post '/file' do
25
+ if params[:uploaded_file].respond_to? :each_key
26
+ "file %s %s" % [
27
+ params[:uploaded_file][:filename],
28
+ params[:uploaded_file][:type]]
29
+ else
30
+ status 400
31
+ end
38
32
  end
39
- end
40
33
 
41
- %w[POST PUT PATCH].each do |http_method|
42
- settings.send(:route, http_method, '/echo_name') do
43
- params[:name].inspect
34
+ get '/multi' do
35
+ [200, { 'Set-Cookie' => 'one, two' }, '']
44
36
  end
45
- end
46
-
47
- options '/options' do
48
- 'hi'
49
- end
50
37
 
51
- delete '/delete_with_json' do
52
- %/{"deleted":true}/
53
- end
38
+ get '/slow' do
39
+ sleep 10
40
+ [200, {}, 'ok']
41
+ end
54
42
 
55
- get '/multi' do
56
- [200, { 'Set-Cookie' => 'one, two' }, '']
43
+ error do |e|
44
+ "#{e.class}\n#{e.to_s}\n#{e.backtrace.join("\n")}"
45
+ end
57
46
  end
58
47
 
59
- get '/slow' do
60
- sleep 10
61
- [200, {}, 'ok']
48
+ if $0 == __FILE__
49
+ FaradayTestServer.run!
62
50
  end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0.rc2
5
- prerelease: 6
4
+ version: 0.8.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Rick Olson
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-28 00:00:00.000000000 Z
12
+ date: 2012-04-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multipart-post
16
- requirement: &70137915346940 !ruby/object:Gem::Requirement
16
+ requirement: &70331771782880 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70137915346940
24
+ version_requirements: *70331771782880
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70137915345760 !ruby/object:Gem::Requirement
27
+ requirement: &70331771781000 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,21 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70137915345760
35
+ version_requirements: *70331771781000
36
+ - !ruby/object:Gem::Dependency
37
+ name: simplecov
38
+ requirement: &70331771779420 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70331771779420
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: test-unit
38
- requirement: &70137915343760 !ruby/object:Gem::Requirement
49
+ requirement: &70331771778040 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '0'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70137915343760
57
+ version_requirements: *70331771778040
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: webmock
49
- requirement: &70137915292660 !ruby/object:Gem::Requirement
60
+ requirement: &70331771775860 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,7 +65,7 @@ dependencies:
54
65
  version: '0'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70137915292660
68
+ version_requirements: *70331771775860
58
69
  description:
59
70
  email: technoweenie@gmail.com
60
71
  executables: []
@@ -69,13 +80,14 @@ files:
69
80
  - faraday.gemspec
70
81
  - lib/faraday.rb
71
82
  - lib/faraday/adapter.rb
72
- - lib/faraday/adapter/action_dispatch.rb
73
83
  - lib/faraday/adapter/em_http.rb
74
84
  - lib/faraday/adapter/em_synchrony.rb
75
85
  - lib/faraday/adapter/em_synchrony/parallel_manager.rb
76
86
  - lib/faraday/adapter/excon.rb
77
87
  - lib/faraday/adapter/net_http.rb
88
+ - lib/faraday/adapter/net_http_persistent.rb
78
89
  - lib/faraday/adapter/patron.rb
90
+ - lib/faraday/adapter/rack.rb
79
91
  - lib/faraday/adapter/test.rb
80
92
  - lib/faraday/adapter/typhoeus.rb
81
93
  - lib/faraday/builder.rb
@@ -83,6 +95,7 @@ files:
83
95
  - lib/faraday/error.rb
84
96
  - lib/faraday/middleware.rb
85
97
  - lib/faraday/request.rb
98
+ - lib/faraday/request/authorization.rb
86
99
  - lib/faraday/request/basic_authentication.rb
87
100
  - lib/faraday/request/multipart.rb
88
101
  - lib/faraday/request/retry.rb
@@ -93,9 +106,16 @@ files:
93
106
  - lib/faraday/response/raise_error.rb
94
107
  - lib/faraday/upload_io.rb
95
108
  - lib/faraday/utils.rb
96
- - test/adapters/live_test.rb
109
+ - test/adapters/default_test.rb
110
+ - test/adapters/em_http_test.rb
111
+ - test/adapters/em_synchrony_test.rb
112
+ - test/adapters/excon_test.rb
113
+ - test/adapters/integration.rb
97
114
  - test/adapters/logger_test.rb
115
+ - test/adapters/net_http_persistent_test.rb
98
116
  - test/adapters/net_http_test.rb
117
+ - test/adapters/patron_test.rb
118
+ - test/adapters/rack_test.rb
99
119
  - test/adapters/test_middleware_test.rb
100
120
  - test/adapters/typhoeus_test.rb
101
121
  - test/authentication_middleware_test.rb
@@ -122,19 +142,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
142
  required_rubygems_version: !ruby/object:Gem::Requirement
123
143
  none: false
124
144
  requirements:
125
- - - ! '>'
145
+ - - ! '>='
126
146
  - !ruby/object:Gem::Version
127
- version: 1.3.1
147
+ version: 1.3.5
128
148
  requirements: []
129
149
  rubyforge_project:
130
- rubygems_version: 1.8.12
150
+ rubygems_version: 1.8.10
131
151
  signing_key:
132
152
  specification_version: 2
133
153
  summary: HTTP/REST API client library.
134
154
  test_files:
135
- - test/adapters/live_test.rb
155
+ - test/adapters/default_test.rb
156
+ - test/adapters/em_http_test.rb
157
+ - test/adapters/em_synchrony_test.rb
158
+ - test/adapters/excon_test.rb
159
+ - test/adapters/integration.rb
136
160
  - test/adapters/logger_test.rb
161
+ - test/adapters/net_http_persistent_test.rb
137
162
  - test/adapters/net_http_test.rb
163
+ - test/adapters/patron_test.rb
164
+ - test/adapters/rack_test.rb
138
165
  - test/adapters/test_middleware_test.rb
139
166
  - test/adapters/typhoeus_test.rb
140
167
  - test/authentication_middleware_test.rb