typhoeus 1.4.1 → 1.5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +43 -1
- data/lib/typhoeus/expectation.rb +4 -2
- data/lib/typhoeus/request/responseable.rb +1 -1
- data/lib/typhoeus/version.rb +1 -1
- data/typhoeus.gemspec +14 -4
- metadata +18 -97
- data/.github/workflows/ci.yml +0 -30
- data/.github/workflows/experimental.yml +0 -33
- data/.gitignore +0 -8
- data/.rspec +0 -4
- data/Gemfile +0 -36
- data/Guardfile +0 -9
- data/Rakefile +0 -38
- data/perf/profile.rb +0 -14
- data/perf/vs_nethttp.rb +0 -64
- data/spec/rack/typhoeus/middleware/params_decoder/helper_spec.rb +0 -156
- data/spec/rack/typhoeus/middleware/params_decoder_spec.rb +0 -31
- data/spec/spec_helper.rb +0 -29
- data/spec/support/localhost_server.rb +0 -94
- data/spec/support/memory_cache.rb +0 -15
- data/spec/support/server.rb +0 -116
- data/spec/typhoeus/adapters/faraday_spec.rb +0 -339
- data/spec/typhoeus/cache/dalli_spec.rb +0 -41
- data/spec/typhoeus/cache/redis_spec.rb +0 -41
- data/spec/typhoeus/config_spec.rb +0 -15
- data/spec/typhoeus/easy_factory_spec.rb +0 -143
- data/spec/typhoeus/errors/no_stub_spec.rb +0 -13
- data/spec/typhoeus/expectation_spec.rb +0 -280
- data/spec/typhoeus/hydra/addable_spec.rb +0 -22
- data/spec/typhoeus/hydra/before_spec.rb +0 -98
- data/spec/typhoeus/hydra/block_connection_spec.rb +0 -18
- data/spec/typhoeus/hydra/cacheable_spec.rb +0 -88
- data/spec/typhoeus/hydra/memoizable_spec.rb +0 -53
- data/spec/typhoeus/hydra/queueable_spec.rb +0 -98
- data/spec/typhoeus/hydra/runnable_spec.rb +0 -137
- data/spec/typhoeus/hydra/stubbable_spec.rb +0 -48
- data/spec/typhoeus/hydra_spec.rb +0 -22
- data/spec/typhoeus/pool_spec.rb +0 -137
- data/spec/typhoeus/request/actions_spec.rb +0 -19
- data/spec/typhoeus/request/before_spec.rb +0 -93
- data/spec/typhoeus/request/block_connection_spec.rb +0 -75
- data/spec/typhoeus/request/cacheable_spec.rb +0 -94
- data/spec/typhoeus/request/callbacks_spec.rb +0 -91
- data/spec/typhoeus/request/marshal_spec.rb +0 -60
- data/spec/typhoeus/request/memoizable_spec.rb +0 -34
- data/spec/typhoeus/request/operations_spec.rb +0 -101
- data/spec/typhoeus/request/responseable_spec.rb +0 -13
- data/spec/typhoeus/request/stubbable_spec.rb +0 -45
- data/spec/typhoeus/request_spec.rb +0 -256
- data/spec/typhoeus/response/header_spec.rb +0 -147
- data/spec/typhoeus/response/informations_spec.rb +0 -323
- data/spec/typhoeus/response/status_spec.rb +0 -256
- data/spec/typhoeus/response_spec.rb +0 -100
- data/spec/typhoeus_spec.rb +0 -105
@@ -1,339 +0,0 @@
|
|
1
|
-
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("1.9.0")
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'typhoeus/adapters/faraday'
|
4
|
-
|
5
|
-
describe Faraday::Adapter::Typhoeus do
|
6
|
-
let(:base_url) { "http://localhost:3001" }
|
7
|
-
let(:adapter) { described_class.new(nil) }
|
8
|
-
let(:request) { Typhoeus::Request.new(base_url) }
|
9
|
-
let(:conn) do
|
10
|
-
Faraday.new(:url => base_url) do |faraday|
|
11
|
-
faraday.adapter :typhoeus
|
12
|
-
end
|
13
|
-
end
|
14
|
-
let(:response) { conn.get("/") }
|
15
|
-
|
16
|
-
context "when parallel" do
|
17
|
-
it "returns a faraday response" do
|
18
|
-
response = nil
|
19
|
-
conn.in_parallel { response = conn.get("/") }
|
20
|
-
expect(response).to be_a(Faraday::Response)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "succeeds" do
|
24
|
-
response = nil
|
25
|
-
conn.in_parallel { response = conn.get("/") }
|
26
|
-
expect(response.status).to be(200)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
context "when not parallel" do
|
31
|
-
it "returns a faraday response" do
|
32
|
-
expect(response).to be_a(Faraday::Response)
|
33
|
-
end
|
34
|
-
|
35
|
-
it "succeeds" do
|
36
|
-
expect(response.status).to be(200)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
context "when a response is stubbed" do
|
41
|
-
before do
|
42
|
-
stub = Typhoeus::Response.new \
|
43
|
-
:code => 200,
|
44
|
-
:headers => { "Foo" => "2", "Bar" => "3" },
|
45
|
-
:body => "Hello",
|
46
|
-
:mock => true
|
47
|
-
|
48
|
-
Typhoeus.stub(base_url + '/').and_return(stub)
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'stubs the status code' do
|
52
|
-
expect(response.status).to eq(200)
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'stubs the response body' do
|
56
|
-
expect(response.body).to eq("Hello")
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'stubs the headers' do
|
60
|
-
expect(response.headers).to eq("Foo" => "2", "Bar" => "3")
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe "#initialize" do
|
65
|
-
let(:request) { adapter.method(:typhoeus_request).call({}) }
|
66
|
-
|
67
|
-
context "when typhoeus request options specified" do
|
68
|
-
let(:adapter) { described_class.new(nil, { :forbid_reuse => true, :maxredirs => 1 }) }
|
69
|
-
|
70
|
-
it "should set option for request" do
|
71
|
-
expect(request.options[:forbid_reuse]).to be_truthy
|
72
|
-
expect(request.options[:maxredirs]).to eq(1)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe "#perform_request" do
|
78
|
-
let(:env) { {} }
|
79
|
-
|
80
|
-
context "when body" do
|
81
|
-
let(:env) { { :body => double(:read => "body") } }
|
82
|
-
|
83
|
-
it "reads body" do
|
84
|
-
expect(adapter.method(:read_body).call(env)).to eq("body")
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
context "parallel_manager" do
|
89
|
-
context "when given" do
|
90
|
-
let(:env) { { :parallel_manager => double(:queue => true), :ssl => {}, :request => {} } }
|
91
|
-
|
92
|
-
it "uses" do
|
93
|
-
adapter.method(:perform_request).call(env)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
context "when not given" do
|
98
|
-
let(:env) { { :method => :get, :ssl => {}, :request => {} } }
|
99
|
-
|
100
|
-
it "falls back to single" do
|
101
|
-
expect(Typhoeus::Request).to receive(:new).and_return(double(:options => {}, :on_complete => [], :run => true))
|
102
|
-
adapter.method(:perform_request).call(env)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
describe "#request" do
|
109
|
-
let(:env) do
|
110
|
-
{ :url => "url", :method => :get, :body => "body", :request_headers => {}, :ssl => {}, :request => {} }
|
111
|
-
end
|
112
|
-
|
113
|
-
let(:request) { adapter.method(:request).call(env) }
|
114
|
-
|
115
|
-
it "returns request" do
|
116
|
-
expect(request).to be_a(Typhoeus::Request)
|
117
|
-
end
|
118
|
-
|
119
|
-
it "sets url" do
|
120
|
-
expect(request.base_url).to eq("url")
|
121
|
-
end
|
122
|
-
|
123
|
-
it "sets http method" do
|
124
|
-
expect(request.original_options[:method]).to eq(:get)
|
125
|
-
end
|
126
|
-
|
127
|
-
it "sets body" do
|
128
|
-
expect(request.original_options[:body]).to eq("body")
|
129
|
-
end
|
130
|
-
|
131
|
-
it "sets headers" do
|
132
|
-
expect(request.original_options[:headers]).to eq({})
|
133
|
-
end
|
134
|
-
|
135
|
-
it "sets on_complete callback" do
|
136
|
-
expect(request.on_complete.size).to eq(1)
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
context "when the connection failed" do
|
141
|
-
before do
|
142
|
-
stub = Typhoeus::Response.new \
|
143
|
-
:response_code => 0,
|
144
|
-
:return_code => 0,
|
145
|
-
:mock => true
|
146
|
-
|
147
|
-
Typhoeus.stub(base_url + '/').and_return(stub)
|
148
|
-
end
|
149
|
-
|
150
|
-
context "when parallel" do
|
151
|
-
it "isn't successful" do
|
152
|
-
response = nil
|
153
|
-
conn.in_parallel { response = conn.get("/") }
|
154
|
-
expect(response.success?).to be_falsey
|
155
|
-
end
|
156
|
-
|
157
|
-
it "translates the response code into an error message" do
|
158
|
-
response = nil
|
159
|
-
conn.in_parallel { response = conn.get("/") }
|
160
|
-
expect(response.env[:typhoeus_return_message]).to eq("No error")
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
context "when not parallel" do
|
165
|
-
it "raises an error" do
|
166
|
-
expect { conn.get("/") }.to raise_error(Faraday::ConnectionFailed, "No error")
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
describe "#configure_socket" do
|
172
|
-
let(:env) { { :request => { :bind => { :host => "interface" } } } }
|
173
|
-
|
174
|
-
before { adapter.method(:configure_socket).call(request, env) }
|
175
|
-
|
176
|
-
context "when host" do
|
177
|
-
it "sets interface" do
|
178
|
-
expect(request.options[:interface]).to eq("interface")
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
describe "#configure_timeout" do
|
184
|
-
before { adapter.method(:configure_timeout).call(request, env) }
|
185
|
-
|
186
|
-
context "when timeout" do
|
187
|
-
let(:env) { { :request => { :timeout => 1 } } }
|
188
|
-
|
189
|
-
it "sets timeout_ms" do
|
190
|
-
expect(request.options[:timeout_ms]).to eq(1000)
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
context "when open_timeout" do
|
195
|
-
let(:env) { { :request => { :open_timeout => 1 } } }
|
196
|
-
|
197
|
-
it "sets connecttimeout_ms" do
|
198
|
-
expect(request.options[:connecttimeout_ms]).to eq(1000)
|
199
|
-
end
|
200
|
-
end
|
201
|
-
end
|
202
|
-
|
203
|
-
describe "#configure_proxy" do
|
204
|
-
before { adapter.method(:configure_proxy).call(request, env) }
|
205
|
-
|
206
|
-
context "when proxy" do
|
207
|
-
let(:env) { { :request => { :proxy => { :uri => double(:scheme => 'http', :host => "localhost", :port => "3001") } } } }
|
208
|
-
|
209
|
-
it "sets proxy" do
|
210
|
-
expect(request.options[:proxy]).to eq("http://localhost:3001")
|
211
|
-
end
|
212
|
-
|
213
|
-
context "when username and password" do
|
214
|
-
let(:env) do
|
215
|
-
{ :request => { :proxy => {
|
216
|
-
:uri => double(:scheme => 'http', :host => :a, :port => :b),
|
217
|
-
:user => "a",
|
218
|
-
:password => "b"
|
219
|
-
} } }
|
220
|
-
end
|
221
|
-
|
222
|
-
it "sets proxyuserpwd" do
|
223
|
-
expect(request.options[:proxyuserpwd]).to eq("a:b")
|
224
|
-
end
|
225
|
-
end
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
describe "#configure_ssl" do
|
230
|
-
before { adapter.method(:configure_ssl).call(request, env) }
|
231
|
-
|
232
|
-
context "when version" do
|
233
|
-
let(:env) { { :ssl => { :version => "a" } } }
|
234
|
-
|
235
|
-
it "sets sslversion" do
|
236
|
-
expect(request.options[:sslversion]).to eq("a")
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
context "when client_cert" do
|
241
|
-
let(:env) { { :ssl => { :client_cert => "a" } } }
|
242
|
-
|
243
|
-
it "sets sslcert" do
|
244
|
-
expect(request.options[:sslcert]).to eq("a")
|
245
|
-
end
|
246
|
-
end
|
247
|
-
|
248
|
-
context "when client_key" do
|
249
|
-
let(:env) { { :ssl => { :client_key => "a" } } }
|
250
|
-
|
251
|
-
it "sets sslkey" do
|
252
|
-
expect(request.options[:sslkey]).to eq("a")
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
|
-
context "when ca_file" do
|
257
|
-
let(:env) { { :ssl => { :ca_file => "a" } } }
|
258
|
-
|
259
|
-
it "sets cainfo" do
|
260
|
-
expect(request.options[:cainfo]).to eq("a")
|
261
|
-
end
|
262
|
-
end
|
263
|
-
|
264
|
-
context "when ca_path" do
|
265
|
-
let(:env) { { :ssl => { :ca_path => "a" } } }
|
266
|
-
|
267
|
-
it "sets capath" do
|
268
|
-
expect(request.options[:capath]).to eq("a")
|
269
|
-
end
|
270
|
-
end
|
271
|
-
|
272
|
-
context "when client_cert_passwd" do
|
273
|
-
let(:env) { { :ssl => { :client_cert_passwd => "a" } } }
|
274
|
-
|
275
|
-
it "sets keypasswd to the value of client_cert_passwd" do
|
276
|
-
expect(request.options[:keypasswd]).to eq("a")
|
277
|
-
end
|
278
|
-
end
|
279
|
-
|
280
|
-
context "when client_certificate_password" do
|
281
|
-
let(:env) { { :ssl => { :client_certificate_password => "a" } } }
|
282
|
-
|
283
|
-
it "sets keypasswd to the value of client_cert_passwd" do
|
284
|
-
expect(request.options[:keypasswd]).to eq("a")
|
285
|
-
end
|
286
|
-
end
|
287
|
-
|
288
|
-
context "when no client_cert_passwd" do
|
289
|
-
let(:env) { { :ssl => { } } }
|
290
|
-
|
291
|
-
it "does not set keypasswd on options" do
|
292
|
-
expect(request.options).not_to have_key :keypasswd
|
293
|
-
end
|
294
|
-
end
|
295
|
-
|
296
|
-
context "when verify is false" do
|
297
|
-
let(:env) { { :ssl => { :verify => false } } }
|
298
|
-
|
299
|
-
it "sets ssl_verifyhost to 0" do
|
300
|
-
expect(request.options[:ssl_verifyhost]).to eq(0)
|
301
|
-
end
|
302
|
-
|
303
|
-
it "sets ssl_verifypeer to false" do
|
304
|
-
expect(request.options[:ssl_verifypeer]).to be_falsey
|
305
|
-
end
|
306
|
-
end
|
307
|
-
|
308
|
-
context "when verify is true" do
|
309
|
-
let(:env) { { :ssl => { :verify => true } } }
|
310
|
-
|
311
|
-
it "sets ssl_verifyhost to 2" do
|
312
|
-
expect(request.options[:ssl_verifyhost]).to eq(2)
|
313
|
-
end
|
314
|
-
|
315
|
-
it "sets ssl_verifypeer to true" do
|
316
|
-
expect(request.options[:ssl_verifypeer]).to be_truthy
|
317
|
-
end
|
318
|
-
end
|
319
|
-
end
|
320
|
-
|
321
|
-
describe "#parallel?" do
|
322
|
-
context "when parallel_manager" do
|
323
|
-
let(:env) { { :parallel_manager => true } }
|
324
|
-
|
325
|
-
it "returns true" do
|
326
|
-
expect(adapter.method(:parallel?).call(env)).to be_truthy
|
327
|
-
end
|
328
|
-
end
|
329
|
-
|
330
|
-
context "when no parallel_manager" do
|
331
|
-
let(:env) { { :parallel_manager => nil } }
|
332
|
-
|
333
|
-
it "returns false" do
|
334
|
-
expect(adapter.method(:parallel?).call(env)).to be_falsey
|
335
|
-
end
|
336
|
-
end
|
337
|
-
end
|
338
|
-
end
|
339
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("1.9.0")
|
2
|
-
require 'dalli'
|
3
|
-
require 'typhoeus/cache/dalli'
|
4
|
-
require 'spec_helper'
|
5
|
-
|
6
|
-
describe Typhoeus::Cache::Dalli do
|
7
|
-
let(:dalli) { instance_double(Dalli::Client) }
|
8
|
-
let(:cache) { Typhoeus::Cache::Dalli.new(dalli) }
|
9
|
-
|
10
|
-
let(:base_url) { "localhost:3001" }
|
11
|
-
let(:request) { Typhoeus::Request.new(base_url, {:method => :get}) }
|
12
|
-
let(:response) { Typhoeus::Response.new(:response_code => 0, :return_code => 0, :mock => true) }
|
13
|
-
|
14
|
-
describe "#set" do
|
15
|
-
it "sends the request to Dalli" do
|
16
|
-
expect(dalli).to receive(:set).with(request.cache_key, response, nil)
|
17
|
-
|
18
|
-
cache.set(request, response)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe "#get" do
|
23
|
-
it "returns nil when the key is not in the cache" do
|
24
|
-
expect(dalli).to receive(:get).with(request.cache_key).and_return(nil)
|
25
|
-
|
26
|
-
expect(cache.get(request)).to be_nil
|
27
|
-
end
|
28
|
-
|
29
|
-
it "returns the cached response when the key is in cache" do
|
30
|
-
expect(dalli).to receive(:get).with(request.cache_key).and_return(response)
|
31
|
-
|
32
|
-
result = cache.get(request)
|
33
|
-
expect(result).to_not be_nil
|
34
|
-
expect(result.response_code).to eq(response.response_code)
|
35
|
-
expect(result.return_code).to eq(response.return_code)
|
36
|
-
expect(result.headers).to eq(response.headers)
|
37
|
-
expect(result.body).to eq(response.body)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'redis'
|
2
|
-
require 'typhoeus/cache/redis'
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe Typhoeus::Cache::Redis do
|
6
|
-
let(:redis) { instance_double(Redis) }
|
7
|
-
let(:cache) { Typhoeus::Cache::Redis.new(redis) }
|
8
|
-
|
9
|
-
let(:base_url) { "localhost:3001" }
|
10
|
-
let(:request) { Typhoeus::Request.new(base_url, {:method => :get}) }
|
11
|
-
let(:response) { Typhoeus::Response.new(:response_code => 0, :return_code => 0, :mock => true) }
|
12
|
-
let(:serialized_response) { Marshal.dump(response) }
|
13
|
-
|
14
|
-
describe "#set" do
|
15
|
-
it "sends the serialized request to Redis" do
|
16
|
-
expect(redis).to receive(:set).with(request.cache_key, serialized_response)
|
17
|
-
expect(redis).to_not receive(:expire).with(request.cache_key, request.cache_ttl)
|
18
|
-
|
19
|
-
cache.set(request, response)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "#get" do
|
24
|
-
it "returns nil when the key is not in Redis" do
|
25
|
-
expect(redis).to receive(:get).with(request.cache_key).and_return(nil)
|
26
|
-
|
27
|
-
expect(cache.get(request)).to be_nil
|
28
|
-
end
|
29
|
-
|
30
|
-
it "returns the cached response when the key is in Redis" do
|
31
|
-
expect(redis).to receive(:get).with(request.cache_key).and_return(serialized_response)
|
32
|
-
|
33
|
-
result = cache.get(request)
|
34
|
-
expect(result).to_not be_nil
|
35
|
-
expect(result.response_code).to eq(response.response_code)
|
36
|
-
expect(result.return_code).to eq(response.return_code)
|
37
|
-
expect(result.headers).to eq(response.headers)
|
38
|
-
expect(result.body).to eq(response.body)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Typhoeus::Config do
|
4
|
-
let(:config) { Typhoeus::Config }
|
5
|
-
|
6
|
-
[:block_connection, :memoize, :verbose, :cache, :user_agent, :proxy].each do |name|
|
7
|
-
it "responds to #{name}" do
|
8
|
-
expect(config).to respond_to(name)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "responds to #{name}=" do
|
12
|
-
expect(config).to respond_to("#{name}=")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,143 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Typhoeus::EasyFactory do
|
4
|
-
let(:base_url) { "http://localhost:3001" }
|
5
|
-
let(:hydra) { Typhoeus::Hydra.new(:max_concurrency => 1) }
|
6
|
-
let(:options) { {} }
|
7
|
-
let(:request) { Typhoeus::Request.new(base_url, options) }
|
8
|
-
let(:easy_factory) { described_class.new(request, hydra) }
|
9
|
-
|
10
|
-
describe "#get" do
|
11
|
-
context "when option[:cache_ttl]" do
|
12
|
-
let(:options) { {:cache_ttl => 1} }
|
13
|
-
|
14
|
-
it "creates Ethon::Easy" do
|
15
|
-
expect(easy_factory.get).to be_a(Ethon::Easy)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context "timeouts" do
|
20
|
-
it "sets nosignal to true by default" do
|
21
|
-
expect(easy_factory.easy).to receive(:http_request).with(anything(), anything(), hash_including(:nosignal => true))
|
22
|
-
easy_factory.get
|
23
|
-
end
|
24
|
-
|
25
|
-
context "when timeout is not a whole number and timeout_ms is not set" do
|
26
|
-
let(:options) { {:timeout => 0.1} }
|
27
|
-
it "ceils timeout and sets timeout_ms" do
|
28
|
-
expect(easy_factory.easy).to receive(:http_request).with(anything(), anything(), hash_including(:timeout_ms => 100, :timeout => 1))
|
29
|
-
easy_factory.get
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "when timeout is not a whole number and timeout_ms is set" do
|
34
|
-
let(:options) { {:timeout => 0.1, :timeout_ms => 123} }
|
35
|
-
it "ceils timeout and does not change timeout_ms" do
|
36
|
-
expect(easy_factory.easy).to receive(:http_request).with(anything(), anything(), hash_including(:timeout_ms => 123, :timeout => 1))
|
37
|
-
easy_factory.get
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
context "when connecttimeout is not a whole number and connecttimeout_ms is not set" do
|
42
|
-
let(:options) { {:connecttimeout => 0.1} }
|
43
|
-
it "ceils connecttimeout and sets connecttimeout_ms" do
|
44
|
-
expect(easy_factory.easy).to receive(:http_request).with(anything(), anything(), hash_including(:connecttimeout_ms => 100, :connecttimeout => 1))
|
45
|
-
easy_factory.get
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
context "when connecttimeout is not a whole number and connecttimeout_ms is set" do
|
50
|
-
let(:options) { {:connecttimeout => 0.1, :connecttimeout_ms => 123} }
|
51
|
-
it "ceils connecttimeout and does not change connecttimeout_ms" do
|
52
|
-
expect(easy_factory.easy).to receive(:http_request).with(anything(), anything(), hash_including(:connecttimeout_ms => 123, :connecttimeout => 1))
|
53
|
-
easy_factory.get
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
|
58
|
-
end
|
59
|
-
|
60
|
-
context "when invalid option" do
|
61
|
-
let(:options) { {:invalid => 1} }
|
62
|
-
|
63
|
-
it "reraises" do
|
64
|
-
expect{ easy_factory.get }.to raise_error(Ethon::Errors::InvalidOption)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context "when removed option" do
|
69
|
-
let(:options) { {:cache_timeout => 1} }
|
70
|
-
|
71
|
-
it "reraises with help" do
|
72
|
-
expect{ easy_factory.get }.to raise_error(
|
73
|
-
Ethon::Errors::InvalidOption, /The option cache_timeout was removed/
|
74
|
-
)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
context "when changed option" do
|
79
|
-
let(:options) { {:proxy_auth_method => 1} }
|
80
|
-
|
81
|
-
it "reraises with help" do
|
82
|
-
expect{ easy_factory.get }.to raise_error(
|
83
|
-
Ethon::Errors::InvalidOption, /Please try proxyauth instead of proxy_auth_method/
|
84
|
-
)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
context "when renamed option" do
|
89
|
-
let(:options) { {:connect_timeout => 1} }
|
90
|
-
|
91
|
-
it "warns" do
|
92
|
-
expect(easy_factory).to receive(:warn).with(
|
93
|
-
"Deprecated option connect_timeout. Please use connecttimeout instead."
|
94
|
-
)
|
95
|
-
easy_factory.get
|
96
|
-
end
|
97
|
-
|
98
|
-
it "passes correct option" do
|
99
|
-
expect(easy_factory).to receive(:warn)
|
100
|
-
expect(easy_factory.easy).to receive(:connecttimeout=).with(1)
|
101
|
-
easy_factory.get
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
describe "#set_callback" do
|
107
|
-
it "sets easy.on_progress callback when an on_progress callback is provided" do
|
108
|
-
request.on_progress { 1 }
|
109
|
-
expect(easy_factory.easy).to receive(:on_progress)
|
110
|
-
easy_factory.send(:set_callback)
|
111
|
-
end
|
112
|
-
|
113
|
-
it "sets easy.on_complete callback" do
|
114
|
-
expect(easy_factory.easy).to receive(:on_complete)
|
115
|
-
easy_factory.send(:set_callback)
|
116
|
-
end
|
117
|
-
|
118
|
-
it "finishes request" do
|
119
|
-
easy_factory.send(:set_callback)
|
120
|
-
expect(request).to receive(:finish)
|
121
|
-
easy_factory.easy.complete
|
122
|
-
end
|
123
|
-
|
124
|
-
it "resets easy" do
|
125
|
-
easy_factory.send(:set_callback)
|
126
|
-
expect(easy_factory.easy).to receive(:reset)
|
127
|
-
easy_factory.easy.complete
|
128
|
-
end
|
129
|
-
|
130
|
-
it "pushes easy back into the pool" do
|
131
|
-
easy_factory.send(:set_callback)
|
132
|
-
easy_factory.easy.complete
|
133
|
-
expect(Typhoeus::Pool.send(:easies)).to include(easy_factory.easy)
|
134
|
-
end
|
135
|
-
|
136
|
-
it "adds next request" do
|
137
|
-
easy_factory.hydra.instance_variable_set(:@queued_requests, [request])
|
138
|
-
expect(easy_factory.hydra).to receive(:add).with(request)
|
139
|
-
easy_factory.send(:set_callback)
|
140
|
-
easy_factory.easy.complete
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Typhoeus::Errors::NoStub do
|
4
|
-
let(:base_url) { "localhost:3001" }
|
5
|
-
let(:request) { Typhoeus::Request.new(base_url) }
|
6
|
-
let(:message) { "The connection is blocked and no stub defined: " }
|
7
|
-
|
8
|
-
subject { Typhoeus::Errors::NoStub }
|
9
|
-
|
10
|
-
it "displays the request url" do
|
11
|
-
expect { raise subject.new(request) }.to raise_error(subject, message + base_url)
|
12
|
-
end
|
13
|
-
end
|