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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -1
  3. data/lib/typhoeus/expectation.rb +4 -2
  4. data/lib/typhoeus/request/responseable.rb +1 -1
  5. data/lib/typhoeus/version.rb +1 -1
  6. data/typhoeus.gemspec +14 -4
  7. metadata +18 -97
  8. data/.github/workflows/ci.yml +0 -30
  9. data/.github/workflows/experimental.yml +0 -33
  10. data/.gitignore +0 -8
  11. data/.rspec +0 -4
  12. data/Gemfile +0 -36
  13. data/Guardfile +0 -9
  14. data/Rakefile +0 -38
  15. data/perf/profile.rb +0 -14
  16. data/perf/vs_nethttp.rb +0 -64
  17. data/spec/rack/typhoeus/middleware/params_decoder/helper_spec.rb +0 -156
  18. data/spec/rack/typhoeus/middleware/params_decoder_spec.rb +0 -31
  19. data/spec/spec_helper.rb +0 -29
  20. data/spec/support/localhost_server.rb +0 -94
  21. data/spec/support/memory_cache.rb +0 -15
  22. data/spec/support/server.rb +0 -116
  23. data/spec/typhoeus/adapters/faraday_spec.rb +0 -339
  24. data/spec/typhoeus/cache/dalli_spec.rb +0 -41
  25. data/spec/typhoeus/cache/redis_spec.rb +0 -41
  26. data/spec/typhoeus/config_spec.rb +0 -15
  27. data/spec/typhoeus/easy_factory_spec.rb +0 -143
  28. data/spec/typhoeus/errors/no_stub_spec.rb +0 -13
  29. data/spec/typhoeus/expectation_spec.rb +0 -280
  30. data/spec/typhoeus/hydra/addable_spec.rb +0 -22
  31. data/spec/typhoeus/hydra/before_spec.rb +0 -98
  32. data/spec/typhoeus/hydra/block_connection_spec.rb +0 -18
  33. data/spec/typhoeus/hydra/cacheable_spec.rb +0 -88
  34. data/spec/typhoeus/hydra/memoizable_spec.rb +0 -53
  35. data/spec/typhoeus/hydra/queueable_spec.rb +0 -98
  36. data/spec/typhoeus/hydra/runnable_spec.rb +0 -137
  37. data/spec/typhoeus/hydra/stubbable_spec.rb +0 -48
  38. data/spec/typhoeus/hydra_spec.rb +0 -22
  39. data/spec/typhoeus/pool_spec.rb +0 -137
  40. data/spec/typhoeus/request/actions_spec.rb +0 -19
  41. data/spec/typhoeus/request/before_spec.rb +0 -93
  42. data/spec/typhoeus/request/block_connection_spec.rb +0 -75
  43. data/spec/typhoeus/request/cacheable_spec.rb +0 -94
  44. data/spec/typhoeus/request/callbacks_spec.rb +0 -91
  45. data/spec/typhoeus/request/marshal_spec.rb +0 -60
  46. data/spec/typhoeus/request/memoizable_spec.rb +0 -34
  47. data/spec/typhoeus/request/operations_spec.rb +0 -101
  48. data/spec/typhoeus/request/responseable_spec.rb +0 -13
  49. data/spec/typhoeus/request/stubbable_spec.rb +0 -45
  50. data/spec/typhoeus/request_spec.rb +0 -256
  51. data/spec/typhoeus/response/header_spec.rb +0 -147
  52. data/spec/typhoeus/response/informations_spec.rb +0 -323
  53. data/spec/typhoeus/response/status_spec.rb +0 -256
  54. data/spec/typhoeus/response_spec.rb +0 -100
  55. 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
@@ -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