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,256 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Typhoeus::Response::Status do
|
4
|
-
let(:response) { Typhoeus::Response.new(options) }
|
5
|
-
let(:options) { {} }
|
6
|
-
|
7
|
-
describe "timed_out?" do
|
8
|
-
context "when return code is operation_timedout" do
|
9
|
-
let(:options) { {:return_code => :operation_timedout} }
|
10
|
-
|
11
|
-
it "return true" do
|
12
|
-
expect(response).to be_timed_out
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe "#status_message" do
|
18
|
-
context "when no header" do
|
19
|
-
it "returns nil" do
|
20
|
-
expect(response.status_message).to be_nil
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context "when header" do
|
25
|
-
context "when no message" do
|
26
|
-
let(:options) { {:response_headers => "HTTP/1.1 200\r\n"} }
|
27
|
-
|
28
|
-
it "returns nil" do
|
29
|
-
expect(response.status_message).to be_nil
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "when messsage" do
|
34
|
-
let(:options) { {:response_headers => "HTTP/1.1 200 message\r\n"} }
|
35
|
-
|
36
|
-
it "returns message" do
|
37
|
-
expect(response.status_message).to eq("message")
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "#http_version" do
|
44
|
-
context "when no header" do
|
45
|
-
it "returns nil" do
|
46
|
-
expect(response.http_version).to be_nil
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context "when header" do
|
51
|
-
context "when no http version" do
|
52
|
-
let(:options) { {:response_headers => "HTTP OK"} }
|
53
|
-
|
54
|
-
it "returns nil" do
|
55
|
-
expect(response.http_version).to be_nil
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context "when invalid http_version" do
|
60
|
-
let(:options) { {:response_headers => "HTTP foo/bar OK"} }
|
61
|
-
|
62
|
-
it "returns nil" do
|
63
|
-
expect(response.http_version).to be_nil
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
context "when valid http_version" do
|
68
|
-
let(:options) { {:response_headers => "HTTP/1.1 OK"} }
|
69
|
-
|
70
|
-
it "returns http_version" do
|
71
|
-
expect(response.http_version).to eq("1.1")
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe "#success?" do
|
78
|
-
context "when response code 200-299" do
|
79
|
-
let(:options) { {:return_code => return_code, :response_code => 201} }
|
80
|
-
|
81
|
-
context "when mock" do
|
82
|
-
before { response.mock = true }
|
83
|
-
|
84
|
-
context "when return_code :ok" do
|
85
|
-
let(:return_code) { :ok }
|
86
|
-
|
87
|
-
it "returns true" do
|
88
|
-
expect(response.success?).to be_truthy
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
context "when return_code nil" do
|
93
|
-
let(:return_code) { nil }
|
94
|
-
|
95
|
-
it "returns true" do
|
96
|
-
expect(response.success?).to be_truthy
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
context "when no mock" do
|
102
|
-
before { response.mock = nil }
|
103
|
-
|
104
|
-
context "when return_code :ok" do
|
105
|
-
let(:return_code) { :ok }
|
106
|
-
|
107
|
-
it "returns true" do
|
108
|
-
expect(response.success?).to be_truthy
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
context "when return_code nil" do
|
113
|
-
let(:return_code) { nil }
|
114
|
-
|
115
|
-
it "returns false" do
|
116
|
-
expect(response.success?).to be_falsey
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
context "when response code is not 200-299" do
|
123
|
-
let(:options) { {:return_code => :ok, :response_code => 500} }
|
124
|
-
|
125
|
-
it "returns false" do
|
126
|
-
expect(response.success?).to be_falsey
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
describe "#failure?" do
|
132
|
-
context "when response code between 300-526 and 100-300" do
|
133
|
-
let(:options) { {:return_code => return_code, :response_code => 300} }
|
134
|
-
|
135
|
-
context "when mock" do
|
136
|
-
before { response.mock = true }
|
137
|
-
|
138
|
-
context "when return_code :internal_server_error" do
|
139
|
-
let(:return_code) { :internal_server_error }
|
140
|
-
|
141
|
-
it "returns true" do
|
142
|
-
expect(response.failure?).to be_truthy
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
context "when return_code nil" do
|
147
|
-
let(:return_code) { nil }
|
148
|
-
|
149
|
-
it "returns true" do
|
150
|
-
expect(response.failure?).to be_truthy
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
context "when no mock" do
|
156
|
-
before { response.mock = nil }
|
157
|
-
|
158
|
-
context "when return_code :internal_server_error" do
|
159
|
-
let(:return_code) { :internal_server_error }
|
160
|
-
|
161
|
-
it "returns true" do
|
162
|
-
expect(response.failure?).to be_truthy
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
context "when return_code nil" do
|
167
|
-
let(:return_code) { nil }
|
168
|
-
|
169
|
-
it "returns false" do
|
170
|
-
expect(response.failure?).to be_falsey
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
context "when response code is not 300-526" do
|
177
|
-
let(:options) { {:return_code => :ok, :response_code => 200} }
|
178
|
-
|
179
|
-
it "returns false" do
|
180
|
-
expect(response.failure?).to be_falsey
|
181
|
-
end
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
describe "#modified?" do
|
186
|
-
context "when response code 304" do
|
187
|
-
let(:options) { {:return_code => :ok, :response_code => 304} }
|
188
|
-
|
189
|
-
context "when mock" do
|
190
|
-
before { response.mock = true }
|
191
|
-
|
192
|
-
context "when return_code :ok" do
|
193
|
-
let(:return_code) { :ok }
|
194
|
-
|
195
|
-
it "returns false" do
|
196
|
-
expect(response.modified?).to be_falsey
|
197
|
-
end
|
198
|
-
end
|
199
|
-
|
200
|
-
context "when return_code nil" do
|
201
|
-
let(:return_code) { nil }
|
202
|
-
|
203
|
-
it "returns false" do
|
204
|
-
expect(response.modified?).to be_falsey
|
205
|
-
end
|
206
|
-
end
|
207
|
-
end
|
208
|
-
|
209
|
-
context "when no mock" do
|
210
|
-
before { response.mock = nil }
|
211
|
-
|
212
|
-
context "when return_code :ok" do
|
213
|
-
let(:return_code) { :ok }
|
214
|
-
|
215
|
-
it "returns false" do
|
216
|
-
expect(response.modified?).to be_falsey
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
context "when return_code nil" do
|
221
|
-
let(:return_code) { nil }
|
222
|
-
|
223
|
-
it "returns true" do
|
224
|
-
expect(response.modified?).to be_falsey
|
225
|
-
end
|
226
|
-
end
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
230
|
-
context "when response code is not 304" do
|
231
|
-
let(:options) { {:return_code => :ok, :response_code => 500} }
|
232
|
-
|
233
|
-
it "returns true" do
|
234
|
-
expect(response.modified?).to be_truthy
|
235
|
-
end
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
describe "#first_header_line" do
|
240
|
-
context "when multiple header" do
|
241
|
-
let(:options) { {:response_headers => "1\r\n\r\n2\r\nbla"} }
|
242
|
-
|
243
|
-
it "returns first line of last block" do
|
244
|
-
expect(response.method(:first_header_line).call).to eq("2")
|
245
|
-
end
|
246
|
-
end
|
247
|
-
|
248
|
-
context "when single header" do
|
249
|
-
let(:options) { {:response_headers => "1"} }
|
250
|
-
|
251
|
-
it "returns first line" do
|
252
|
-
expect(response.method(:first_header_line).call).to eq("1")
|
253
|
-
end
|
254
|
-
end
|
255
|
-
end
|
256
|
-
end
|
@@ -1,100 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Typhoeus::Response do
|
4
|
-
let(:response) { Typhoeus::Response.new(options) }
|
5
|
-
let(:options) { {} }
|
6
|
-
|
7
|
-
describe ".new" do
|
8
|
-
context "when options" do
|
9
|
-
context "when return_code" do
|
10
|
-
let(:options) { {:return_code => 2} }
|
11
|
-
|
12
|
-
it "stores" do
|
13
|
-
expect(response.options[:return_code]).to be(2)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context "when headers" do
|
18
|
-
let(:options) { {:headers => {'A' => 'B'}} }
|
19
|
-
|
20
|
-
it "stores unmodified" do
|
21
|
-
expect(response.options[:headers]).to be(options[:headers])
|
22
|
-
end
|
23
|
-
|
24
|
-
it "sets @headers to a Typhoeus::Response::Header" do
|
25
|
-
expect(response.instance_variable_get(:@headers)).to be_a(Typhoeus::Response::Header)
|
26
|
-
end
|
27
|
-
|
28
|
-
it "has key" do
|
29
|
-
expect(response.headers['A']).to eq('B')
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe "#mock" do
|
36
|
-
context "when @mock" do
|
37
|
-
before { response.mock = true }
|
38
|
-
|
39
|
-
it "returns @mock" do
|
40
|
-
expect(response.mock).to be_truthy
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
context "when options[:mock]" do
|
45
|
-
let(:options) { {:mock => true} }
|
46
|
-
|
47
|
-
it "returns options[:mock]" do
|
48
|
-
expect(response.mock).to be_truthy
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context "when @mock and options[:mock]" do
|
53
|
-
let(:options) { {:mock => 1} }
|
54
|
-
before { response.mock = 2 }
|
55
|
-
|
56
|
-
it "returns @mock" do
|
57
|
-
expect(response.mock).to be(2)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "#handled_response" do
|
63
|
-
let(:handled_response) { Typhoeus::Response.new }
|
64
|
-
|
65
|
-
context "when @handled_response" do
|
66
|
-
before { response.handled_response = handled_response }
|
67
|
-
|
68
|
-
it "returns @handled_response" do
|
69
|
-
expect(response.handled_response).to be(handled_response)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context "when @handled_response is nil" do
|
74
|
-
before { response.handled_response = nil }
|
75
|
-
|
76
|
-
it "returns response" do
|
77
|
-
expect(response.handled_response).to be(response)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe "#cached" do
|
83
|
-
context "when @cached" do
|
84
|
-
before { response.cached = true }
|
85
|
-
|
86
|
-
it "returns cached status" do
|
87
|
-
expect(response.cached?).to be_truthy
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
context "when @cached is nil" do
|
92
|
-
before { response.cached = nil }
|
93
|
-
|
94
|
-
it "returns false" do
|
95
|
-
expect(response.cached?).to be_falsey
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
end
|
100
|
-
end
|
data/spec/typhoeus_spec.rb
DELETED
@@ -1,105 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Typhoeus do
|
4
|
-
before(:each) do
|
5
|
-
Typhoeus.configure { |config| config.verbose = false; config.block_connection = false }
|
6
|
-
end
|
7
|
-
|
8
|
-
describe ".configure" do
|
9
|
-
it "yields config" do
|
10
|
-
Typhoeus.configure do |config|
|
11
|
-
expect(config).to be_a(Typhoeus::Config)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
it "sets values config" do
|
16
|
-
Typhoeus::Config.verbose = true
|
17
|
-
expect(Typhoeus::Config.verbose).to be_truthy
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe ".stub" do
|
22
|
-
let(:base_url) { "www.example.com" }
|
23
|
-
|
24
|
-
shared_examples "lazy response construction" do
|
25
|
-
it "calls the block to construct a response when a request matches the stub" do
|
26
|
-
expected_response = Typhoeus::Response.new
|
27
|
-
Typhoeus.stub(base_url) do |request|
|
28
|
-
expected_response
|
29
|
-
end
|
30
|
-
|
31
|
-
response = Typhoeus.get(base_url)
|
32
|
-
|
33
|
-
expect(response).to be(expected_response)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context "when no similar expectation exists" do
|
38
|
-
include_examples "lazy response construction"
|
39
|
-
|
40
|
-
it "returns expectation" do
|
41
|
-
expect(Typhoeus.stub(base_url)).to be_a(Typhoeus::Expectation)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "adds expectation" do
|
45
|
-
Typhoeus.stub(:get, "")
|
46
|
-
expect(Typhoeus::Expectation.all.size).to eq(1)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context "when similar expectation exists" do
|
51
|
-
include_examples "lazy response construction"
|
52
|
-
|
53
|
-
let(:expectation) { Typhoeus::Expectation.new(base_url) }
|
54
|
-
before { Typhoeus::Expectation.all << expectation }
|
55
|
-
|
56
|
-
it "returns expectation" do
|
57
|
-
expect(Typhoeus.stub(base_url)).to be_a(Typhoeus::Expectation)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "doesn't add expectation" do
|
61
|
-
Typhoeus.stub(base_url)
|
62
|
-
expect(Typhoeus::Expectation.all.size).to eq(1)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe ".before" do
|
68
|
-
it "adds callback" do
|
69
|
-
Typhoeus.before { true }
|
70
|
-
expect(Typhoeus.before.size).to eq(1)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe ".with_connection" do
|
75
|
-
it "executes block with block connection is false" do
|
76
|
-
Typhoeus.with_connection { expect(Typhoeus::Config.block_connection).to be(false) }
|
77
|
-
end
|
78
|
-
|
79
|
-
it "sets block connection back to previous value" do
|
80
|
-
Typhoeus::Config.block_connection = true
|
81
|
-
Typhoeus.with_connection {}
|
82
|
-
expect(Typhoeus::Config.block_connection).to be(true)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "returns result of block" do
|
86
|
-
expect(Typhoeus.with_connection { "123" }).to eq("123")
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
[:get, :post, :put, :delete, :head, :patch, :options].each do |name|
|
91
|
-
describe ".#{name}" do
|
92
|
-
let(:response) { Typhoeus::Request.method(name).call("http://localhost:3001") }
|
93
|
-
|
94
|
-
it "returns ok" do
|
95
|
-
expect(response.return_code).to eq(:ok)
|
96
|
-
end
|
97
|
-
|
98
|
-
unless name == :head
|
99
|
-
it "makes #{name.to_s.upcase} requests" do
|
100
|
-
expect(response.response_body).to include("\"REQUEST_METHOD\":\"#{name.to_s.upcase}\"")
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|