webmock 1.7.5 → 1.7.6
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.
- data/.rspec-tm +2 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +2 -2
- data/README.md +1 -0
- data/Rakefile +3 -3
- data/lib/webmock/http_lib_adapters/httpclient_adapter.rb +11 -4
- data/lib/webmock/version.rb +1 -1
- data/spec/{curb_spec.rb → acceptance/curb/curb_spec.rb} +9 -9
- data/spec/{curb_spec_helper.rb → acceptance/curb/curb_spec_helper.rb} +0 -0
- data/spec/{em_http_request_spec.rb → acceptance/em_http_request/em_http_request_spec.rb} +13 -13
- data/spec/{em_http_request_spec_helper.rb → acceptance/em_http_request/em_http_request_spec_helper.rb} +0 -0
- data/spec/acceptance/httpclient/httpclient_spec.rb +67 -0
- data/spec/{httpclient_spec_helper.rb → acceptance/httpclient/httpclient_spec_helper.rb} +0 -0
- data/spec/{net_http_shared.rb → acceptance/net_http/net_http_shared.rb} +0 -0
- data/spec/{net_http_spec.rb → acceptance/net_http/net_http_spec.rb} +6 -6
- data/spec/{net_http_spec_helper.rb → acceptance/net_http/net_http_spec_helper.rb} +0 -0
- data/spec/{real_net_http_spec.rb → acceptance/net_http/real_net_http_spec.rb} +1 -1
- data/spec/{patron_spec.rb → acceptance/patron/patron_spec.rb} +12 -12
- data/spec/{patron_spec_helper.rb → acceptance/patron/patron_spec_helper.rb} +0 -0
- data/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +142 -0
- data/spec/acceptance/shared/callbacks.rb +130 -0
- data/spec/acceptance/shared/enabling_and_disabling_webmock.rb +96 -0
- data/spec/acceptance/shared/precedence_of_stubs.rb +15 -0
- data/spec/acceptance/shared/request_expectations.rb +620 -0
- data/spec/acceptance/shared/returning_declared_responses.rb +377 -0
- data/spec/acceptance/shared/stubbing_requests.rb +314 -0
- data/spec/{typhoeus_hydra_spec.rb → acceptance/typhoeus/typhoeus_hydra_spec.rb} +5 -5
- data/spec/{typhoeus_hydra_spec_helper.rb → acceptance/typhoeus/typhoeus_hydra_spec_helper.rb} +0 -0
- data/spec/acceptance/webmock_shared.rb +38 -0
- data/spec/spec_helper.rb +4 -2
- data/spec/{example_curl_output.txt → support/example_curl_output.txt} +0 -0
- data/spec/{my_rack_app.rb → support/my_rack_app.rb} +0 -0
- data/spec/{network_connection.rb → support/network_connection.rb} +0 -0
- data/spec/{errors_spec.rb → unit/errors_spec.rb} +1 -1
- data/spec/{http_lib_adapters → unit/http_lib_adapters}/http_lib_adapter_registry_spec.rb +1 -1
- data/spec/{http_lib_adapters → unit/http_lib_adapters}/http_lib_adapter_spec.rb +1 -1
- data/spec/{rack_response_spec.rb → unit/rack_response_spec.rb} +1 -1
- data/spec/{request_execution_verifier_spec.rb → unit/request_execution_verifier_spec.rb} +1 -1
- data/spec/{request_pattern_spec.rb → unit/request_pattern_spec.rb} +1 -1
- data/spec/{request_registry_spec.rb → unit/request_registry_spec.rb} +1 -1
- data/spec/{request_signature_spec.rb → unit/request_signature_spec.rb} +1 -1
- data/spec/{request_stub_spec.rb → unit/request_stub_spec.rb} +1 -1
- data/spec/{response_spec.rb → unit/response_spec.rb} +4 -4
- data/spec/{stub_registry_spec.rb → unit/stub_registry_spec.rb} +1 -1
- data/spec/{stub_request_snippet_spec.rb → unit/stub_request_snippet_spec.rb} +1 -1
- data/spec/{util → unit/util}/hash_counter_spec.rb +1 -1
- data/spec/{util → unit/util}/hash_keys_stringifier_spec.rb +1 -1
- data/spec/{util → unit/util}/headers_spec.rb +1 -1
- data/spec/{util → unit/util}/json_spec.rb +1 -1
- data/spec/{util → unit/util}/uri_spec.rb +1 -1
- data/spec/{webmock_spec.rb → unit/webmock_spec.rb} +1 -1
- data/webmock.gemspec +1 -1
- metadata +111 -116
- data/spec/httpclient_spec.rb +0 -43
- data/spec/vendor/addressable/lib/addressable/uri.rb +0 -8
- data/spec/vendor/addressable/lib/uri.rb +0 -1
- data/spec/vendor/crack/lib/crack.rb +0 -1
- data/spec/vendor/right_http_connection-1.2.4/History.txt +0 -59
- data/spec/vendor/right_http_connection-1.2.4/Manifest.txt +0 -7
- data/spec/vendor/right_http_connection-1.2.4/README.txt +0 -54
- data/spec/vendor/right_http_connection-1.2.4/Rakefile +0 -103
- data/spec/vendor/right_http_connection-1.2.4/lib/net_fix.rb +0 -160
- data/spec/vendor/right_http_connection-1.2.4/lib/right_http_connection.rb +0 -435
- data/spec/vendor/right_http_connection-1.2.4/setup.rb +0 -1585
- data/spec/webmock_shared.rb +0 -1770
data/spec/webmock_shared.rb
DELETED
@@ -1,1770 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
-
|
3
|
-
unless defined? SAMPLE_HEADERS
|
4
|
-
SAMPLE_HEADERS = { "Content-Length" => "8888", "Accept" => "application/json" }
|
5
|
-
ESCAPED_PARAMS = "x=ab%20c&z=%27Stop%21%27%20said%20Fred"
|
6
|
-
NOT_ESCAPED_PARAMS = "z='Stop!' said Fred&x=ab c"
|
7
|
-
end
|
8
|
-
|
9
|
-
class MyException < StandardError; end;
|
10
|
-
|
11
|
-
shared_examples_for "WebMock" do
|
12
|
-
let(:webmock_server_url) {"http://#{WebMockServer.instance.host_with_port}/"}
|
13
|
-
before(:each) do
|
14
|
-
WebMock.disable_net_connect!
|
15
|
-
WebMock.reset!
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "when web connect" do
|
19
|
-
|
20
|
-
describe "is allowed", :net_connect => true do
|
21
|
-
before(:each) do
|
22
|
-
WebMock.allow_net_connect!
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should make a real web request if request is not stubbed" do
|
26
|
-
http_request(:get, webmock_server_url).status.should == "200"
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should make a real https request if request is not stubbed" do
|
30
|
-
unless http_library == :httpclient
|
31
|
-
http_request(:get, "https://www.paypal.com/uk/cgi-bin/webscr").
|
32
|
-
body.should =~ /.*paypal.*/
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should return stubbed response if request was stubbed" do
|
37
|
-
stub_http_request(:get, "www.example.com").to_return(:body => "abc")
|
38
|
-
http_request(:get, "http://www.example.com/").body.should == "abc"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe "is not allowed" do
|
43
|
-
before(:each) do
|
44
|
-
WebMock.disable_net_connect!
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should return stubbed response if request was stubbed" do
|
48
|
-
stub_http_request(:get, "www.example.com").to_return(:body => "abc")
|
49
|
-
http_request(:get, "http://www.example.com/").body.should == "abc"
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should return stubbed response if request with path was stubbed" do
|
53
|
-
stub_http_request(:get, "www.example.com/hello_world").to_return(:body => "abc")
|
54
|
-
http_request(:get, "http://www.example.com/hello_world").body.should == "abc"
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should raise exception if request was not stubbed" do
|
58
|
-
lambda {
|
59
|
-
http_request(:get, "http://www.example.com/")
|
60
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/))
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe "is not allowed with exception for localhost" do
|
65
|
-
before(:each) do
|
66
|
-
WebMock.disable_net_connect!(:allow_localhost => true)
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should return stubbed response if request was stubbed" do
|
70
|
-
stub_http_request(:get, "www.example.com").to_return(:body => "abc")
|
71
|
-
http_request(:get, "http://www.example.com/").body.should == "abc"
|
72
|
-
end
|
73
|
-
|
74
|
-
it "should raise exception if request was not stubbed" do
|
75
|
-
lambda {
|
76
|
-
http_request(:get, "http://www.example.com/")
|
77
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/))
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should allow a real request to localhost" do
|
81
|
-
lambda {
|
82
|
-
http_request(:get, "http://localhost:12345/")
|
83
|
-
}.should raise_error(connection_refused_exception_class)
|
84
|
-
end
|
85
|
-
|
86
|
-
it "should allow a real request to 127.0.0.1" do
|
87
|
-
lambda {
|
88
|
-
http_request(:get, "http://127.0.0.1:12345/")
|
89
|
-
}.should raise_error(connection_refused_exception_class)
|
90
|
-
end
|
91
|
-
|
92
|
-
it "should allow a real request to 0.0.0.0" do
|
93
|
-
lambda {
|
94
|
-
http_request(:get, "http://0.0.0.0:12345/")
|
95
|
-
}.should raise_error(connection_refused_exception_class)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
describe "is not allowed with exception for allowed domains" do
|
100
|
-
let(:host_with_port){ WebMockServer.instance.host_with_port }
|
101
|
-
|
102
|
-
before(:each) do
|
103
|
-
WebMock.disable_net_connect!(:allow => ["www.example.org", host_with_port])
|
104
|
-
end
|
105
|
-
|
106
|
-
context "when the host is not allowed" do
|
107
|
-
it "should return stubbed response if request was stubbed" do
|
108
|
-
stub_http_request(:get, "www.example.com").to_return(:body => "abc")
|
109
|
-
http_request(:get, "http://www.example.com/").body.should == "abc"
|
110
|
-
end
|
111
|
-
|
112
|
-
it "should raise exception if request was not stubbed" do
|
113
|
-
lambda {
|
114
|
-
http_request(:get, "http://www.example.com/")
|
115
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/))
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
context "when the host with port is not allowed" do
|
120
|
-
it "should return stubbed response if request was stubbed" do
|
121
|
-
stub_http_request(:get, "http://localhost:2345").to_return(:body => "abc")
|
122
|
-
http_request(:get, "http://localhost:2345/").body.should == "abc"
|
123
|
-
end
|
124
|
-
|
125
|
-
it "should raise exception if request was not stubbed" do
|
126
|
-
lambda {
|
127
|
-
http_request(:get, "http://localhost:2345/")
|
128
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://localhost:2345/))
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
context "when the host is allowed" do
|
133
|
-
it "should raise exception if request was not stubbed" do
|
134
|
-
lambda {
|
135
|
-
http_request(:get, "http://www.example.com/")
|
136
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/))
|
137
|
-
end
|
138
|
-
|
139
|
-
it "should allow a real request to allowed host", :net_connect => true do
|
140
|
-
http_request(:get, "http://www.example.org/").status.should == "302"
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
context "when the host with port is allowed" do
|
145
|
-
it "should allow a real request to allowed host", :net_connect => true do
|
146
|
-
http_request(:get, "http://#{host_with_port}/").status.should == "200"
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
context "when the host is allowed but not port" do
|
151
|
-
it "should allow a real request to allowed host", :net_connect => true do
|
152
|
-
lambda {
|
153
|
-
http_request(:get, "http://localhost:123/")
|
154
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://localhost:123/))
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
describe "when matching requests" do
|
161
|
-
|
162
|
-
describe "on uri" do
|
163
|
-
|
164
|
-
it "should match the request by uri with non escaped params if request have escaped parameters" do
|
165
|
-
stub_http_request(:get, "www.example.com/hello/?#{NOT_ESCAPED_PARAMS}").to_return(:body => "abc")
|
166
|
-
http_request(:get, "http://www.example.com/hello/?#{ESCAPED_PARAMS}").body.should == "abc"
|
167
|
-
end
|
168
|
-
|
169
|
-
it "should match the request by uri with escaped parameters even if request has non escaped params" do
|
170
|
-
stub_http_request(:get, "www.example.com/hello/?#{ESCAPED_PARAMS}").to_return(:body => "abc")
|
171
|
-
http_request(:get, "http://www.example.com/hello/?#{NOT_ESCAPED_PARAMS}").body.should == "abc"
|
172
|
-
end
|
173
|
-
|
174
|
-
it "should match the request by regexp matching non escaped params uri if request params are escaped" do
|
175
|
-
stub_http_request(:get, /.*x=ab c.*/).to_return(:body => "abc")
|
176
|
-
http_request(:get, "http://www.example.com/hello/?#{ESCAPED_PARAMS}").body.should == "abc"
|
177
|
-
end
|
178
|
-
|
179
|
-
end
|
180
|
-
|
181
|
-
describe "on query params" do
|
182
|
-
|
183
|
-
it "should match the request by query params declared as a hash" do
|
184
|
-
stub_http_request(:get, "www.example.com").with(:query => {"a" => ["b", "c"]}).to_return(:body => "abc")
|
185
|
-
http_request(:get, "http://www.example.com/?a[]=b&a[]=c").body.should == "abc"
|
186
|
-
end
|
187
|
-
|
188
|
-
it "should match the request by query declared as a string" do
|
189
|
-
stub_http_request(:get, "www.example.com").with(:query => "a[]=b&a[]=c").to_return(:body => "abc")
|
190
|
-
http_request(:get, "http://www.example.com/?a[]=b&a[]=c").body.should == "abc"
|
191
|
-
end
|
192
|
-
|
193
|
-
it "should match the request by query params declared both in uri and query option" do
|
194
|
-
stub_http_request(:get, "www.example.com/?x=3").with(:query => {"a" => ["b", "c"]}).to_return(:body => "abc")
|
195
|
-
http_request(:get, "http://www.example.com/?x=3&a[]=b&a[]=c").body.should == "abc"
|
196
|
-
end
|
197
|
-
|
198
|
-
end
|
199
|
-
|
200
|
-
describe "on method" do
|
201
|
-
|
202
|
-
it "should match the request by method if registered" do
|
203
|
-
stub_http_request(:get, "www.example.com")
|
204
|
-
http_request(:get, "http://www.example.com/").status.should == "200"
|
205
|
-
end
|
206
|
-
|
207
|
-
it "should not match requests if method is different" do
|
208
|
-
stub_http_request(:get, "www.example.com")
|
209
|
-
http_request(:get, "http://www.example.com/").status.should == "200"
|
210
|
-
lambda {
|
211
|
-
http_request(:delete, "http://www.example.com/")
|
212
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: DELETE http://www.example.com/)
|
213
|
-
)
|
214
|
-
end
|
215
|
-
|
216
|
-
end
|
217
|
-
|
218
|
-
describe "on body" do
|
219
|
-
|
220
|
-
it "should match requests if body is the same" do
|
221
|
-
stub_http_request(:post, "www.example.com").with(:body => "abc")
|
222
|
-
http_request(
|
223
|
-
:post, "http://www.example.com/",
|
224
|
-
:body => "abc").status.should == "200"
|
225
|
-
end
|
226
|
-
|
227
|
-
it "should match requests if body is not set in the stub" do
|
228
|
-
stub_http_request(:post, "www.example.com")
|
229
|
-
http_request(
|
230
|
-
:post, "http://www.example.com/",
|
231
|
-
:body => "abc").status.should == "200"
|
232
|
-
end
|
233
|
-
|
234
|
-
it "should not match requests if body is different" do
|
235
|
-
stub_http_request(:post, "www.example.com").with(:body => "abc")
|
236
|
-
lambda {
|
237
|
-
http_request(:post, "http://www.example.com/", :body => "def")
|
238
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: POST http://www.example.com/ with body 'def'))
|
239
|
-
end
|
240
|
-
|
241
|
-
describe "with regular expressions" do
|
242
|
-
|
243
|
-
it "should match requests if body matches regexp" do
|
244
|
-
stub_http_request(:post, "www.example.com").with(:body => /\d+abc$/)
|
245
|
-
http_request(
|
246
|
-
:post, "http://www.example.com/",
|
247
|
-
:body => "123abc").status.should == "200"
|
248
|
-
end
|
249
|
-
|
250
|
-
it "should not match requests if body doesn't match regexp" do
|
251
|
-
stub_http_request(:post, "www.example.com").with(:body => /^abc/)
|
252
|
-
lambda {
|
253
|
-
http_request(:post, "http://www.example.com/", :body => "xabc")
|
254
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: POST http://www.example.com/ with body 'xabc'))
|
255
|
-
end
|
256
|
-
|
257
|
-
end
|
258
|
-
|
259
|
-
describe "when body is declared as a hash" do
|
260
|
-
before(:each) do
|
261
|
-
stub_http_request(:post, "www.example.com").
|
262
|
-
with(:body => {:a => '1', :b => 'five', 'c' => {'d' => ['e', 'f']} })
|
263
|
-
end
|
264
|
-
|
265
|
-
describe "for request with url encoded body" do
|
266
|
-
|
267
|
-
it "should match request if hash matches body" do
|
268
|
-
http_request(
|
269
|
-
:post, "http://www.example.com/",
|
270
|
-
:body => 'a=1&c[d][]=e&c[d][]=f&b=five').status.should == "200"
|
271
|
-
end
|
272
|
-
|
273
|
-
it "should match request if hash matches body in different order of params" do
|
274
|
-
http_request(
|
275
|
-
:post, "http://www.example.com/",
|
276
|
-
:body => 'a=1&c[d][]=e&b=five&c[d][]=f').status.should == "200"
|
277
|
-
end
|
278
|
-
|
279
|
-
it "should not match if hash doesn't match url encoded body" do
|
280
|
-
lambda {
|
281
|
-
http_request(
|
282
|
-
:post, "http://www.example.com/",
|
283
|
-
:body => 'c[d][]=f&a=1&c[d][]=e').status.should == "200"
|
284
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: POST http://www.example.com/ with body 'c\[d\]\[\]=f&a=1&c\[d\]\[\]=e'))
|
285
|
-
end
|
286
|
-
|
287
|
-
end
|
288
|
-
|
289
|
-
|
290
|
-
describe "for request with json body and content type is set to json" do
|
291
|
-
|
292
|
-
it "should match if hash matches body" do
|
293
|
-
http_request(
|
294
|
-
:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/json'},
|
295
|
-
:body => "{\"a\":\"1\",\"c\":{\"d\":[\"e\",\"f\"]},\"b\":\"five\"}").status.should == "200"
|
296
|
-
end
|
297
|
-
|
298
|
-
it "should match if hash matches body in different form" do
|
299
|
-
http_request(
|
300
|
-
:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/json'},
|
301
|
-
:body => "{\"a\":\"1\",\"b\":\"five\",\"c\":{\"d\":[\"e\",\"f\"]}}").status.should == "200"
|
302
|
-
end
|
303
|
-
|
304
|
-
it "should match if hash contains date string" do #Crack creates date object
|
305
|
-
WebMock.reset!
|
306
|
-
stub_http_request(:post, "www.example.com").
|
307
|
-
with(:body => {"foo" => "2010-01-01"})
|
308
|
-
http_request(
|
309
|
-
:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/json'},
|
310
|
-
:body => "{\"foo\":\"2010-01-01\"}").status.should == "200"
|
311
|
-
end
|
312
|
-
end
|
313
|
-
|
314
|
-
describe "for request with xml body and content type is set to xml" do
|
315
|
-
before(:each) do
|
316
|
-
WebMock.reset!
|
317
|
-
stub_http_request(:post, "www.example.com").
|
318
|
-
with(:body => { "opt" => {:a => '1', :b => 'five', 'c' => {'d' => ['e', 'f']} }})
|
319
|
-
end
|
320
|
-
|
321
|
-
it "should match if hash matches body" do
|
322
|
-
http_request(
|
323
|
-
:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/xml'},
|
324
|
-
:body => "<opt a=\"1\" b=\"five\">\n <c>\n <d>e</d>\n <d>f</d>\n </c>\n</opt>\n").status.should == "200"
|
325
|
-
end
|
326
|
-
|
327
|
-
it "should match if hash matches body in different form" do
|
328
|
-
http_request(
|
329
|
-
:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/xml'},
|
330
|
-
:body => "<opt b=\"five\" a=\"1\">\n <c>\n <d>e</d>\n <d>f</d>\n </c>\n</opt>\n").status.should == "200"
|
331
|
-
end
|
332
|
-
|
333
|
-
it "should match if hash contains date string" do #Crack creates date object
|
334
|
-
WebMock.reset!
|
335
|
-
stub_http_request(:post, "www.example.com").
|
336
|
-
with(:body => {"opt" => {"foo" => "2010-01-01"}})
|
337
|
-
http_request(
|
338
|
-
:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/xml'},
|
339
|
-
:body => "<opt foo=\"2010-01-01\">\n</opt>\n").status.should == "200"
|
340
|
-
end
|
341
|
-
|
342
|
-
end
|
343
|
-
|
344
|
-
end
|
345
|
-
|
346
|
-
end
|
347
|
-
|
348
|
-
describe "on headers" do
|
349
|
-
|
350
|
-
it "should match requests if headers are the same" do
|
351
|
-
stub_http_request(:get, "www.example.com").with(:headers => SAMPLE_HEADERS )
|
352
|
-
http_request(
|
353
|
-
:get, "http://www.example.com/",
|
354
|
-
:headers => SAMPLE_HEADERS).status.should == "200"
|
355
|
-
end
|
356
|
-
|
357
|
-
it "should match requests if headers are the same and declared as array" do
|
358
|
-
stub_http_request(:get, "www.example.com").with(:headers => {"a" => ["b"]} )
|
359
|
-
http_request(
|
360
|
-
:get, "http://www.example.com/",
|
361
|
-
:headers => {"a" => "b"}).status.should == "200"
|
362
|
-
end
|
363
|
-
|
364
|
-
describe "when multiple headers with the same key are used" do
|
365
|
-
|
366
|
-
it "should match requests if headers are the same" do
|
367
|
-
stub_http_request(:get, "www.example.com").with(:headers => {"a" => ["b", "c"]} )
|
368
|
-
http_request(
|
369
|
-
:get, "http://www.example.com/",
|
370
|
-
:headers => {"a" => ["b", "c"]}).status.should == "200"
|
371
|
-
end
|
372
|
-
|
373
|
-
it "should match requests if headers are the same but in different order" do
|
374
|
-
stub_http_request(:get, "www.example.com").with(:headers => {"a" => ["b", "c"]} )
|
375
|
-
http_request(
|
376
|
-
:get, "http://www.example.com/",
|
377
|
-
:headers => {"a" => ["c", "b"]}).status.should == "200"
|
378
|
-
end
|
379
|
-
|
380
|
-
it "should not match requests if headers are different" do
|
381
|
-
stub_http_request(:get, "www.example.com").with(:headers => {"a" => ["b", "c"]})
|
382
|
-
|
383
|
-
lambda {
|
384
|
-
http_request(
|
385
|
-
:get, "http://www.example.com/",
|
386
|
-
:headers => {"a" => ["b", "d"]})
|
387
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/ with headers))
|
388
|
-
end
|
389
|
-
|
390
|
-
end
|
391
|
-
|
392
|
-
it "should match requests if request headers are not stubbed" do
|
393
|
-
stub_http_request(:get, "www.example.com")
|
394
|
-
http_request(
|
395
|
-
:get, "http://www.example.com/",
|
396
|
-
:headers => SAMPLE_HEADERS).status.should == "200"
|
397
|
-
end
|
398
|
-
|
399
|
-
it "should not match requests if headers are different" do
|
400
|
-
stub_http_request(:get, "www.example.com").with(:headers => SAMPLE_HEADERS)
|
401
|
-
|
402
|
-
lambda {
|
403
|
-
http_request(
|
404
|
-
:get, "http://www.example.com/",
|
405
|
-
:headers => { 'Content-Length' => '9999'})
|
406
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/ with headers))
|
407
|
-
end
|
408
|
-
|
409
|
-
it "should not match if accept header is different" do
|
410
|
-
stub_http_request(:get, "www.example.com").
|
411
|
-
with(:headers => { 'Accept' => 'application/json'})
|
412
|
-
lambda {
|
413
|
-
http_request(
|
414
|
-
:get, "http://www.example.com/",
|
415
|
-
:headers => { 'Accept' => 'application/xml'})
|
416
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/ with headers))
|
417
|
-
end
|
418
|
-
|
419
|
-
describe "with regular expressions" do
|
420
|
-
|
421
|
-
it "should match requests if header values match regular expression" do
|
422
|
-
stub_http_request(:get, "www.example.com").with(:headers => { :some_header => /^MyAppName$/ })
|
423
|
-
http_request(
|
424
|
-
:get, "http://www.example.com/",
|
425
|
-
:headers => { 'some-header' => 'MyAppName' }).status.should == "200"
|
426
|
-
end
|
427
|
-
|
428
|
-
it "should not match requests if headers values do not match regular expression" do
|
429
|
-
stub_http_request(:get, "www.example.com").with(:headers => { :some_header => /^MyAppName$/ })
|
430
|
-
|
431
|
-
lambda {
|
432
|
-
http_request(
|
433
|
-
:get, "http://www.example.com/",
|
434
|
-
:headers => { 'some-header' => 'xMyAppName' })
|
435
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/ with headers))
|
436
|
-
end
|
437
|
-
|
438
|
-
end
|
439
|
-
end
|
440
|
-
|
441
|
-
describe "with basic authentication" do
|
442
|
-
|
443
|
-
it "should match if credentials are the same" do
|
444
|
-
stub_http_request(:get, "user:pass@www.example.com")
|
445
|
-
http_request(:get, "http://user:pass@www.example.com/").status.should == "200"
|
446
|
-
end
|
447
|
-
|
448
|
-
it "should not match if credentials are different" do
|
449
|
-
stub_http_request(:get, "user:pass@www.example.com")
|
450
|
-
lambda {
|
451
|
-
http_request(:get, "http://user:pazz@www.example.com/").status.should == "200"
|
452
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://user:pazz@www.example.com/))
|
453
|
-
end
|
454
|
-
|
455
|
-
it "should not match if credentials are stubbed but not provided in the request" do
|
456
|
-
stub_http_request(:get, "user:pass@www.example.com")
|
457
|
-
lambda {
|
458
|
-
http_request(:get, "http://www.example.com/").status.should == "200"
|
459
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/))
|
460
|
-
end
|
461
|
-
|
462
|
-
it "should not match if credentials are not stubbed but exist in the request" do
|
463
|
-
stub_http_request(:get, "www.example.com")
|
464
|
-
lambda {
|
465
|
-
http_request(:get, "http://user:pazz@www.example.com/").status.should == "200"
|
466
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://user:pazz@www.example.com/))
|
467
|
-
end
|
468
|
-
|
469
|
-
end
|
470
|
-
|
471
|
-
describe "with block" do
|
472
|
-
|
473
|
-
it "should match if block returns true" do
|
474
|
-
stub_http_request(:get, "www.example.com").with { |request| true }
|
475
|
-
http_request(:get, "http://www.example.com/").status.should == "200"
|
476
|
-
end
|
477
|
-
|
478
|
-
it "should not match if block returns false" do
|
479
|
-
stub_http_request(:get, "www.example.com").with { |request| false }
|
480
|
-
lambda {
|
481
|
-
http_request(:get, "http://www.example.com/")
|
482
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/))
|
483
|
-
end
|
484
|
-
|
485
|
-
it "should pass the request to the block" do
|
486
|
-
stub_http_request(:post, "www.example.com").with { |request| request.body == "wadus" }
|
487
|
-
http_request(
|
488
|
-
:post, "http://www.example.com/",
|
489
|
-
:body => "wadus").status.should == "200"
|
490
|
-
lambda {
|
491
|
-
http_request(:post, "http://www.example.com/", :body => "jander")
|
492
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: POST http://www.example.com/ with body 'jander'))
|
493
|
-
end
|
494
|
-
|
495
|
-
end
|
496
|
-
|
497
|
-
end
|
498
|
-
|
499
|
-
describe "raising stubbed exceptions" do
|
500
|
-
|
501
|
-
it "should raise exception if declared in a stubbed response" do
|
502
|
-
stub_http_request(:get, "www.example.com").to_raise(MyException)
|
503
|
-
lambda {
|
504
|
-
http_request(:get, "http://www.example.com/")
|
505
|
-
}.should raise_error(MyException, "Exception from WebMock")
|
506
|
-
end
|
507
|
-
|
508
|
-
it "should raise exception if declared in a stubbed response as exception instance" do
|
509
|
-
stub_http_request(:get, "www.example.com").to_raise(MyException.new("hello world"))
|
510
|
-
lambda {
|
511
|
-
http_request(:get, "http://www.example.com/")
|
512
|
-
}.should raise_error(MyException, "hello world")
|
513
|
-
end
|
514
|
-
|
515
|
-
it "should raise exception if declared in a stubbed response as exception instance" do
|
516
|
-
stub_http_request(:get, "www.example.com").to_raise("hello world")
|
517
|
-
lambda {
|
518
|
-
http_request(:get, "http://www.example.com/")
|
519
|
-
}.should raise_error("hello world")
|
520
|
-
end
|
521
|
-
|
522
|
-
it "should raise exception if declared in a stubbed response after returning declared response" do
|
523
|
-
stub_http_request(:get, "www.example.com").to_return(:body => "abc").then.to_raise(MyException)
|
524
|
-
http_request(:get, "http://www.example.com/").body.should == "abc"
|
525
|
-
lambda {
|
526
|
-
http_request(:get, "http://www.example.com/")
|
527
|
-
}.should raise_error(MyException, "Exception from WebMock")
|
528
|
-
end
|
529
|
-
|
530
|
-
end
|
531
|
-
|
532
|
-
|
533
|
-
describe "raising timeout errors" do
|
534
|
-
|
535
|
-
it "should raise timeout exception if declared in a stubbed response" do
|
536
|
-
stub_http_request(:get, "www.example.com").to_timeout
|
537
|
-
lambda {
|
538
|
-
http_request(:get, "http://www.example.com/")
|
539
|
-
}.should raise_error(client_timeout_exception_class)
|
540
|
-
end
|
541
|
-
|
542
|
-
it "should raise exception if declared in a stubbed response after returning declared response" do
|
543
|
-
stub_http_request(:get, "www.example.com").to_return(:body => "abc").then.to_timeout
|
544
|
-
http_request(:get, "http://www.example.com/").body.should == "abc"
|
545
|
-
lambda {
|
546
|
-
http_request(:get, "http://www.example.com/")
|
547
|
-
}.should raise_error(client_timeout_exception_class)
|
548
|
-
end
|
549
|
-
|
550
|
-
end
|
551
|
-
|
552
|
-
describe "returning stubbed responses" do
|
553
|
-
|
554
|
-
it "should return declared body" do
|
555
|
-
stub_http_request(:get, "www.example.com").to_return(:body => "abc")
|
556
|
-
http_request(:get, "http://www.example.com/").body.should == "abc"
|
557
|
-
end
|
558
|
-
|
559
|
-
it "should return declared headers" do
|
560
|
-
stub_http_request(:get, "www.example.com").to_return(:headers => SAMPLE_HEADERS)
|
561
|
-
response = http_request(:get, "http://www.example.com/")
|
562
|
-
response.headers["Content-Length"].should == "8888"
|
563
|
-
end
|
564
|
-
|
565
|
-
it "should return declared headers when there are multiple headers with the same key" do
|
566
|
-
stub_http_request(:get, "www.example.com").to_return(:headers => {"a" => ["b", "c"]})
|
567
|
-
response = http_request(:get, "http://www.example.com/")
|
568
|
-
response.headers["A"].should == "b, c"
|
569
|
-
end
|
570
|
-
|
571
|
-
it "should return declared status code" do
|
572
|
-
stub_http_request(:get, "www.example.com").to_return(:status => 500)
|
573
|
-
http_request(:get, "http://www.example.com/").status.should == "500"
|
574
|
-
end
|
575
|
-
|
576
|
-
it "should return declared status message" do
|
577
|
-
stub_http_request(:get, "www.example.com").to_return(:status => [500, "Internal Server Error"])
|
578
|
-
response = http_request(:get, "http://www.example.com/")
|
579
|
-
# not supported by em-http-request, it always returns "unknown" for http_reason
|
580
|
-
unless http_library == :em_http_request
|
581
|
-
response.message.should == "Internal Server Error"
|
582
|
-
end
|
583
|
-
end
|
584
|
-
|
585
|
-
it "should return default status code" do
|
586
|
-
stub_http_request(:get, "www.example.com")
|
587
|
-
http_request(:get, "http://www.example.com/").status.should == "200"
|
588
|
-
end
|
589
|
-
|
590
|
-
it "should return default empty message" do
|
591
|
-
stub_http_request(:get, "www.example.com")
|
592
|
-
response = http_request(:get, "http://www.example.com/")
|
593
|
-
# not supported by em-http-request, it always returns "unknown" for http_reason
|
594
|
-
unless http_library == :em_http_request
|
595
|
-
response.message.should == ""
|
596
|
-
end
|
597
|
-
end
|
598
|
-
|
599
|
-
it "should return body declared as IO" do
|
600
|
-
stub_http_request(:get, "www.example.com").to_return(:body => File.new(__FILE__))
|
601
|
-
http_request(:get, "http://www.example.com/").body.should == File.new(__FILE__).read
|
602
|
-
end
|
603
|
-
|
604
|
-
it "should return body declared as IO if requested many times" do
|
605
|
-
stub_http_request(:get, "www.example.com").to_return(:body => File.new(__FILE__))
|
606
|
-
2.times do
|
607
|
-
http_request(:get, "http://www.example.com/").body.should == File.new(__FILE__).read
|
608
|
-
end
|
609
|
-
end
|
610
|
-
|
611
|
-
it "should close IO declared as response body after reading" do
|
612
|
-
stub_http_request(:get, "www.example.com").to_return(:body => @file = File.new(__FILE__))
|
613
|
-
@file.should be_closed
|
614
|
-
end
|
615
|
-
|
616
|
-
describe "dynamic response parts" do
|
617
|
-
|
618
|
-
it "should return evaluated response body" do
|
619
|
-
stub_http_request(:post, "www.example.com").to_return(:body => lambda { |request| request.body })
|
620
|
-
http_request(:post, "http://www.example.com/", :body => "echo").body.should == "echo"
|
621
|
-
end
|
622
|
-
|
623
|
-
it "should return evaluated response headers" do
|
624
|
-
stub_http_request(:post, "www.example.com").to_return(:headers => lambda { |request| request.headers })
|
625
|
-
http_request(:post, "http://www.example.com/", :body => "abc", :headers => {'A' => 'B'}).headers['A'].should == 'B'
|
626
|
-
end
|
627
|
-
|
628
|
-
end
|
629
|
-
|
630
|
-
describe "dynamic responses" do
|
631
|
-
|
632
|
-
class Responder
|
633
|
-
def call(request)
|
634
|
-
{:body => request.body}
|
635
|
-
end
|
636
|
-
end
|
637
|
-
|
638
|
-
it "should return evaluated response body" do
|
639
|
-
stub_http_request(:post, "www.example.com").to_return(lambda { |request|
|
640
|
-
{:body => request.body}
|
641
|
-
})
|
642
|
-
http_request(:post, "http://www.example.com/", :body => "echo").body.should == "echo"
|
643
|
-
end
|
644
|
-
|
645
|
-
it "should return evaluated response headers" do
|
646
|
-
stub_http_request(:get, "www.example.com").to_return(lambda { |request|
|
647
|
-
{:headers => request.headers}
|
648
|
-
})
|
649
|
-
http_request(:get, "http://www.example.com/", :headers => {'A' => 'B'}).headers['A'].should == 'B'
|
650
|
-
end
|
651
|
-
|
652
|
-
it "should create dynamic responses from blocks" do
|
653
|
-
stub_http_request(:post, "www.example.com").to_return do |request|
|
654
|
-
{:body => request.body}
|
655
|
-
end
|
656
|
-
http_request(:post, "http://www.example.com/", :body => "echo").body.should == "echo"
|
657
|
-
end
|
658
|
-
|
659
|
-
it "should create dynamic responses from objects responding to call" do
|
660
|
-
stub_http_request(:post, "www.example.com").to_return(Responder.new)
|
661
|
-
http_request(:post, "http://www.example.com/", :body => "echo").body.should == "echo"
|
662
|
-
end
|
663
|
-
|
664
|
-
end
|
665
|
-
|
666
|
-
|
667
|
-
describe "replying raw responses from file" do
|
668
|
-
|
669
|
-
before(:each) do
|
670
|
-
@file = File.new(File.expand_path(File.dirname(__FILE__)) + "/example_curl_output.txt")
|
671
|
-
stub_http_request(:get, "www.example.com").to_return(@file)
|
672
|
-
@response = http_request(:get, "http://www.example.com/")
|
673
|
-
end
|
674
|
-
|
675
|
-
it "should return recorded headers" do
|
676
|
-
@response.headers.should == {
|
677
|
-
"Date"=>"Sat, 23 Jan 2010 01:01:05 GMT",
|
678
|
-
"Content-Type"=>"text/html; charset=UTF-8",
|
679
|
-
"Content-Length"=>"419",
|
680
|
-
"Connection"=>"Keep-Alive",
|
681
|
-
"Accept"=>"image/jpeg, image/png"
|
682
|
-
}
|
683
|
-
end
|
684
|
-
|
685
|
-
it "should return recorded body" do
|
686
|
-
@response.body.size.should == 419
|
687
|
-
end
|
688
|
-
|
689
|
-
it "should return recorded status" do
|
690
|
-
@response.status.should == "202"
|
691
|
-
end
|
692
|
-
|
693
|
-
it "should return recorded status message" do
|
694
|
-
# not supported by em-http-request, it always returns "unknown" for http_reason
|
695
|
-
unless http_library == :em_http_request
|
696
|
-
@response.message.should == "OK"
|
697
|
-
end
|
698
|
-
end
|
699
|
-
|
700
|
-
it "should ensure file is closed" do
|
701
|
-
@file.should be_closed
|
702
|
-
end
|
703
|
-
|
704
|
-
end
|
705
|
-
|
706
|
-
describe "replying responses raw responses from string" do
|
707
|
-
|
708
|
-
before(:each) do
|
709
|
-
@input = File.new(File.expand_path(File.dirname(__FILE__)) + "/example_curl_output.txt").read
|
710
|
-
stub_http_request(:get, "www.example.com").to_return(@input)
|
711
|
-
@response = http_request(:get, "http://www.example.com/")
|
712
|
-
end
|
713
|
-
|
714
|
-
it "should return recorded headers" do
|
715
|
-
@response.headers.should == {
|
716
|
-
"Date"=>"Sat, 23 Jan 2010 01:01:05 GMT",
|
717
|
-
"Content-Type"=>"text/html; charset=UTF-8",
|
718
|
-
"Content-Length"=>"419",
|
719
|
-
"Connection"=>"Keep-Alive",
|
720
|
-
"Accept"=>"image/jpeg, image/png"
|
721
|
-
}
|
722
|
-
end
|
723
|
-
|
724
|
-
it "should return recorded body" do
|
725
|
-
@response.body.size.should == 419
|
726
|
-
end
|
727
|
-
|
728
|
-
it "should return recorded status" do
|
729
|
-
@response.status.should == "202"
|
730
|
-
end
|
731
|
-
|
732
|
-
it "should return recorded status message" do
|
733
|
-
# not supported by em-http-request, it always returns "unknown" for http_reason
|
734
|
-
unless http_library == :em_http_request
|
735
|
-
@response.message.should == "OK"
|
736
|
-
end
|
737
|
-
end
|
738
|
-
end
|
739
|
-
|
740
|
-
describe "replying raw responses evaluated dynamically" do
|
741
|
-
before(:each) do
|
742
|
-
@files = {
|
743
|
-
"www.example.com" => File.new(File.expand_path(File.dirname(__FILE__)) + "/example_curl_output.txt")
|
744
|
-
}
|
745
|
-
end
|
746
|
-
|
747
|
-
it "should return response from evaluated file" do
|
748
|
-
stub_http_request(:get, "www.example.com").to_return(lambda {|request| @files[request.uri.host.to_s] })
|
749
|
-
http_request(:get, "http://www.example.com/").body.size.should == 419
|
750
|
-
end
|
751
|
-
|
752
|
-
it "should return response from evaluated string" do
|
753
|
-
stub_http_request(:get, "www.example.com").to_return(lambda {|request| @files[request.uri.host.to_s].read })
|
754
|
-
http_request(:get, "http://www.example.com/").body.size.should == 419
|
755
|
-
end
|
756
|
-
end
|
757
|
-
|
758
|
-
describe "rack responses" do
|
759
|
-
before(:each) do
|
760
|
-
stub_request(:any, "http://www.example.com/greet").to_rack(MyRackApp)
|
761
|
-
end
|
762
|
-
|
763
|
-
it "should return response returned by rack app" do
|
764
|
-
http_request(:post, 'http://www.example.com/greet', :body => 'name=Jimmy').body.should == 'Good to meet you, Jimmy!'
|
765
|
-
end
|
766
|
-
end
|
767
|
-
|
768
|
-
describe "sequences of responses" do
|
769
|
-
it "should return responses one by one if declared in array" do
|
770
|
-
stub_http_request(:get, "www.example.com").to_return([ {:body => "1"}, {:body => "2"}, {:body => "3"} ])
|
771
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
772
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
773
|
-
http_request(:get, "http://www.example.com/").body.should == "3"
|
774
|
-
end
|
775
|
-
|
776
|
-
it "should repeat returning last declared response from a sequence after all responses were returned" do
|
777
|
-
stub_http_request(:get, "www.example.com").to_return([ {:body => "1"}, {:body => "2"} ])
|
778
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
779
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
780
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
781
|
-
end
|
782
|
-
|
783
|
-
it "should return responses one by one if declared as comma separated params" do
|
784
|
-
stub_http_request(:get, "www.example.com").to_return({:body => "1"}, {:body => "2"}, {:body => "3"})
|
785
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
786
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
787
|
-
http_request(:get, "http://www.example.com/").body.should == "3"
|
788
|
-
end
|
789
|
-
|
790
|
-
it "should return responses one by one if declared with several to_return invokations" do
|
791
|
-
stub_http_request(:get, "www.example.com").
|
792
|
-
to_return({:body => "1"}).
|
793
|
-
to_return({:body => "2"}).
|
794
|
-
to_return({:body => "3"})
|
795
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
796
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
797
|
-
http_request(:get, "http://www.example.com/").body.should == "3"
|
798
|
-
end
|
799
|
-
|
800
|
-
it "should return responses one by one if declared with to_return invocations separated with then syntactic sugar" do
|
801
|
-
stub_http_request(:get, "www.example.com").to_return({:body => "1"}).then.
|
802
|
-
to_return({:body => "2"}).then.to_return({:body => "3"})
|
803
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
804
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
805
|
-
http_request(:get, "http://www.example.com/").body.should == "3"
|
806
|
-
end
|
807
|
-
|
808
|
-
end
|
809
|
-
|
810
|
-
describe "repeating declared responses more than once" do
|
811
|
-
|
812
|
-
it "should repeat one response declared number of times" do
|
813
|
-
stub_http_request(:get, "www.example.com").
|
814
|
-
to_return({:body => "1"}).times(2).
|
815
|
-
to_return({:body => "2"})
|
816
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
817
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
818
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
819
|
-
end
|
820
|
-
|
821
|
-
|
822
|
-
it "should repeat sequence of response declared number of times" do
|
823
|
-
stub_http_request(:get, "www.example.com").
|
824
|
-
to_return({:body => "1"}, {:body => "2"}).times(2).
|
825
|
-
to_return({:body => "3"})
|
826
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
827
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
828
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
829
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
830
|
-
http_request(:get, "http://www.example.com/").body.should == "3"
|
831
|
-
end
|
832
|
-
|
833
|
-
|
834
|
-
it "should repeat infinitely last response even if number of declared times is lower" do
|
835
|
-
stub_http_request(:get, "www.example.com").
|
836
|
-
to_return({:body => "1"}).times(2)
|
837
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
838
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
839
|
-
http_request(:get, "http://www.example.com/").body.should == "1"
|
840
|
-
end
|
841
|
-
|
842
|
-
it "should give error if times is declared without specifying response" do
|
843
|
-
lambda {
|
844
|
-
stub_http_request(:get, "www.example.com").times(3)
|
845
|
-
}.should raise_error("Invalid WebMock stub declaration. times(N) can be declared only after response declaration.")
|
846
|
-
end
|
847
|
-
|
848
|
-
end
|
849
|
-
|
850
|
-
describe "raising declared exceptions more than once" do
|
851
|
-
|
852
|
-
it "should repeat raising exception declared number of times" do
|
853
|
-
stub_http_request(:get, "www.example.com").
|
854
|
-
to_raise(MyException).times(2).
|
855
|
-
to_return({:body => "2"})
|
856
|
-
lambda {
|
857
|
-
http_request(:get, "http://www.example.com/")
|
858
|
-
}.should raise_error(MyException, "Exception from WebMock")
|
859
|
-
lambda {
|
860
|
-
http_request(:get, "http://www.example.com/")
|
861
|
-
}.should raise_error(MyException, "Exception from WebMock")
|
862
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
863
|
-
end
|
864
|
-
|
865
|
-
it "should repeat raising sequence of exceptions declared number of times" do
|
866
|
-
stub_http_request(:get, "www.example.com").
|
867
|
-
to_raise(MyException, ArgumentError).times(2).
|
868
|
-
to_return({:body => "2"})
|
869
|
-
lambda {
|
870
|
-
http_request(:get, "http://www.example.com/")
|
871
|
-
}.should raise_error(MyException, "Exception from WebMock")
|
872
|
-
lambda {
|
873
|
-
http_request(:get, "http://www.example.com/")
|
874
|
-
}.should raise_error(ArgumentError)
|
875
|
-
lambda {
|
876
|
-
http_request(:get, "http://www.example.com/")
|
877
|
-
}.should raise_error(MyException, "Exception from WebMock")
|
878
|
-
lambda {
|
879
|
-
http_request(:get, "http://www.example.com/")
|
880
|
-
}.should raise_error(ArgumentError)
|
881
|
-
http_request(:get, "http://www.example.com/").body.should == "2"
|
882
|
-
end
|
883
|
-
end
|
884
|
-
end
|
885
|
-
|
886
|
-
describe "precedence of stubs" do
|
887
|
-
|
888
|
-
it "should use the last declared matching request stub" do
|
889
|
-
stub_http_request(:get, "www.example.com").to_return(:body => "abc")
|
890
|
-
stub_http_request(:get, "www.example.com").to_return(:body => "def")
|
891
|
-
http_request(:get, "http://www.example.com/").body.should == "def"
|
892
|
-
end
|
893
|
-
|
894
|
-
it "should not be affected by the type of uri or request method" do
|
895
|
-
stub_http_request(:get, "www.example.com").to_return(:body => "abc")
|
896
|
-
stub_http_request(:any, /.*example.*/).to_return(:body => "def")
|
897
|
-
http_request(:get, "http://www.example.com/").body.should == "def"
|
898
|
-
end
|
899
|
-
|
900
|
-
end
|
901
|
-
|
902
|
-
describe "verification of request expectation" do
|
903
|
-
|
904
|
-
describe "when net connect not allowed" do
|
905
|
-
|
906
|
-
before(:each) do
|
907
|
-
WebMock.disable_net_connect!
|
908
|
-
stub_http_request(:any, "http://www.example.com")
|
909
|
-
stub_http_request(:any, "https://www.example.com")
|
910
|
-
end
|
911
|
-
|
912
|
-
it "should pass if request was executed with the same uri and method" do
|
913
|
-
lambda {
|
914
|
-
http_request(:get, "http://www.example.com/")
|
915
|
-
a_request(:get, "http://www.example.com").should have_been_made.once
|
916
|
-
}.should_not raise_error
|
917
|
-
end
|
918
|
-
|
919
|
-
it "should accept verification as WebMock class method invocation" do
|
920
|
-
lambda {
|
921
|
-
http_request(:get, "http://www.example.com/")
|
922
|
-
WebMock.request(:get, "http://www.example.com").should have_been_made.once
|
923
|
-
}.should_not raise_error
|
924
|
-
end
|
925
|
-
|
926
|
-
it "should pass if request was not expected and not executed" do
|
927
|
-
lambda {
|
928
|
-
a_request(:get, "http://www.example.com").should_not have_been_made
|
929
|
-
}.should_not raise_error
|
930
|
-
end
|
931
|
-
|
932
|
-
it "should fail if request was not expected but executed" do
|
933
|
-
lambda {
|
934
|
-
http_request(:get, "http://www.example.com/")
|
935
|
-
a_request(:get, "http://www.example.com").should_not have_been_made
|
936
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 0 times but it executed 1 time))
|
937
|
-
end
|
938
|
-
|
939
|
-
it "should fail with message with executed requests listed" do
|
940
|
-
lambda {
|
941
|
-
http_request(:get, "http://www.example.com/")
|
942
|
-
a_request(:get, "http://www.example.com").should_not have_been_made
|
943
|
-
}.should fail_with(%r{The following requests were made:\n\nGET http://www.example.com/.+was made 1 time})
|
944
|
-
end
|
945
|
-
|
946
|
-
it "should fail if request was not executed" do
|
947
|
-
lambda {
|
948
|
-
a_request(:get, "http://www.example.com").should have_been_made
|
949
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 1 time but it executed 0 times))
|
950
|
-
end
|
951
|
-
|
952
|
-
it "should fail if request was executed to different uri" do
|
953
|
-
lambda {
|
954
|
-
http_request(:get, "http://www.example.com/")
|
955
|
-
a_request(:get, "http://www.example.org").should have_been_made
|
956
|
-
}.should fail_with(%r(The request GET http://www.example.org/ was expected to execute 1 time but it executed 0 times))
|
957
|
-
end
|
958
|
-
|
959
|
-
it "should fail if request was executed with different method" do
|
960
|
-
lambda {
|
961
|
-
http_request(:post, "http://www.example.com/", :body => "abc")
|
962
|
-
a_request(:get, "http://www.example.com").should have_been_made
|
963
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 1 time but it executed 0 times))
|
964
|
-
end
|
965
|
-
|
966
|
-
it "should pass if request was executed with different form of uri" do
|
967
|
-
lambda {
|
968
|
-
http_request(:get, "http://www.example.com/")
|
969
|
-
a_request(:get, "www.example.com").should have_been_made
|
970
|
-
}.should_not raise_error
|
971
|
-
end
|
972
|
-
|
973
|
-
it "should pass if request was executed with different form of uri without port " do
|
974
|
-
lambda {
|
975
|
-
http_request(:get, "http://www.example.com/")
|
976
|
-
a_request(:get, "www.example.com:80").should have_been_made
|
977
|
-
}.should_not raise_error
|
978
|
-
end
|
979
|
-
|
980
|
-
it "should pass if request was executed with different form of uri with port" do
|
981
|
-
lambda {
|
982
|
-
http_request(:get, "http://www.example.com/")
|
983
|
-
a_request(:get, "www.example.com:80").should have_been_made
|
984
|
-
}.should_not raise_error
|
985
|
-
end
|
986
|
-
|
987
|
-
it "should fail if request was executed with different port" do
|
988
|
-
lambda {
|
989
|
-
http_request(:get, "http://www.example.com:80/")
|
990
|
-
a_request(:get, "www.example.com:90").should have_been_made
|
991
|
-
}.should fail_with(%r(The request GET http://www.example.com:90/ was expected to execute 1 time but it executed 0 times))
|
992
|
-
end
|
993
|
-
|
994
|
-
it "should pass if request was executed with different form of uri with https port" do
|
995
|
-
lambda {
|
996
|
-
http_request(:get, "https://www.example.com/")
|
997
|
-
a_request(:get, "https://www.example.com:443/").should have_been_made
|
998
|
-
}.should_not raise_error
|
999
|
-
end
|
1000
|
-
|
1001
|
-
describe "when matching requests with escaped uris" do
|
1002
|
-
|
1003
|
-
before(:each) do
|
1004
|
-
WebMock.disable_net_connect!
|
1005
|
-
stub_http_request(:any, "http://www.example.com/?#{NOT_ESCAPED_PARAMS}")
|
1006
|
-
end
|
1007
|
-
|
1008
|
-
it "should pass if request was executed with escaped params" do
|
1009
|
-
lambda {
|
1010
|
-
http_request(:get, "http://www.example.com/?#{ESCAPED_PARAMS}")
|
1011
|
-
a_request(:get, "http://www.example.com/?#{NOT_ESCAPED_PARAMS}").should have_been_made
|
1012
|
-
}.should_not raise_error
|
1013
|
-
end
|
1014
|
-
|
1015
|
-
it "should pass if request was executed with non escaped params but escaped expected" do
|
1016
|
-
lambda {
|
1017
|
-
http_request(:get, "http://www.example.com/?#{NOT_ESCAPED_PARAMS}")
|
1018
|
-
a_request(:get, "http://www.example.com/?#{ESCAPED_PARAMS}").should have_been_made
|
1019
|
-
}.should_not raise_error
|
1020
|
-
end
|
1021
|
-
|
1022
|
-
it "should pass if request was executed with escaped params but uri matichg regexp expected" do
|
1023
|
-
lambda {
|
1024
|
-
http_request(:get, "http://www.example.com/?#{ESCAPED_PARAMS}")
|
1025
|
-
a_request(:get, /.*example.*/).should have_been_made
|
1026
|
-
}.should_not raise_error
|
1027
|
-
end
|
1028
|
-
|
1029
|
-
end
|
1030
|
-
|
1031
|
-
describe "when matching requests with query params" do
|
1032
|
-
before(:each) do
|
1033
|
-
stub_http_request(:any, /.*example.*/)
|
1034
|
-
end
|
1035
|
-
|
1036
|
-
it "should pass if the request was executed with query params declared in a hash in query option" do
|
1037
|
-
lambda {
|
1038
|
-
http_request(:get, "http://www.example.com/?a[]=b&a[]=c")
|
1039
|
-
a_request(:get, "www.example.com").with(:query => {"a" => ["b", "c"]}).should have_been_made
|
1040
|
-
}.should_not raise_error
|
1041
|
-
end
|
1042
|
-
|
1043
|
-
it "should pass if the request was executed with query params declared as string in query option" do
|
1044
|
-
lambda {
|
1045
|
-
http_request(:get, "http://www.example.com/?a[]=b&a[]=c")
|
1046
|
-
a_request(:get, "www.example.com").with(:query => "a[]=b&a[]=c").should have_been_made
|
1047
|
-
}.should_not raise_error
|
1048
|
-
end
|
1049
|
-
|
1050
|
-
it "should pass if the request was executed with query params both in uri and in query option" do
|
1051
|
-
lambda {
|
1052
|
-
http_request(:get, "http://www.example.com/?x=3&a[]=b&a[]=c")
|
1053
|
-
a_request(:get, "www.example.com/?x=3").with(:query => {"a" => ["b", "c"]}).should have_been_made
|
1054
|
-
}.should_not raise_error
|
1055
|
-
end
|
1056
|
-
|
1057
|
-
end
|
1058
|
-
|
1059
|
-
it "should fail if requested more times than expected" do
|
1060
|
-
lambda {
|
1061
|
-
http_request(:get, "http://www.example.com/")
|
1062
|
-
http_request(:get, "http://www.example.com/")
|
1063
|
-
a_request(:get, "http://www.example.com").should have_been_made
|
1064
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 1 time but it executed 2 times))
|
1065
|
-
end
|
1066
|
-
|
1067
|
-
it "should fail if requested less times than expected" do
|
1068
|
-
lambda {
|
1069
|
-
http_request(:get, "http://www.example.com/")
|
1070
|
-
a_request(:get, "http://www.example.com").should have_been_made.twice
|
1071
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 2 times but it executed 1 time))
|
1072
|
-
end
|
1073
|
-
|
1074
|
-
it "should fail if requested less times than expected when 3 times expected" do
|
1075
|
-
lambda {
|
1076
|
-
http_request(:get, "http://www.example.com/")
|
1077
|
-
a_request(:get, "http://www.example.com").should have_been_made.times(3)
|
1078
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 3 times but it executed 1 time))
|
1079
|
-
end
|
1080
|
-
|
1081
|
-
it "should succeed if request was executed with the same body" do
|
1082
|
-
lambda {
|
1083
|
-
http_request(:post, "http://www.example.com/", :body => "abc")
|
1084
|
-
a_request(:post, "www.example.com").with(:body => "abc").should have_been_made
|
1085
|
-
}.should_not raise_error
|
1086
|
-
end
|
1087
|
-
|
1088
|
-
it "should fail if request was executed with different body" do
|
1089
|
-
lambda {
|
1090
|
-
http_request(:get, "http://www.example.com/", :body => "abc")
|
1091
|
-
a_request(:get, "www.example.com").
|
1092
|
-
with(:body => "def").should have_been_made
|
1093
|
-
}.should fail_with(%r(The request GET http://www.example.com/ with body "def" was expected to execute 1 time but it executed 0 times))
|
1094
|
-
end
|
1095
|
-
|
1096
|
-
describe "when expected body is declared as regexp" do
|
1097
|
-
|
1098
|
-
it "should succeed if request was executed with the same body" do
|
1099
|
-
lambda {
|
1100
|
-
http_request(:post, "http://www.example.com/", :body => "abc")
|
1101
|
-
a_request(:post, "www.example.com").with(:body => /^abc$/).should have_been_made
|
1102
|
-
}.should_not raise_error
|
1103
|
-
end
|
1104
|
-
|
1105
|
-
it "should fail if request was executed with different body" do
|
1106
|
-
lambda {
|
1107
|
-
http_request(:get, "http://www.example.com/", :body => "abc")
|
1108
|
-
a_request(:get, "www.example.com").
|
1109
|
-
with(:body => /^xabc/).should have_been_made
|
1110
|
-
}.should fail_with(%r(The request GET http://www.example.com/ with body /\^xabc/ was expected to execute 1 time but it executed 0 times))
|
1111
|
-
end
|
1112
|
-
|
1113
|
-
end
|
1114
|
-
|
1115
|
-
describe "when expected body is declared as a hash" do
|
1116
|
-
let(:body_hash) { {:a => '1', :b => 'five', 'c' => {'d' => ['e', 'f']}} }
|
1117
|
-
let(:fail_message) {%r(The request POST http://www.example.com/ with body \{"a"=>"1", "b"=>"five", "c"=>\{"d"=>\["e", "f"\]\}\} was expected to execute 1 time but it executed 0 times)}
|
1118
|
-
|
1119
|
-
describe "when request is executed with url encoded body matching hash" do
|
1120
|
-
|
1121
|
-
it "should succeed" do
|
1122
|
-
lambda {
|
1123
|
-
http_request(:post, "http://www.example.com/", :body => 'a=1&c[d][]=e&c[d][]=f&b=five')
|
1124
|
-
a_request(:post, "www.example.com").with(:body => body_hash).should have_been_made
|
1125
|
-
}.should_not raise_error
|
1126
|
-
end
|
1127
|
-
|
1128
|
-
it "should succeed if url encoded params have different order" do
|
1129
|
-
lambda {
|
1130
|
-
http_request(:post, "http://www.example.com/", :body => 'a=1&c[d][]=e&b=five&c[d][]=f')
|
1131
|
-
a_request(:post, "www.example.com").with(:body => body_hash).should have_been_made
|
1132
|
-
}.should_not raise_error
|
1133
|
-
end
|
1134
|
-
|
1135
|
-
it "should fail if request is executed with url encoded body not matching hash" do
|
1136
|
-
lambda {
|
1137
|
-
http_request(:post, "http://www.example.com/", :body => 'c[d][]=f&a=1&c[d][]=e')
|
1138
|
-
a_request(:post, "www.example.com").with(:body => body_hash).should have_been_made
|
1139
|
-
}.should fail_with(fail_message)
|
1140
|
-
end
|
1141
|
-
|
1142
|
-
end
|
1143
|
-
|
1144
|
-
describe "when request is executed with json body matching hash and content type is set to json" do
|
1145
|
-
|
1146
|
-
it "should succeed" do
|
1147
|
-
lambda {
|
1148
|
-
http_request(:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/json'},
|
1149
|
-
:body => "{\"a\":\"1\",\"c\":{\"d\":[\"e\",\"f\"]},\"b\":\"five\"}")
|
1150
|
-
a_request(:post, "www.example.com").with(:body => body_hash).should have_been_made
|
1151
|
-
}.should_not raise_error
|
1152
|
-
end
|
1153
|
-
|
1154
|
-
it "should succeed if json body is in different form" do
|
1155
|
-
lambda {
|
1156
|
-
http_request(:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/json'},
|
1157
|
-
:body => "{\"a\":\"1\",\"b\":\"five\",\"c\":{\"d\":[\"e\",\"f\"]}}")
|
1158
|
-
a_request(:post, "www.example.com").with(:body => body_hash).should have_been_made
|
1159
|
-
}.should_not raise_error
|
1160
|
-
end
|
1161
|
-
|
1162
|
-
it "should succeed if json body contains date string" do
|
1163
|
-
lambda {
|
1164
|
-
http_request(:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/json'},
|
1165
|
-
:body => "{\"foo\":\"2010-01-01\"}")
|
1166
|
-
a_request(:post, "www.example.com").with(:body => {"foo" => "2010-01-01"}).should have_been_made
|
1167
|
-
}.should_not raise_error
|
1168
|
-
end
|
1169
|
-
end
|
1170
|
-
|
1171
|
-
|
1172
|
-
describe "when request is executed with xml body matching hash and content type is set to xml" do
|
1173
|
-
let(:body_hash) { { "opt" => {:a => "1", :b => 'five', 'c' => {'d' => ['e', 'f']}} }}
|
1174
|
-
|
1175
|
-
it "should succeed" do
|
1176
|
-
lambda {
|
1177
|
-
http_request(:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/xml'},
|
1178
|
-
:body => "<opt a=\"1\" b=\"five\">\n <c>\n <d>e</d>\n <d>f</d>\n </c>\n</opt>\n")
|
1179
|
-
a_request(:post, "www.example.com").with(:body => body_hash).should have_been_made
|
1180
|
-
}.should_not raise_error
|
1181
|
-
end
|
1182
|
-
|
1183
|
-
it "should succeed if xml body is in different form" do
|
1184
|
-
lambda {
|
1185
|
-
http_request(:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/xml'},
|
1186
|
-
:body => "<opt b=\"five\" a=\"1\">\n <c>\n <d>e</d>\n <d>f</d>\n </c>\n</opt>\n")
|
1187
|
-
a_request(:post, "www.example.com").with(:body => body_hash).should have_been_made
|
1188
|
-
}.should_not raise_error
|
1189
|
-
end
|
1190
|
-
|
1191
|
-
it "should succeed if xml body contains date string" do
|
1192
|
-
lambda {
|
1193
|
-
http_request(:post, "http://www.example.com/", :headers => {'Content-Type' => 'application/xml'},
|
1194
|
-
:body => "<opt foo=\"2010-01-01\">\n</opt>\n")
|
1195
|
-
a_request(:post, "www.example.com").with(:body => {"opt" => {"foo" => "2010-01-01"}}).should have_been_made
|
1196
|
-
}.should_not raise_error
|
1197
|
-
end
|
1198
|
-
|
1199
|
-
end
|
1200
|
-
|
1201
|
-
end
|
1202
|
-
|
1203
|
-
it "should succeed if request was executed with the same headers" do
|
1204
|
-
lambda {
|
1205
|
-
http_request(:get, "http://www.example.com/", :headers => SAMPLE_HEADERS)
|
1206
|
-
a_request(:get, "www.example.com").
|
1207
|
-
with(:headers => SAMPLE_HEADERS).should have_been_made
|
1208
|
-
}.should_not raise_error
|
1209
|
-
end
|
1210
|
-
|
1211
|
-
it "should succeed if request was executed with the same headers with value declared as array" do
|
1212
|
-
lambda {
|
1213
|
-
http_request(:get, "http://www.example.com/", :headers => {"a" => "b"})
|
1214
|
-
a_request(:get, "www.example.com").
|
1215
|
-
with(:headers => {"a" => ["b"]}).should have_been_made
|
1216
|
-
}.should_not raise_error
|
1217
|
-
end
|
1218
|
-
|
1219
|
-
describe "when multiple headers with the same key are passed" do
|
1220
|
-
|
1221
|
-
it "should succeed if request was executed with the same headers" do
|
1222
|
-
lambda {
|
1223
|
-
http_request(:get, "http://www.example.com/", :headers => {"a" => ["b", "c"]})
|
1224
|
-
a_request(:get, "www.example.com").
|
1225
|
-
with(:headers => {"a" => ["b", "c"]}).should have_been_made
|
1226
|
-
}.should_not raise_error
|
1227
|
-
end
|
1228
|
-
|
1229
|
-
it "should succeed if request was executed with the same headers but different order" do
|
1230
|
-
lambda {
|
1231
|
-
http_request(:get, "http://www.example.com/", :headers => {"a" => ["b", "c"]})
|
1232
|
-
a_request(:get, "www.example.com").
|
1233
|
-
with(:headers => {"a" => ["c", "b"]}).should have_been_made
|
1234
|
-
}.should_not raise_error
|
1235
|
-
end
|
1236
|
-
|
1237
|
-
it "should fail if request was executed with different headers" do
|
1238
|
-
lambda {
|
1239
|
-
http_request(:get, "http://www.example.com/", :headers => {"a" => ["b", "c"]})
|
1240
|
-
a_request(:get, "www.example.com").
|
1241
|
-
with(:headers => {"a" => ["b", "d"]}).should have_been_made
|
1242
|
-
}.should fail_with(%r(The request GET http://www.example.com/ with headers \{'A'=>\['b', 'd'\]\} was expected to execute 1 time but it executed 0 times))
|
1243
|
-
end
|
1244
|
-
|
1245
|
-
end
|
1246
|
-
|
1247
|
-
it "should fail if request was executed with different headers" do
|
1248
|
-
lambda {
|
1249
|
-
http_request(:get, "http://www.example.com/", :headers => SAMPLE_HEADERS)
|
1250
|
-
a_request(:get, "www.example.com").
|
1251
|
-
with(:headers => { 'Content-Length' => '9999'}).should have_been_made
|
1252
|
-
}.should fail_with(%r(The request GET http://www.example.com/ with headers \{'Content-Length'=>'9999'\} was expected to execute 1 time but it executed 0 times))
|
1253
|
-
end
|
1254
|
-
|
1255
|
-
it "should fail if request was executed with less headers" do
|
1256
|
-
lambda {
|
1257
|
-
http_request(:get, "http://www.example.com/", :headers => {'A' => 'a'})
|
1258
|
-
a_request(:get, "www.example.com").
|
1259
|
-
with(:headers => {'A' => 'a', 'B' => 'b'}).should have_been_made
|
1260
|
-
}.should fail_with(%r(The request GET http://www.example.com/ with headers \{'A'=>'a', 'B'=>'b'\} was expected to execute 1 time but it executed 0 times))
|
1261
|
-
end
|
1262
|
-
|
1263
|
-
it "should succeed if request was executed with more headers" do
|
1264
|
-
lambda {
|
1265
|
-
http_request(:get, "http://www.example.com/",
|
1266
|
-
:headers => {'A' => 'a', 'B' => 'b'}
|
1267
|
-
)
|
1268
|
-
a_request(:get, "www.example.com").
|
1269
|
-
with(:headers => {'A' => 'a'}).should have_been_made
|
1270
|
-
}.should_not raise_error
|
1271
|
-
end
|
1272
|
-
|
1273
|
-
it "should succeed if request was executed with body and headers but they were not specified in expectantion" do
|
1274
|
-
lambda {
|
1275
|
-
http_request(:get, "http://www.example.com/",
|
1276
|
-
:body => "abc",
|
1277
|
-
:headers => SAMPLE_HEADERS
|
1278
|
-
)
|
1279
|
-
a_request(:get, "www.example.com").should have_been_made
|
1280
|
-
}.should_not raise_error
|
1281
|
-
end
|
1282
|
-
|
1283
|
-
it "should succeed if request was executed with headers matching regular expressions" do
|
1284
|
-
lambda {
|
1285
|
-
http_request(:get, "http://www.example.com/", :headers => { 'some-header' => 'MyAppName' })
|
1286
|
-
a_request(:get, "www.example.com").
|
1287
|
-
with(:headers => { :some_header => /^MyAppName$/ }).should have_been_made
|
1288
|
-
}.should_not raise_error
|
1289
|
-
end
|
1290
|
-
|
1291
|
-
it "should fail if request was executed with headers not matching regular expression" do
|
1292
|
-
lambda {
|
1293
|
-
http_request(:get, "http://www.example.com/", :headers => { 'some-header' => 'xMyAppName' })
|
1294
|
-
a_request(:get, "www.example.com").
|
1295
|
-
with(:headers => { :some_header => /^MyAppName$/ }).should have_been_made
|
1296
|
-
}.should fail_with(%r(The request GET http://www.example.com/ with headers \{'Some-Header'=>/\^MyAppName\$/\} was expected to execute 1 time but it executed 0 times))
|
1297
|
-
end
|
1298
|
-
|
1299
|
-
it "should suceed if request was executed and block evaluated to true" do
|
1300
|
-
lambda {
|
1301
|
-
http_request(:post, "http://www.example.com/", :body => "wadus")
|
1302
|
-
a_request(:post, "www.example.com").with { |req| req.body == "wadus" }.should have_been_made
|
1303
|
-
}.should_not raise_error
|
1304
|
-
end
|
1305
|
-
|
1306
|
-
it "should fail if request was executed and block evaluated to false" do
|
1307
|
-
lambda {
|
1308
|
-
http_request(:post, "http://www.example.com/", :body => "abc")
|
1309
|
-
a_request(:post, "www.example.com").with { |req| req.body == "wadus" }.should have_been_made
|
1310
|
-
}.should fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
|
1311
|
-
end
|
1312
|
-
|
1313
|
-
it "should fail if request was not expected but it executed and block matched request" do
|
1314
|
-
lambda {
|
1315
|
-
http_request(:post, "http://www.example.com/", :body => "wadus")
|
1316
|
-
a_request(:post, "www.example.com").with { |req| req.body == "wadus" }.should_not have_been_made
|
1317
|
-
}.should fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 0 times but it executed 1 time))
|
1318
|
-
end
|
1319
|
-
|
1320
|
-
describe "with authentication" do
|
1321
|
-
before(:each) do
|
1322
|
-
stub_http_request(:any, "http://user:pass@www.example.com")
|
1323
|
-
stub_http_request(:any, "http://user:pazz@www.example.com")
|
1324
|
-
end
|
1325
|
-
|
1326
|
-
it "should succeed if succeed if request was executed with expected credentials" do
|
1327
|
-
lambda {
|
1328
|
-
http_request(:get, "http://user:pass@www.example.com/")
|
1329
|
-
a_request(:get, "http://user:pass@www.example.com").should have_been_made.once
|
1330
|
-
}.should_not raise_error
|
1331
|
-
end
|
1332
|
-
|
1333
|
-
it "should fail if request was executed with different credentials than expected" do
|
1334
|
-
lambda {
|
1335
|
-
http_request(:get, "http://user:pass@www.example.com/")
|
1336
|
-
a_request(:get, "http://user:pazz@www.example.com").should have_been_made.once
|
1337
|
-
}.should fail_with(%r(The request GET http://user:pazz@www.example.com/ was expected to execute 1 time but it executed 0 times))
|
1338
|
-
end
|
1339
|
-
|
1340
|
-
it "should fail if request was executed without credentials but credentials were expected" do
|
1341
|
-
lambda {
|
1342
|
-
http_request(:get, "http://www.example.com/")
|
1343
|
-
a_request(:get, "http://user:pass@www.example.com").should have_been_made.once
|
1344
|
-
}.should fail_with(%r(The request GET http://user:pass@www.example.com/ was expected to execute 1 time but it executed 0 times))
|
1345
|
-
end
|
1346
|
-
|
1347
|
-
it "should fail if request was executed with credentials but expected without" do
|
1348
|
-
lambda {
|
1349
|
-
http_request(:get, "http://user:pass@www.example.com/")
|
1350
|
-
a_request(:get, "http://www.example.com").should have_been_made.once
|
1351
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 1 time but it executed 0 times))
|
1352
|
-
end
|
1353
|
-
|
1354
|
-
it "should be order insensitive" do
|
1355
|
-
stub_request(:post, "http://www.example.com")
|
1356
|
-
http_request(:post, "http://www.example.com/", :body => "def")
|
1357
|
-
http_request(:post, "http://www.example.com/", :body => "abc")
|
1358
|
-
WebMock.should have_requested(:post, "www.example.com").with(:body => "abc")
|
1359
|
-
WebMock.should have_requested(:post, "www.example.com").with(:body => "def")
|
1360
|
-
end
|
1361
|
-
|
1362
|
-
end
|
1363
|
-
|
1364
|
-
describe "using webmock matcher" do
|
1365
|
-
|
1366
|
-
it "should verify expected requests occured" do
|
1367
|
-
lambda {
|
1368
|
-
http_request(:get, "http://www.example.com/")
|
1369
|
-
WebMock.should have_requested(:get, "http://www.example.com").once
|
1370
|
-
}.should_not raise_error
|
1371
|
-
end
|
1372
|
-
|
1373
|
-
it "should verify expected requests occured" do
|
1374
|
-
lambda {
|
1375
|
-
http_request(:post, "http://www.example.com/", :body => "abc", :headers => {'A' => 'a'})
|
1376
|
-
WebMock.should have_requested(:post, "http://www.example.com").with(:body => "abc", :headers => {'A' => 'a'}).once
|
1377
|
-
}.should_not raise_error
|
1378
|
-
end
|
1379
|
-
|
1380
|
-
it "should verify that non expected requests didn't occur" do
|
1381
|
-
lambda {
|
1382
|
-
http_request(:get, "http://www.example.com/")
|
1383
|
-
WebMock.should_not have_requested(:get, "http://www.example.com")
|
1384
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 0 times but it executed 1 time))
|
1385
|
-
end
|
1386
|
-
|
1387
|
-
it "should succeed if request was executed and block evaluated to true" do
|
1388
|
-
lambda {
|
1389
|
-
http_request(:post, "http://www.example.com/", :body => "wadus")
|
1390
|
-
WebMock.should have_requested(:post, "www.example.com").with { |req| req.body == "wadus" }
|
1391
|
-
}.should_not raise_error
|
1392
|
-
end
|
1393
|
-
|
1394
|
-
it "should fail if request was executed and block evaluated to false" do
|
1395
|
-
lambda {
|
1396
|
-
http_request(:post, "http://www.example.com/", :body => "abc")
|
1397
|
-
WebMock.should have_requested(:post, "www.example.com").with { |req| req.body == "wadus" }
|
1398
|
-
}.should fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
|
1399
|
-
end
|
1400
|
-
|
1401
|
-
it "should fail if request was not expected but executed and block matched request" do
|
1402
|
-
lambda {
|
1403
|
-
http_request(:post, "http://www.example.com/", :body => "wadus")
|
1404
|
-
WebMock.should_not have_requested(:post, "www.example.com").with { |req| req.body == "wadus" }
|
1405
|
-
}.should fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 0 times but it executed 1 time))
|
1406
|
-
end
|
1407
|
-
end
|
1408
|
-
|
1409
|
-
|
1410
|
-
|
1411
|
-
describe "using assert_requested" do
|
1412
|
-
|
1413
|
-
it "should verify expected requests occured" do
|
1414
|
-
lambda {
|
1415
|
-
http_request(:get, "http://www.example.com/")
|
1416
|
-
assert_requested(:get, "http://www.example.com", :times => 1)
|
1417
|
-
assert_requested(:get, "http://www.example.com")
|
1418
|
-
}.should_not raise_error
|
1419
|
-
end
|
1420
|
-
|
1421
|
-
it "should verify expected requests occured" do
|
1422
|
-
lambda {
|
1423
|
-
http_request(:post, "http://www.example.com/", :body => "abc", :headers => {'A' => 'a'})
|
1424
|
-
assert_requested(:post, "http://www.example.com", :body => "abc", :headers => {'A' => 'a'})
|
1425
|
-
}.should_not raise_error
|
1426
|
-
end
|
1427
|
-
|
1428
|
-
it "should verify that non expected requests didn't occur" do
|
1429
|
-
lambda {
|
1430
|
-
http_request(:get, "http://www.example.com/")
|
1431
|
-
assert_not_requested(:get, "http://www.example.com")
|
1432
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 0 times but it executed 1 time))
|
1433
|
-
end
|
1434
|
-
|
1435
|
-
it "should verify if non expected request executed and block evaluated to true" do
|
1436
|
-
lambda {
|
1437
|
-
http_request(:post, "http://www.example.com/", :body => "wadus")
|
1438
|
-
assert_not_requested(:post, "www.example.com") { |req| req.body == "wadus" }
|
1439
|
-
}.should fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 0 times but it executed 1 time))
|
1440
|
-
end
|
1441
|
-
|
1442
|
-
it "should verify if request was executed and block evaluated to true" do
|
1443
|
-
lambda {
|
1444
|
-
http_request(:post, "http://www.example.com/", :body => "wadus")
|
1445
|
-
assert_requested(:post, "www.example.com") { |req| req.body == "wadus" }
|
1446
|
-
}.should_not raise_error
|
1447
|
-
end
|
1448
|
-
|
1449
|
-
it "should verify if request was executed and block evaluated to false" do
|
1450
|
-
lambda {
|
1451
|
-
http_request(:post, "http://www.example.com/", :body => "abc")
|
1452
|
-
assert_requested(:post, "www.example.com") { |req| req.body == "wadus" }
|
1453
|
-
}.should fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
|
1454
|
-
end
|
1455
|
-
end
|
1456
|
-
end
|
1457
|
-
|
1458
|
-
|
1459
|
-
describe "using matchers on the RequestStub" do
|
1460
|
-
|
1461
|
-
it "should verify expected requests occured" do
|
1462
|
-
stub = stub_request(:get, "http://www.example.com/")
|
1463
|
-
http_request(:get, "http://www.example.com/")
|
1464
|
-
stub.should have_been_requested.once
|
1465
|
-
end
|
1466
|
-
|
1467
|
-
it "should verify subsequent requests" do
|
1468
|
-
stub = stub_request(:get, "http://www.example.com/")
|
1469
|
-
http_request(:get, "http://www.example.com/")
|
1470
|
-
stub.should have_been_requested.once
|
1471
|
-
http_request(:get, "http://www.example.com/")
|
1472
|
-
stub.should have_been_requested.twice
|
1473
|
-
end
|
1474
|
-
|
1475
|
-
it "should verify expected requests occured" do
|
1476
|
-
stub = stub_request(:post, "http://www.example.com").with(:body => "abc", :headers => {'A' => 'a'})
|
1477
|
-
http_request(:post, "http://www.example.com/", :body => "abc", :headers => {'A' => 'a'})
|
1478
|
-
stub.should have_been_requested.once
|
1479
|
-
end
|
1480
|
-
|
1481
|
-
it "should verify that non expected requests didn't occur" do
|
1482
|
-
lambda {
|
1483
|
-
stub = stub_request(:get, "http://www.example.com")
|
1484
|
-
http_request(:get, "http://www.example.com/")
|
1485
|
-
stub.should_not have_been_requested
|
1486
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 0 times but it executed 1 time))
|
1487
|
-
end
|
1488
|
-
|
1489
|
-
it "should verify if non expected request executed and block evaluated to true" do
|
1490
|
-
lambda {
|
1491
|
-
stub = stub_request(:post, "www.example.com").with { |req| req.body == "wadus" }
|
1492
|
-
http_request(:post, "http://www.example.com/", :body => "wadus")
|
1493
|
-
stub.should_not have_been_requested
|
1494
|
-
}.should fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 0 times but it executed 1 time))
|
1495
|
-
end
|
1496
|
-
|
1497
|
-
it "should verify if request was executed and block evaluated to true" do
|
1498
|
-
stub = stub_request(:post, "www.example.com").with { |req| req.body == "wadus" }
|
1499
|
-
http_request(:post, "http://www.example.com/", :body => "wadus")
|
1500
|
-
stub.should have_been_requested
|
1501
|
-
end
|
1502
|
-
|
1503
|
-
it "should verify if request was executed and block evaluated to false" do
|
1504
|
-
lambda {
|
1505
|
-
stub_request(:any, /.+/) #stub any request
|
1506
|
-
stub = stub_request(:post, "www.example.com").with { |req| req.body == "wadus" }
|
1507
|
-
http_request(:post, "http://www.example.com/", :body => "abc")
|
1508
|
-
stub.should have_been_requested
|
1509
|
-
}.should fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
|
1510
|
-
end
|
1511
|
-
end
|
1512
|
-
|
1513
|
-
describe "when net connect allowed", :net_connect => true do
|
1514
|
-
before(:each) do
|
1515
|
-
WebMock.allow_net_connect!
|
1516
|
-
end
|
1517
|
-
|
1518
|
-
it "should verify expected requests occured" do
|
1519
|
-
lambda {
|
1520
|
-
http_request(:get, "http://www.example.com/")
|
1521
|
-
a_request(:get, "http://www.example.com").should have_been_made
|
1522
|
-
}.should_not raise_error
|
1523
|
-
end
|
1524
|
-
|
1525
|
-
it "should verify that non expected requests didn't occur" do
|
1526
|
-
lambda {
|
1527
|
-
http_request(:get, "http://www.example.com/")
|
1528
|
-
a_request(:get, "http://www.example.com").should_not have_been_made
|
1529
|
-
}.should fail_with(%r(The request GET http://www.example.com/ was expected to execute 0 times but it executed 1 time))
|
1530
|
-
end
|
1531
|
-
end
|
1532
|
-
|
1533
|
-
end
|
1534
|
-
|
1535
|
-
|
1536
|
-
describe "callbacks" do
|
1537
|
-
|
1538
|
-
describe "after_request" do
|
1539
|
-
before(:each) do
|
1540
|
-
WebMock.reset_callbacks
|
1541
|
-
stub_request(:get, "http://www.example.com")
|
1542
|
-
end
|
1543
|
-
|
1544
|
-
it "should not invoke callback unless request is made" do
|
1545
|
-
WebMock.after_request {
|
1546
|
-
@called = true
|
1547
|
-
}
|
1548
|
-
@called.should == nil
|
1549
|
-
end
|
1550
|
-
|
1551
|
-
it "should invoke a callback after request is made" do
|
1552
|
-
WebMock.after_request {
|
1553
|
-
@called = true
|
1554
|
-
}
|
1555
|
-
http_request(:get, "http://www.example.com/")
|
1556
|
-
@called.should == true
|
1557
|
-
end
|
1558
|
-
|
1559
|
-
it "should not invoke a callback if specific http library should be ignored" do
|
1560
|
-
WebMock.after_request(:except => [http_library()]) {
|
1561
|
-
@called = true
|
1562
|
-
}
|
1563
|
-
http_request(:get, "http://www.example.com/")
|
1564
|
-
@called.should == nil
|
1565
|
-
end
|
1566
|
-
|
1567
|
-
it "should invoke a callback even if other http libraries should be ignored" do
|
1568
|
-
WebMock.after_request(:except => [:other_lib]) {
|
1569
|
-
@called = true
|
1570
|
-
}
|
1571
|
-
http_request(:get, "http://www.example.com/")
|
1572
|
-
@called.should == true
|
1573
|
-
end
|
1574
|
-
|
1575
|
-
it "should pass request signature to the callback" do
|
1576
|
-
WebMock.after_request(:except => [:other_lib]) do |request_signature, _|
|
1577
|
-
@request_signature = request_signature
|
1578
|
-
end
|
1579
|
-
http_request(:get, "http://www.example.com/")
|
1580
|
-
@request_signature.uri.to_s.should == "http://www.example.com:80/"
|
1581
|
-
end
|
1582
|
-
|
1583
|
-
describe "passing response to callback" do
|
1584
|
-
|
1585
|
-
describe "for stubbed requests" do
|
1586
|
-
before(:each) do
|
1587
|
-
stub_request(:get, "http://www.example.com").
|
1588
|
-
to_return(
|
1589
|
-
:status => ["200", "hello"],
|
1590
|
-
:headers => {'Content-Length' => '666', 'Hello' => 'World'},
|
1591
|
-
:body => "foo bar"
|
1592
|
-
)
|
1593
|
-
WebMock.after_request(:except => [:other_lib]) do |_, response|
|
1594
|
-
@response = response
|
1595
|
-
end
|
1596
|
-
http_request(:get, "http://www.example.com/")
|
1597
|
-
end
|
1598
|
-
|
1599
|
-
it "should pass response with status and message" do
|
1600
|
-
@response.status.should == ["200", "hello"]
|
1601
|
-
end
|
1602
|
-
|
1603
|
-
it "should pass response with headers" do
|
1604
|
-
@response.headers.should == {
|
1605
|
-
'Content-Length' => '666',
|
1606
|
-
'Hello' => 'World'
|
1607
|
-
}
|
1608
|
-
end
|
1609
|
-
|
1610
|
-
it "should pass response with body" do
|
1611
|
-
@response.body.should == "foo bar"
|
1612
|
-
end
|
1613
|
-
|
1614
|
-
end
|
1615
|
-
|
1616
|
-
describe "for real requests", :net_connect => true do
|
1617
|
-
before(:each) do
|
1618
|
-
WebMock.reset!
|
1619
|
-
WebMock.allow_net_connect!
|
1620
|
-
WebMock.after_request(:except => [:other_lib]) do |_, response|
|
1621
|
-
@response = response
|
1622
|
-
end
|
1623
|
-
http_request(:get, "http://www.example.com/")
|
1624
|
-
end
|
1625
|
-
|
1626
|
-
it "should pass response with status and message" do
|
1627
|
-
# not supported by em-http-request, it always returns "unknown" for http_reason
|
1628
|
-
unless http_library == :em_http_request
|
1629
|
-
@response.status[0].should == 302
|
1630
|
-
@response.status[1].should == "Found"
|
1631
|
-
end
|
1632
|
-
end
|
1633
|
-
|
1634
|
-
it "should pass response with headers" do
|
1635
|
-
@response.headers["Content-Length"].should == "0"
|
1636
|
-
end
|
1637
|
-
|
1638
|
-
it "should pass response with body" do
|
1639
|
-
@response.body.size.should == 0
|
1640
|
-
end
|
1641
|
-
|
1642
|
-
end
|
1643
|
-
|
1644
|
-
end
|
1645
|
-
|
1646
|
-
it "should invoke multiple callbacks in order of their declarations" do
|
1647
|
-
WebMock.after_request { @called = 1 }
|
1648
|
-
WebMock.after_request { @called += 1 }
|
1649
|
-
http_request(:get, "http://www.example.com/")
|
1650
|
-
@called.should == 2
|
1651
|
-
end
|
1652
|
-
|
1653
|
-
it "should invoke callbacks only for real requests if requested", :net_connect => true do
|
1654
|
-
WebMock.after_request(:real_requests_only => true) { @called = true }
|
1655
|
-
http_request(:get, "http://www.example.com/")
|
1656
|
-
@called.should == nil
|
1657
|
-
WebMock.allow_net_connect!
|
1658
|
-
http_request(:get, "http://www.example.net/")
|
1659
|
-
@called.should == true
|
1660
|
-
end
|
1661
|
-
|
1662
|
-
it "should clear all declared callbacks on reset callbacks" do
|
1663
|
-
WebMock.after_request { @called = 1 }
|
1664
|
-
WebMock.reset_callbacks
|
1665
|
-
stub_request(:get, "http://www.example.com/")
|
1666
|
-
http_request(:get, "http://www.example.com/")
|
1667
|
-
@called.should == nil
|
1668
|
-
end
|
1669
|
-
end
|
1670
|
-
end
|
1671
|
-
|
1672
|
-
describe "enabling and disabling webmock" do
|
1673
|
-
describe "when webmock is disabled" do
|
1674
|
-
before(:each) do
|
1675
|
-
WebMock.disable!
|
1676
|
-
end
|
1677
|
-
after(:each) do
|
1678
|
-
WebMock.enable!
|
1679
|
-
end
|
1680
|
-
it_should_behave_like "disabled WebMock"
|
1681
|
-
end
|
1682
|
-
|
1683
|
-
describe "when webmock is enabled again" do
|
1684
|
-
before(:each) do
|
1685
|
-
WebMock.disable!
|
1686
|
-
WebMock.enable!
|
1687
|
-
end
|
1688
|
-
it_should_behave_like "enabled WebMock"
|
1689
|
-
end
|
1690
|
-
|
1691
|
-
describe "when webmock is disabled except this lib" do
|
1692
|
-
before(:each) do
|
1693
|
-
WebMock.disable!(:except => [http_library])
|
1694
|
-
end
|
1695
|
-
after(:each) do
|
1696
|
-
WebMock.enable!
|
1697
|
-
end
|
1698
|
-
it_should_behave_like "enabled WebMock"
|
1699
|
-
end
|
1700
|
-
|
1701
|
-
describe "when webmock is enabled except this lib" do
|
1702
|
-
before(:each) do
|
1703
|
-
WebMock.disable!
|
1704
|
-
WebMock.enable!(:except => [http_library])
|
1705
|
-
end
|
1706
|
-
after(:each) do
|
1707
|
-
WebMock.enable!
|
1708
|
-
end
|
1709
|
-
it_should_behave_like "disabled WebMock"
|
1710
|
-
end
|
1711
|
-
end
|
1712
|
-
end
|
1713
|
-
|
1714
|
-
shared_examples_for "disabled WebMock" do
|
1715
|
-
|
1716
|
-
it "should not register executed requests" do
|
1717
|
-
http_request(:get, "http://www.example.com/")
|
1718
|
-
a_request(:get, "http://www.example.com/").should_not have_been_made
|
1719
|
-
end
|
1720
|
-
|
1721
|
-
it "should not block unstubbed requests" do
|
1722
|
-
lambda {
|
1723
|
-
http_request(:get, "http://www.example.com/")
|
1724
|
-
}.should_not raise_error
|
1725
|
-
end
|
1726
|
-
|
1727
|
-
it "should return real response even if there are stubs" do
|
1728
|
-
stub_request(:get, /.*/).to_return(:body => "x")
|
1729
|
-
http_request(:get, "http://www.example.com/").
|
1730
|
-
status.should == "302"
|
1731
|
-
end
|
1732
|
-
|
1733
|
-
it "should not invoke any callbacks" do
|
1734
|
-
WebMock.reset_callbacks
|
1735
|
-
stub_request(:get, "http://www.example.com/")
|
1736
|
-
@called = nil
|
1737
|
-
WebMock.after_request { @called = 1 }
|
1738
|
-
http_request(:get, "http://www.example.com/")
|
1739
|
-
@called.should == nil
|
1740
|
-
end
|
1741
|
-
end
|
1742
|
-
|
1743
|
-
shared_examples_for "enabled WebMock" do
|
1744
|
-
it "should register executed requests" do
|
1745
|
-
WebMock.allow_net_connect!
|
1746
|
-
http_request(:get, "http://www.example.com/")
|
1747
|
-
a_request(:get, "http://www.example.com/").should have_been_made
|
1748
|
-
end
|
1749
|
-
|
1750
|
-
it "should block unstubbed requests" do
|
1751
|
-
lambda {
|
1752
|
-
http_request(:get, "http://www.example.com/")
|
1753
|
-
}.should raise_error(WebMock::NetConnectNotAllowedError)
|
1754
|
-
end
|
1755
|
-
|
1756
|
-
it "should return stubbed response" do
|
1757
|
-
stub_request(:get, /.*/).to_return(:body => "x")
|
1758
|
-
http_request(:get, "http://www.example.com/").body.should == "x"
|
1759
|
-
end
|
1760
|
-
|
1761
|
-
it "should invoke callbacks" do
|
1762
|
-
WebMock.allow_net_connect!
|
1763
|
-
WebMock.reset_callbacks
|
1764
|
-
@called = nil
|
1765
|
-
WebMock.after_request { @called = 1 }
|
1766
|
-
http_request(:get, "http://www.example.com/")
|
1767
|
-
@called.should == 1
|
1768
|
-
end
|
1769
|
-
end
|
1770
|
-
|