webmock 3.0.1 → 3.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +558 -2
  3. data/README.md +200 -42
  4. data/lib/webmock/api.rb +14 -0
  5. data/lib/webmock/assertion_failure.rb +2 -0
  6. data/lib/webmock/callback_registry.rb +2 -0
  7. data/lib/webmock/config.rb +2 -0
  8. data/lib/webmock/cucumber.rb +2 -0
  9. data/lib/webmock/deprecation.rb +2 -0
  10. data/lib/webmock/errors.rb +2 -0
  11. data/lib/webmock/http_lib_adapters/async_http_client_adapter.rb +223 -0
  12. data/lib/webmock/http_lib_adapters/curb_adapter.rb +21 -5
  13. data/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +20 -9
  14. data/lib/webmock/http_lib_adapters/excon_adapter.rb +7 -2
  15. data/lib/webmock/http_lib_adapters/http_lib_adapter.rb +2 -0
  16. data/lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb +2 -0
  17. data/lib/webmock/http_lib_adapters/http_rb/client.rb +4 -1
  18. data/lib/webmock/http_lib_adapters/http_rb/request.rb +19 -1
  19. data/lib/webmock/http_lib_adapters/http_rb/response.rb +29 -3
  20. data/lib/webmock/http_lib_adapters/http_rb/streamer.rb +11 -3
  21. data/lib/webmock/http_lib_adapters/http_rb/webmock.rb +9 -3
  22. data/lib/webmock/http_lib_adapters/http_rb_adapter.rb +2 -0
  23. data/lib/webmock/http_lib_adapters/httpclient_adapter.rb +30 -9
  24. data/lib/webmock/http_lib_adapters/manticore_adapter.rb +35 -15
  25. data/lib/webmock/http_lib_adapters/net_http.rb +38 -89
  26. data/lib/webmock/http_lib_adapters/net_http_response.rb +3 -1
  27. data/lib/webmock/http_lib_adapters/patron_adapter.rb +6 -4
  28. data/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +18 -2
  29. data/lib/webmock/matchers/any_arg_matcher.rb +15 -0
  30. data/lib/webmock/matchers/hash_argument_matcher.rb +23 -0
  31. data/lib/webmock/matchers/hash_excluding_matcher.rb +17 -0
  32. data/lib/webmock/matchers/hash_including_matcher.rb +6 -23
  33. data/lib/webmock/minitest.rb +2 -0
  34. data/lib/webmock/rack_response.rb +3 -1
  35. data/lib/webmock/request_body_diff.rb +3 -1
  36. data/lib/webmock/request_execution_verifier.rb +4 -3
  37. data/lib/webmock/request_pattern.rb +132 -52
  38. data/lib/webmock/request_registry.rb +3 -1
  39. data/lib/webmock/request_signature.rb +5 -3
  40. data/lib/webmock/request_signature_snippet.rb +6 -4
  41. data/lib/webmock/request_stub.rb +34 -0
  42. data/lib/webmock/response.rb +22 -14
  43. data/lib/webmock/responses_sequence.rb +2 -0
  44. data/lib/webmock/rspec/matchers/request_pattern_matcher.rb +2 -0
  45. data/lib/webmock/rspec/matchers/webmock_matcher.rb +2 -0
  46. data/lib/webmock/rspec/matchers.rb +2 -0
  47. data/lib/webmock/rspec.rb +12 -3
  48. data/lib/webmock/stub_registry.rb +28 -11
  49. data/lib/webmock/stub_request_snippet.rb +12 -6
  50. data/lib/webmock/test_unit.rb +3 -3
  51. data/lib/webmock/util/hash_counter.rb +15 -9
  52. data/lib/webmock/util/hash_keys_stringifier.rb +2 -0
  53. data/lib/webmock/util/hash_validator.rb +2 -0
  54. data/lib/webmock/util/headers.rb +39 -11
  55. data/lib/webmock/util/json.rb +3 -2
  56. data/lib/webmock/util/query_mapper.rb +11 -7
  57. data/lib/webmock/util/uri.rb +13 -11
  58. data/lib/webmock/util/values_stringifier.rb +22 -0
  59. data/lib/webmock/util/version_checker.rb +7 -5
  60. data/lib/webmock/version.rb +3 -1
  61. data/lib/webmock/webmock.rb +22 -3
  62. data/lib/webmock.rb +55 -48
  63. metadata +106 -175
  64. data/.gemtest +0 -0
  65. data/.gitignore +0 -34
  66. data/.rspec-tm +0 -2
  67. data/.travis.yml +0 -20
  68. data/Gemfile +0 -9
  69. data/Rakefile +0 -30
  70. data/minitest/test_helper.rb +0 -34
  71. data/minitest/test_webmock.rb +0 -9
  72. data/minitest/webmock_spec.rb +0 -60
  73. data/spec/acceptance/curb/curb_spec.rb +0 -466
  74. data/spec/acceptance/curb/curb_spec_helper.rb +0 -147
  75. data/spec/acceptance/em_http_request/em_http_request_spec.rb +0 -406
  76. data/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +0 -77
  77. data/spec/acceptance/excon/excon_spec.rb +0 -75
  78. data/spec/acceptance/excon/excon_spec_helper.rb +0 -50
  79. data/spec/acceptance/http_rb/http_rb_spec.rb +0 -73
  80. data/spec/acceptance/http_rb/http_rb_spec_helper.rb +0 -51
  81. data/spec/acceptance/httpclient/httpclient_spec.rb +0 -210
  82. data/spec/acceptance/httpclient/httpclient_spec_helper.rb +0 -57
  83. data/spec/acceptance/manticore/manticore_spec.rb +0 -56
  84. data/spec/acceptance/manticore/manticore_spec_helper.rb +0 -35
  85. data/spec/acceptance/net_http/net_http_shared.rb +0 -153
  86. data/spec/acceptance/net_http/net_http_spec.rb +0 -317
  87. data/spec/acceptance/net_http/net_http_spec_helper.rb +0 -64
  88. data/spec/acceptance/net_http/real_net_http_spec.rb +0 -20
  89. data/spec/acceptance/patron/patron_spec.rb +0 -118
  90. data/spec/acceptance/patron/patron_spec_helper.rb +0 -54
  91. data/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +0 -313
  92. data/spec/acceptance/shared/callbacks.rb +0 -147
  93. data/spec/acceptance/shared/complex_cross_concern_behaviors.rb +0 -36
  94. data/spec/acceptance/shared/enabling_and_disabling_webmock.rb +0 -95
  95. data/spec/acceptance/shared/precedence_of_stubs.rb +0 -15
  96. data/spec/acceptance/shared/request_expectations.rb +0 -916
  97. data/spec/acceptance/shared/returning_declared_responses.rb +0 -388
  98. data/spec/acceptance/shared/stubbing_requests.rb +0 -583
  99. data/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +0 -135
  100. data/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +0 -60
  101. data/spec/acceptance/webmock_shared.rb +0 -41
  102. data/spec/fixtures/test.txt +0 -1
  103. data/spec/quality_spec.rb +0 -84
  104. data/spec/spec_helper.rb +0 -48
  105. data/spec/support/example_curl_output.txt +0 -22
  106. data/spec/support/failures.rb +0 -9
  107. data/spec/support/my_rack_app.rb +0 -53
  108. data/spec/support/network_connection.rb +0 -19
  109. data/spec/support/webmock_server.rb +0 -69
  110. data/spec/unit/api_spec.rb +0 -75
  111. data/spec/unit/errors_spec.rb +0 -129
  112. data/spec/unit/http_lib_adapters/http_lib_adapter_registry_spec.rb +0 -17
  113. data/spec/unit/http_lib_adapters/http_lib_adapter_spec.rb +0 -12
  114. data/spec/unit/matchers/hash_including_matcher_spec.rb +0 -87
  115. data/spec/unit/rack_response_spec.rb +0 -112
  116. data/spec/unit/request_body_diff_spec.rb +0 -90
  117. data/spec/unit/request_execution_verifier_spec.rb +0 -208
  118. data/spec/unit/request_pattern_spec.rb +0 -590
  119. data/spec/unit/request_registry_spec.rb +0 -95
  120. data/spec/unit/request_signature_snippet_spec.rb +0 -89
  121. data/spec/unit/request_signature_spec.rb +0 -155
  122. data/spec/unit/request_stub_spec.rb +0 -199
  123. data/spec/unit/response_spec.rb +0 -282
  124. data/spec/unit/stub_registry_spec.rb +0 -103
  125. data/spec/unit/stub_request_snippet_spec.rb +0 -95
  126. data/spec/unit/util/hash_counter_spec.rb +0 -39
  127. data/spec/unit/util/hash_keys_stringifier_spec.rb +0 -27
  128. data/spec/unit/util/headers_spec.rb +0 -28
  129. data/spec/unit/util/json_spec.rb +0 -33
  130. data/spec/unit/util/query_mapper_spec.rb +0 -144
  131. data/spec/unit/util/uri_spec.rb +0 -299
  132. data/spec/unit/util/version_checker_spec.rb +0 -65
  133. data/spec/unit/webmock_spec.rb +0 -11
  134. data/test/http_request.rb +0 -24
  135. data/test/shared_test.rb +0 -95
  136. data/test/test_helper.rb +0 -23
  137. data/test/test_webmock.rb +0 -6
  138. data/webmock.gemspec +0 -46
@@ -1,916 +0,0 @@
1
- shared_context "request expectations" do |*adapter_info|
2
- describe "when request expectations are set" do
3
- describe "when net connect is not allowed" do
4
- before(:each) do
5
- WebMock.disable_net_connect!
6
- stub_request(:any, "http://www.example.com")
7
- stub_request(:any, "https://www.example.com")
8
- end
9
-
10
- it "should satisfy expectation if request was executed with the same uri and method" do
11
- expect {
12
- http_request(:get, "http://www.example.com/")
13
- expect(a_request(:get, "http://www.example.com")).to have_been_made.once
14
- }.not_to raise_error
15
- end
16
-
17
- it "should satisfy expectation declared on WebMock.resuest" do
18
- expect {
19
- http_request(:get, "http://www.example.com/")
20
- expect(WebMock.request(:get, "http://www.example.com")).to have_been_made.once
21
- }.not_to raise_error
22
- end
23
-
24
- it "should satisfy expectation if request was not expected and not executed" do
25
- expect {
26
- expect(a_request(:get, "http://www.example.com")).not_to have_been_made
27
- }.not_to raise_error
28
- end
29
-
30
- it "should fail if request was not expected but executed" do
31
- expect {
32
- http_request(:get, "http://www.example.com/")
33
- expect(a_request(:get, "http://www.example.com")).not_to have_been_made
34
- }.to fail_with(%r(The request GET http://www.example.com/ was not expected to execute but it executed 1 time))
35
- end
36
-
37
- it "should fail resulting with failure with a message and executed requests listed" do
38
- expect {
39
- http_request(:get, "http://www.example.com/")
40
- expect(a_request(:get, "http://www.example.com")).not_to have_been_made
41
- }.to fail_with(%r{The following requests were made:\n\nGET http://www.example.com/.+was made 1 time})
42
- end
43
-
44
- it "should fail if request was not executed" do
45
- expect {
46
- expect(a_request(:get, "http://www.example.com")).to have_been_made
47
- }.to fail_with(%r(The request GET http://www.example.com/ was expected to execute 1 time but it executed 0 times))
48
- end
49
-
50
- it "should fail if request was executed to different uri" do
51
- expect {
52
- http_request(:get, "http://www.example.com/")
53
- expect(a_request(:get, "http://www.example.org")).to have_been_made
54
- }.to fail_with(%r(The request GET http://www.example.org/ was expected to execute 1 time but it executed 0 times))
55
- end
56
-
57
- it "should fail if request was executed with different method" do
58
- expect {
59
- http_request(:post, "http://www.example.com/", body: "abc")
60
- expect(a_request(:get, "http://www.example.com")).to have_been_made
61
- }.to fail_with(%r(The request GET http://www.example.com/ was expected to execute 1 time but it executed 0 times))
62
- end
63
-
64
- it "should satisfy expectation if request was executed with different form of uri" do
65
- expect {
66
- http_request(:get, "http://www.example.com/")
67
- expect(a_request(:get, "www.example.com")).to have_been_made
68
- }.not_to raise_error
69
- end
70
-
71
- it "should satisfy expectation if request was executed with different form of uri without port " do
72
- expect {
73
- http_request(:get, "http://www.example.com/")
74
- expect(a_request(:get, "www.example.com:80")).to have_been_made
75
- }.not_to raise_error
76
- end
77
-
78
- it "should satisfy expectation if request was executed with different form of uri with port" do
79
- expect {
80
- http_request(:get, "http://www.example.com/")
81
- expect(a_request(:get, "www.example.com:80")).to have_been_made
82
- }.not_to raise_error
83
- end
84
-
85
- it "should fail if request was executed to a different port" do
86
- expect {
87
- http_request(:get, "http://www.example.com:80/")
88
- expect(a_request(:get, "www.example.com:90")).to have_been_made
89
- }.to fail_with(%r(The request GET http://www.example.com:90/ was expected to execute 1 time but it executed 0 times))
90
- end
91
-
92
- it "should satisfy expectation if request was executed with different form of uri with https port" do
93
- expect {
94
- http_request(:get, "https://www.example.com/")
95
- expect(a_request(:get, "https://www.example.com:443/")).to have_been_made
96
- }.not_to raise_error
97
- end
98
-
99
- it "should satisfy expectations even if requests were executed in different order than expectations were declared" do
100
- stub_request(:post, "http://www.example.com")
101
- http_request(:post, "http://www.example.com/", body: "def")
102
- http_request(:post, "http://www.example.com/", body: "abc")
103
- expect(WebMock).to have_requested(:post, "www.example.com").with(body: "abc")
104
- expect(WebMock).to have_requested(:post, "www.example.com").with(body: "def")
105
- end
106
-
107
- describe "when matching requests with escaped or unescaped uris" do
108
- before(:each) do
109
- WebMock.disable_net_connect!
110
- stub_request(:any, "http://www.example.com/?#{NOT_ESCAPED_PARAMS}")
111
- end
112
-
113
- it "should satisfy expectation if request was executed with escaped params" do
114
- expect {
115
- http_request(:get, "http://www.example.com/?#{ESCAPED_PARAMS}")
116
- expect(a_request(:get, "http://www.example.com/?#{NOT_ESCAPED_PARAMS}")).to have_been_made
117
- }.not_to raise_error
118
- end
119
-
120
- it "should satisfy expectation if request was executed with non escaped params" do
121
- expect {
122
- http_request(:get, "http://www.example.com/?#{NOT_ESCAPED_PARAMS}")
123
- expect(a_request(:get, "http://www.example.com/?#{ESCAPED_PARAMS}")).to have_been_made
124
- }.not_to raise_error
125
- end
126
-
127
- it "should satisfy expectation if request was executed with escaped params and uri matching regexp was expected" do
128
- expect {
129
- http_request(:get, "http://www.example.com/?#{ESCAPED_PARAMS}")
130
- expect(a_request(:get, /.*example.*/)).to have_been_made
131
- }.not_to raise_error
132
- end
133
-
134
- end
135
-
136
- describe "when matching requests with query params" do
137
- before(:each) do
138
- stub_request(:any, /.*example.*/)
139
- end
140
-
141
- it "should satisfy expectation if the request was executed with query params declared as a hash in a query option" do
142
- expect {
143
- http_request(:get, "http://www.example.com/?a[]=b&a[]=c")
144
- expect(a_request(:get, "www.example.com").with(query: {"a" => ["b", "c"]})).to have_been_made
145
- }.not_to raise_error
146
- end
147
-
148
- it "should satisfy expectation if the request was executed with query params declared as string in query option" do
149
- expect {
150
- http_request(:get, "http://www.example.com/?a[]=b&a[]=c")
151
- expect(a_request(:get, "www.example.com").with(query: "a[]=b&a[]=c")).to have_been_made
152
- }.not_to raise_error
153
- end
154
-
155
- it "should satisfy expectation if the request was executed with query params both in uri and in query option" do
156
- expect {
157
- http_request(:get, "http://www.example.com/?x=3&a[]=b&a[]=c")
158
- expect(a_request(:get, "www.example.com/?x=3").with(query: {"a" => ["b", "c"]})).to have_been_made
159
- }.not_to raise_error
160
- end
161
-
162
- it "should satisfy expectation if the request was executed with only part query params declared as a hash in a query option" do
163
- expect {
164
- http_request(:get, "http://www.example.com/?a[]=b&a[]=c&b=1")
165
- expect(a_request(:get, "www.example.com").with(query: hash_including({"a" => ["b", "c"]}))).to have_been_made
166
- }.not_to raise_error
167
- end
168
- end
169
-
170
- context "when using flat array notation" do
171
- before :all do
172
- WebMock::Config.instance.query_values_notation = :flat_array
173
- end
174
-
175
- it "should satisfy expectation if request includes different repeated query params in flat array notation" do
176
- expect {
177
- stub_request(:get, "http://www.example.com/?a=1&a=2")
178
- http_request(:get, "http://www.example.com/?a=1&a=2")
179
- expect(a_request(:get, "http://www.example.com/?a=1&a=2")).to have_been_made
180
- }.not_to raise_error
181
- end
182
-
183
- after :all do
184
- WebMock::Config.instance.query_values_notation = nil
185
- end
186
- end
187
-
188
-
189
-
190
- describe "at_most_times" do
191
- it "fails if request was made more times than maximum" do
192
- expect {
193
- http_request(:get, "http://www.example.com/")
194
- http_request(:get, "http://www.example.com/")
195
- http_request(:get, "http://www.example.com/")
196
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_times(2)
197
- }.to fail_with(%r(The request GET http://www.example.com/ was expected to execute at most 2 times but it executed 3 times))
198
- end
199
-
200
- it "passes if request was made the maximum number of times" do
201
- expect {
202
- http_request(:get, "http://www.example.com/")
203
- http_request(:get, "http://www.example.com/")
204
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_times(2)
205
- }.not_to raise_error
206
- end
207
-
208
- it "passes if request was made fewer than the maximum number of times" do
209
- expect {
210
- http_request(:get, "http://www.example.com/")
211
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_times(2)
212
- }.not_to raise_error
213
- end
214
-
215
- it "passes if request was not made at all" do
216
- expect {
217
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_times(2)
218
- }.not_to raise_error
219
- end
220
- end
221
-
222
-
223
- describe "at_least_times" do
224
- it "fails if request was made fewer times than minimum" do
225
- expect {
226
- http_request(:get, "http://www.example.com/")
227
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_least_times(2)
228
- }.to fail_with(%r(The request GET http://www.example.com/ was expected to execute at least 2 times but it executed 1 time))
229
- end
230
-
231
- it "passes if request was made the minimum number of times" do
232
- expect {
233
- http_request(:get, "http://www.example.com/")
234
- http_request(:get, "http://www.example.com/")
235
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_least_times(2)
236
- }.not_to raise_error
237
- end
238
-
239
- it "passes if request was made more than the minimum number of times" do
240
- expect {
241
- http_request(:get, "http://www.example.com/")
242
- http_request(:get, "http://www.example.com/")
243
- http_request(:get, "http://www.example.com/")
244
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_least_times(2)
245
- }.not_to raise_error
246
- end
247
-
248
- context "descriptive at_most_ matcher" do
249
- context "at_most_once" do
250
- it "succeeds if no request was executed" do
251
- expect {
252
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_once
253
- }.not_to raise_error
254
- end
255
-
256
- it "satisfies expectation if request was executed with the same uri and method once" do
257
- expect {
258
- http_request(:get, "http://www.example.com/")
259
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_once
260
- }.not_to raise_error
261
- end
262
-
263
- it "fails if request was executed with the same uri and method twice" do
264
- expect {
265
- http_request(:get, "http://www.example.com/")
266
- http_request(:get, "http://www.example.com/")
267
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_once
268
- }.to fail
269
- end
270
- end
271
-
272
- context "at_most_twice" do
273
- it "succeeds if no request was executed" do
274
- expect {
275
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_twice
276
- }.not_to raise_error
277
- end
278
-
279
- it "succeeds if too few requests were executed" do
280
- expect {
281
- http_request(:get, "http://www.example.com/")
282
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_twice
283
- }.not_to raise_error
284
- end
285
-
286
- it "satisfies expectation if request was executed with the same uri and method twice" do
287
- expect {
288
- http_request(:get, "http://www.example.com/")
289
- http_request(:get, "http://www.example.com/")
290
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_twice
291
- }.not_to raise_error
292
- end
293
-
294
- it "fails if request was executed with the same uri and method three times" do
295
- expect {
296
- http_request(:get, "http://www.example.com/")
297
- http_request(:get, "http://www.example.com/")
298
- http_request(:get, "http://www.example.com/")
299
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_most_twice
300
- }.to fail
301
- end
302
- end
303
- end
304
-
305
- context "descriptive at_least_ matcher" do
306
- context "at_least_once" do
307
- it "fails if no request was executed" do
308
- expect {
309
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_least_once
310
- }.to fail
311
- end
312
-
313
- it "satisfies expectation if request was executed with the same uri and method once" do
314
- expect {
315
- http_request(:get, "http://www.example.com/")
316
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_least_once
317
- }.not_to raise_error
318
- end
319
-
320
- it "satisfies expectation if request was executed with the same uri and method twice" do
321
- expect {
322
- http_request(:get, "http://www.example.com/")
323
- http_request(:get, "http://www.example.com/")
324
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_least_once
325
- }.not_to raise_error
326
- end
327
- end
328
-
329
- context "at_least_twice" do
330
- it "fails if no request was executed" do
331
- expect {
332
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_least_twice
333
- }.to fail
334
- end
335
-
336
- it "fails if too few requests were executed" do
337
- expect {
338
- http_request(:get, "http://www.example.com/")
339
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_least_twice
340
- }.to fail
341
- end
342
-
343
- it "satisfies expectation if request was executed with the same uri and method twice" do
344
- expect {
345
- http_request(:get, "http://www.example.com/")
346
- http_request(:get, "http://www.example.com/")
347
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_least_twice
348
- }.not_to raise_error
349
- end
350
-
351
- it "satisfies expectation if request was executed with the same uri and method three times" do
352
- expect {
353
- http_request(:get, "http://www.example.com/")
354
- http_request(:get, "http://www.example.com/")
355
- http_request(:get, "http://www.example.com/")
356
- expect(a_request(:get, "http://www.example.com")).to have_been_made.at_least_twice
357
- }.not_to raise_error
358
- end
359
- end
360
- end
361
- end
362
-
363
- it "should fail if request was made more times than expected" do
364
- expect {
365
- http_request(:get, "http://www.example.com/")
366
- http_request(:get, "http://www.example.com/")
367
- expect(a_request(:get, "http://www.example.com")).to have_been_made
368
- }.to fail_with(%r(The request GET http://www.example.com/ was expected to execute 1 time but it executed 2 times))
369
- end
370
-
371
- it "should fail if request was made less times than expected" do
372
- expect {
373
- http_request(:get, "http://www.example.com/")
374
- expect(a_request(:get, "http://www.example.com")).to have_been_made.twice
375
- }.to fail_with(%r(The request GET http://www.example.com/ was expected to execute 2 times but it executed 1 time))
376
- end
377
-
378
- it "should fail if request was made less times than expected when 3 times expected" do
379
- expect {
380
- http_request(:get, "http://www.example.com/")
381
- expect(a_request(:get, "http://www.example.com")).to have_been_made.times(3)
382
- }.to fail_with(%r(The request GET http://www.example.com/ was expected to execute 3 times but it executed 1 time))
383
- end
384
-
385
- it "should satisfy expectation if request was executed with the same body" do
386
- expect {
387
- http_request(:post, "http://www.example.com/", body: "abc")
388
- expect(a_request(:post, "www.example.com").with(body: "abc")).to have_been_made
389
- }.not_to raise_error
390
- end
391
-
392
- it "should fail if request was executed with different body" do
393
- expect {
394
- http_request(:post, "http://www.example.com/", body: "abc")
395
- expect(a_request(:post, "www.example.com").
396
- with(body: "def")).to have_been_made
397
- }.to fail_with(%r(The request POST http://www.example.com/ with body "def" was expected to execute 1 time but it executed 0 times))
398
- end
399
-
400
- describe "when expected request body is declared as a regexp" do
401
- it "should satisfy expectation if request was executed with body matching regexp" do
402
- expect {
403
- http_request(:post, "http://www.example.com/", body: "abc")
404
- expect(a_request(:post, "www.example.com").with(body: /^abc$/)).to have_been_made
405
- }.not_to raise_error
406
- end
407
-
408
- it "should fail if request was executed with body not matching regexp" do
409
- expect {
410
- http_request(:post, "http://www.example.com/", body: "abc")
411
- expect(a_request(:post, "www.example.com").
412
- with(body: /^xabc/)).to have_been_made
413
- }.to fail_with(%r(The request POST http://www.example.com/ with body /\^xabc/ was expected to execute 1 time but it executed 0 times))
414
- end
415
-
416
- end
417
-
418
- describe "when expected reqest body is declared as a hash" do
419
- let(:body_hash) { {:a => '1', :b => 'five', 'c' => {'d' => ['e', 'f']}} }
420
- let(:fail_message) {%r(The request POST http://www.example.com/ with body .+ was expected to execute 1 time but it executed 0 times)}
421
-
422
- describe "when request is made with url encoded body matching hash" do
423
- it "should satisfy expectation" do
424
- expect {
425
- http_request(:post, "http://www.example.com/", body: 'a=1&c[d][]=e&c[d][]=f&b=five')
426
- expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
427
- }.not_to raise_error
428
- end
429
-
430
- it "should satisfy expectation even if url encoded params have different order" do
431
- expect {
432
- http_request(:post, "http://www.example.com/", body: 'a=1&c[d][]=e&b=five&c[d][]=f')
433
- expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
434
- }.not_to raise_error
435
- end
436
-
437
- it "should fail if request is executed with url encoded body not matching hash" do
438
- expect {
439
- http_request(:post, "http://www.example.com/", body: 'c[d][]=f&a=1&c[d][]=e')
440
- expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
441
- }.to fail_with(fail_message)
442
- end
443
- end
444
-
445
- describe "when request is executed with json body matching hash and Content-Type is set to json" do
446
- it "should satisfy expectation" do
447
- expect {
448
- http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/json'},
449
- body: "{\"a\":\"1\",\"c\":{\"d\":[\"e\",\"f\"]},\"b\":\"five\"}")
450
- expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
451
- }.not_to raise_error
452
- end
453
-
454
- it "should satisfy expectation even if json body is in different form" do
455
- expect {
456
- http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/json'},
457
- body: "{\"a\":\"1\",\"b\":\"five\",\"c\":{\"d\":[\"e\",\"f\"]}}")
458
- expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
459
- }.not_to raise_error
460
- end
461
-
462
- it "should satisfy expectation even if json body contains date string" do
463
- expect {
464
- http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/json'},
465
- body: "{\"foo\":\"2010-01-01\"}")
466
- expect(a_request(:post, "www.example.com").with(body: {"foo" => "2010-01-01"})).to have_been_made
467
- }.not_to raise_error
468
- end
469
- end
470
-
471
-
472
- describe "when request is executed with xml body matching hash and content type is set to xml" do
473
- let(:body_hash) { { "opt" => {:a => "1", :b => 'five', 'c' => {'d' => ['e', 'f']}} }}
474
-
475
- it "should satisfy expectation" do
476
- expect {
477
- http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/xml'},
478
- body: "<opt a=\"1\" b=\"five\">\n <c>\n <d>e</d>\n <d>f</d>\n </c>\n</opt>\n")
479
- expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
480
- }.not_to raise_error
481
- end
482
-
483
- it "should satisfy expectation even if xml body is in different form" do
484
- expect {
485
- http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/xml'},
486
- body: "<opt b=\"five\" a=\"1\">\n <c>\n <d>e</d>\n <d>f</d>\n </c>\n</opt>\n")
487
- expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
488
- }.not_to raise_error
489
- end
490
-
491
- it "should satisfy expectation even if xml body contains date string" do
492
- expect {
493
- http_request(:post, "http://www.example.com/", headers: {'Content-Type' => 'application/xml'},
494
- body: "<opt foo=\"2010-01-01\">\n</opt>\n")
495
- expect(a_request(:post, "www.example.com").with(body: {"opt" => {"foo" => "2010-01-01"}})).to have_been_made
496
- }.not_to raise_error
497
- end
498
- end
499
- end
500
-
501
- describe "when expected reqest body is declared as a partial hash matcher" do
502
- let(:body_hash) { hash_including({:a => '1', 'c' => {'d' => ['e', 'f']}}) }
503
- let(:fail_message) {%r(The request POST http://www.example.com/ with body hash_including(.+) was expected to execute 1 time but it executed 0 times)}
504
-
505
- describe "when request is made with url encoded body matching hash" do
506
- it "should satisfy expectation" do
507
- expect {
508
- http_request(:post, "http://www.example.com/", body: 'a=1&c[d][]=e&c[d][]=f&b=five')
509
- expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
510
- }.not_to raise_error
511
- end
512
-
513
- it "should fail if request is executed with url encoded body not matching hash" do
514
- expect {
515
- http_request(:post, "http://www.example.com/", body: 'c[d][]=f&a=1&c[d][]=e')
516
- expect(a_request(:post, "www.example.com").with(body: body_hash)).to have_been_made
517
- }.to fail_with(fail_message)
518
- end
519
- end
520
- end
521
-
522
- describe "when request with headers is expected" do
523
- it "should satisfy expectation if request was executed with the same headers" do
524
- expect {
525
- http_request(:get, "http://www.example.com/", headers: SAMPLE_HEADERS)
526
- expect(a_request(:get, "www.example.com").
527
- with(headers: SAMPLE_HEADERS)).to have_been_made
528
- }.not_to raise_error
529
- end
530
-
531
- it "should satisfy expectation if request was executed with the same headers but with header value declared as array" do
532
- expect {
533
- http_request(:get, "http://www.example.com/", headers: {"a" => "b"})
534
- expect(a_request(:get, "www.example.com").
535
- with(headers: {"a" => ["b"]})).to have_been_made
536
- }.not_to raise_error
537
- end
538
-
539
- describe "when multiple headers with the same key are passed" do
540
- it "should satisfy expectation" do
541
- expect {
542
- http_request(:get, "http://www.example.com/", headers: {"a" => ["b", "c"]})
543
- expect(a_request(:get, "www.example.com").
544
- with(headers: {"a" => ["b", "c"]})).to have_been_made
545
- }.not_to raise_error
546
- end
547
-
548
- it "should satisfy expectation even if request was executed with the same headers but different order" do
549
- expect {
550
- http_request(:get, "http://www.example.com/", headers: {"a" => ["b", "c"]})
551
- expect(a_request(:get, "www.example.com").
552
- with(headers: {"a" => ["c", "b"]})).to have_been_made
553
- }.not_to raise_error
554
- end
555
-
556
- it "should fail if request was executed with different headers" do
557
- expect {
558
- http_request(:get, "http://www.example.com/", headers: {"a" => ["b", "c"]})
559
- expect(a_request(:get, "www.example.com").
560
- with(headers: {"a" => ["b", "d"]})).to have_been_made
561
- }.to 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))
562
- end
563
- end
564
-
565
- it "should fail if request was executed with different headers" do
566
- expect {
567
- http_request(:get, "http://www.example.com/", headers: SAMPLE_HEADERS)
568
- expect(a_request(:get, "www.example.com").
569
- with(headers: { 'Content-Length' => '9999'})).to have_been_made
570
- }.to 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))
571
- end
572
-
573
- it "should fail if request was executed with less headers" do
574
- expect {
575
- http_request(:get, "http://www.example.com/", headers: {'A' => 'a'})
576
- expect(a_request(:get, "www.example.com").
577
- with(headers: {'A' => 'a', 'B' => 'b'})).to have_been_made
578
- }.to 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))
579
- end
580
-
581
- it "should satisfy expectation if request was executed with more headers" do
582
- expect {
583
- http_request(:get, "http://www.example.com/",
584
- headers: {'A' => 'a', 'B' => 'b'}
585
- )
586
- expect(a_request(:get, "www.example.com").
587
- with(headers: {'A' => 'a'})).to have_been_made
588
- }.not_to raise_error
589
- end
590
-
591
- it "should satisfy expectation if request was executed with body and headers but they were not specified in expectantion" do
592
- expect {
593
- http_request(:post, "http://www.example.com/",
594
- body: "abc",
595
- headers: SAMPLE_HEADERS
596
- )
597
- expect(a_request(:post, "www.example.com")).to have_been_made
598
- }.not_to raise_error
599
- end
600
-
601
- it "should satisfy expectation if request was executed with headers matching regular expressions" do
602
- expect {
603
- http_request(:get, "http://www.example.com/", headers: { 'some-header' => 'MyAppName' })
604
- expect(a_request(:get, "www.example.com").
605
- with(headers: { some_header: /^MyAppName$/ })).to have_been_made
606
- }.not_to raise_error
607
- end
608
-
609
- it "should fail if request was executed with headers not matching regular expression" do
610
- expect {
611
- http_request(:get, "http://www.example.com/", headers: { 'some-header' => 'xMyAppName' })
612
- expect(a_request(:get, "www.example.com").
613
- with(headers: { some_header: /^MyAppName$/ })).to have_been_made
614
- }.to 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))
615
- end
616
- end
617
-
618
- describe "when expectation contains a request matching block" do
619
- it "should satisfy expectation if request was executed and block evaluated to true" do
620
- expect {
621
- http_request(:post, "http://www.example.com/", body: "wadus")
622
- expect(a_request(:post, "www.example.com").with { |req| req.body == "wadus" }).to have_been_made
623
- }.not_to raise_error
624
- end
625
-
626
- it "should fail if request was executed and block evaluated to false" do
627
- expect {
628
- http_request(:post, "http://www.example.com/", body: "abc")
629
- expect(a_request(:post, "www.example.com").with { |req| req.body == "wadus" }).to have_been_made
630
- }.to fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
631
- end
632
-
633
- it "should fail if request was not expected but it executed and block matched request" do
634
- expect {
635
- http_request(:post, "http://www.example.com/", body: "wadus")
636
- expect(a_request(:post, "www.example.com").with { |req| req.body == "wadus" }).not_to have_been_made
637
- }.to fail_with(%r(The request POST http://www.example.com/ with given block was not expected to execute but it executed 1 time))
638
- end
639
- end
640
-
641
- describe "with userinfo", unless: (adapter_info.include?(:no_url_auth)) do
642
- before(:each) do
643
- stub_request(:any, "http://user:pass@www.example.com")
644
- stub_request(:any, "http://user:pazz@www.example.com")
645
- end
646
-
647
- it "should satisfy expectation if request was executed with expected credentials" do
648
- expect {
649
- http_request(:get, "http://user:pass@www.example.com/")
650
- expect(a_request(:get, "http://user:pass@www.example.com")).to have_been_made.once
651
- }.not_to raise_error
652
- end
653
-
654
- it "should fail if request was executed with different credentials than expected" do
655
- expect {
656
- http_request(:get, "http://user:pass@www.example.com/")
657
- expect(a_request(:get, "http://user:pazz@www.example.com")).to have_been_made.once
658
- }.to fail_with(%r(The request GET http://user:pazz@www.example.com/ was expected to execute 1 time but it executed 0 times))
659
- end
660
-
661
- it "should fail if request was executed without credentials and credentials were expected" do
662
- expect {
663
- http_request(:get, "http://www.example.com/")
664
- expect(a_request(:get, "http://user:pass@www.example.com")).to have_been_made.once
665
- }.to fail_with(%r(The request GET http://user:pass@www.example.com/ was expected to execute 1 time but it executed 0 times))
666
- end
667
-
668
- it "should fail if request was executed with credentials but expected without credentials" do
669
- expect {
670
- http_request(:get, "http://user:pass@www.example.com/")
671
- expect(a_request(:get, "http://www.example.com")).to have_been_made.once
672
- }.to fail_with(%r(The request GET http://www.example.com/ was expected to execute 1 time but it executed 0 times))
673
- end
674
-
675
- it "should fail if request was executed with basic auth header but expected with credentials in userinfo" do
676
- expect {
677
- http_request(:get, "http://www.example.com/", basic_auth: ['user', 'pass'])
678
- expect(a_request(:get, "http://user:pass@www.example.com")).to have_been_made.once
679
- }.to fail_with(%r(The request GET http://user:pass@www.example.com/ was expected to execute 1 time but it executed 0 times))
680
- end
681
- end
682
-
683
- describe "with basic authentication header" do
684
- before(:each) do
685
- stub_request(:any, "http://www.example.com").with(basic_auth: ['user', 'pass'])
686
- stub_request(:any, "http://www.example.com").with(basic_auth: ['user', 'pazz'])
687
- end
688
-
689
- it "should satisfy expectation if request was executed with expected credentials" do
690
- expect {
691
- http_request(:get, "http://www.example.com/", basic_auth: ['user', 'pass'])
692
- expect(a_request(:get, "http://www.example.com").with(basic_auth: ['user', 'pass'])).to have_been_made.once
693
- }.not_to raise_error
694
- end
695
-
696
- it "should satisfy expectation if request was executed with expected credentials passed directly as header" do
697
- expect {
698
- http_request(:get, "http://www.example.com/", headers: {'Authorization'=>'Basic dXNlcjpwYXNz'})
699
- expect(a_request(:get, "http://www.example.com").with(basic_auth: ['user', 'pass'])).to have_been_made.once
700
- }.not_to raise_error
701
- end
702
-
703
- it "should fail if request was executed with different credentials than expected" do
704
- expect {
705
- http_request(:get, "http://www.example.com/", basic_auth: ['user', 'pass'])
706
- expect(a_request(:get, "http://www.example.com").with(basic_auth: ['user', 'pazz'])).to have_been_made.once
707
- }.to fail_with(%r(The request GET http://www.example.com/ with headers {'Authorization'=>'Basic dXNlcjpwYXp6'} was expected to execute 1 time but it executed 0 times))
708
- end
709
-
710
- it "should fail if request was executed without credentials and credentials were expected" do
711
- expect {
712
- http_request(:get, "http://www.example.com/")
713
- expect(a_request(:get, "http://www.example.com").with(basic_auth: ['user', 'pass'])).to have_been_made.once
714
- }.to fail_with(%r(The request GET http://www.example.com/ with headers {'Authorization'=>'Basic dXNlcjpwYXNz'} was expected to execute 1 time but it executed 0 times))
715
- end
716
-
717
- it "should not fail if request was executed with credentials but expected despite credentials" do
718
- expect {
719
- http_request(:get, "http://www.example.com/", basic_auth: ['user', 'pass'])
720
- expect(a_request(:get, "http://www.example.com")).to have_been_made.once
721
- }.not_to raise_error
722
- end
723
-
724
- it "should fail if request was executed with basic auth header and credentials were provided in url", unless: (adapter_info.include?(:no_url_auth)) do
725
- expect {
726
- stub_request(:any, "http://user:pass@www.example.com")
727
- http_request(:get, "http://user:pass@www.example.com/")
728
- expect(a_request(:get, "http://www.example.com").with(basic_auth: ['user', 'pass'])).to have_been_made.once
729
- }.to fail_with(%r(The request GET http://www.example.com/ with headers {'Authorization'=>'Basic dXNlcjpwYXNz'} was expected to execute 1 time but it executed 0 times))
730
- end
731
- end
732
-
733
- describe "when expectations were set on WebMock object" do
734
- it "should satisfy expectation if expected request was made" do
735
- expect {
736
- http_request(:get, "http://www.example.com/")
737
- expect(WebMock).to have_requested(:get, "http://www.example.com").once
738
- }.not_to raise_error
739
- end
740
-
741
- it "should satisfy expectation if request with body and headers was expected and request was made" do
742
- expect {
743
- http_request(:post, "http://www.example.com/", body: "abc", headers: {'A' => 'a'})
744
- expect(WebMock).to have_requested(:post, "http://www.example.com").with(body: "abc", headers: {'A' => 'a'}).once
745
- }.not_to raise_error
746
- end
747
-
748
- it "should fail if request expected not to be made was made" do
749
- expect {
750
- http_request(:get, "http://www.example.com/")
751
- expect(WebMock).not_to have_requested(:get, "http://www.example.com")
752
- }.to fail_with(%r(The request GET http://www.example.com/ was not expected to execute but it executed 1 time))
753
- end
754
-
755
- it "should satisfy expectation if request was executed and expectation had block which evaluated to true" do
756
- expect {
757
- http_request(:post, "http://www.example.com/", body: "wadus")
758
- expect(WebMock).to have_requested(:post, "www.example.com").with { |req| req.body == "wadus" }
759
- }.not_to raise_error
760
- end
761
-
762
- it "should fail if request was executed and expectation had block which evaluated to false" do
763
- expect {
764
- http_request(:post, "http://www.example.com/", body: "abc")
765
- expect(WebMock).to have_requested(:post, "www.example.com").with { |req| req.body == "wadus" }
766
- }.to fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
767
- end
768
-
769
- it "should fail if request was expected not to be made but was made and block matched request" do
770
- expect {
771
- http_request(:post, "http://www.example.com/", body: "wadus")
772
- expect(WebMock).not_to have_requested(:post, "www.example.com").with { |req| req.body == "wadus" }
773
- }.to fail_with(%r(The request POST http://www.example.com/ with given block was not expected to execute but it executed 1 time))
774
- end
775
- end
776
-
777
- describe "when expectation is declared using assert_requested" do
778
- it "should satisfy expectation if requests was made" do
779
- expect {
780
- http_request(:get, "http://www.example.com/")
781
- assert_requested(:get, "http://www.example.com", times: 1)
782
- assert_requested(:get, "http://www.example.com")
783
- }.not_to raise_error
784
- end
785
-
786
- it "should satisfy expectation if request was made with body and headers" do
787
- expect {
788
- http_request(:post, "http://www.example.com/", body: "abc", headers: {'A' => 'a'})
789
- assert_requested(:post, "http://www.example.com", body: "abc", headers: {'A' => 'a'})
790
- }.not_to raise_error
791
- end
792
-
793
- it "should fail if request expected not to be made was not wade" do
794
- expect {
795
- http_request(:get, "http://www.example.com/")
796
- assert_not_requested(:get, "http://www.example.com")
797
- }.to fail_with(%r(The request GET http://www.example.com/ was not expected to execute but it executed 1 time))
798
- end
799
-
800
- it "should fail if request expected not to be made was made and expectation block evaluated to true" do
801
- expect {
802
- http_request(:post, "http://www.example.com/", body: "wadus")
803
- assert_not_requested(:post, "www.example.com") { |req| req.body == "wadus" }
804
- }.to fail_with(%r(The request POST http://www.example.com/ with given block was not expected to execute but it executed 1 time))
805
- end
806
-
807
- it "should satisfy expectation if request was made and expectation block evaluated to true" do
808
- expect {
809
- http_request(:post, "http://www.example.com/", body: "wadus")
810
- assert_requested(:post, "www.example.com") { |req| req.body == "wadus" }
811
- }.not_to raise_error
812
- end
813
-
814
- it "should fail if request was made and expectation block evaluated to false" do
815
- expect {
816
- http_request(:post, "http://www.example.com/", body: "abc")
817
- assert_requested(:post, "www.example.com") { |req| req.body == "wadus" }
818
- }.to fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
819
- end
820
- end
821
-
822
- describe "when expectation is declared using assert_requested" do
823
- it "should satisfy expectation if requests was made" do
824
- stub_http = stub_http_request(:get, "http://www.example.com")
825
- expect {
826
- http_request(:get, "http://www.example.com/")
827
- assert_requested(stub_http, times: 1)
828
- assert_requested(stub_http)
829
- }.not_to raise_error
830
- end
831
-
832
- it "should fail if request expected not to be made was not wade" do
833
- stub_http = stub_http_request(:get, "http://www.example.com")
834
- expect {
835
- http_request(:get, "http://www.example.com/")
836
- assert_not_requested(stub_http)
837
- }.to fail_with(%r(The request GET http://www.example.com/ was not expected to execute but it executed 1 time))
838
- end
839
- end
840
- end
841
-
842
-
843
- describe "expectation is set on the request stub" do
844
- it "should satisfy expectation if expected request was made" do
845
- stub = stub_request(:get, "http://www.example.com/")
846
- http_request(:get, "http://www.example.com/")
847
- expect(stub).to have_been_requested.once
848
- end
849
-
850
- it "should satisfy expectations if subsequent requests were made" do
851
- stub = stub_request(:get, "http://www.example.com/")
852
- http_request(:get, "http://www.example.com/")
853
- expect(stub).to have_been_requested.once
854
- http_request(:get, "http://www.example.com/")
855
- expect(stub).to have_been_requested.twice
856
- end
857
-
858
- it "should satisfy expectation if expected request with body and headers was made" do
859
- stub = stub_request(:post, "http://www.example.com").with(body: "abc", headers: {'A' => 'a'})
860
- http_request(:post, "http://www.example.com/", body: "abc", headers: {'A' => 'a'})
861
- expect(stub).to have_been_requested.once
862
- end
863
-
864
- it "should fail if request not expected to be made was made" do
865
- expect {
866
- stub = stub_request(:get, "http://www.example.com")
867
- http_request(:get, "http://www.example.com/")
868
- expect(stub).not_to have_been_requested
869
- }.to fail_with(%r(The request GET http://www.example.com/ was not expected to execute but it executed 1 time))
870
- end
871
-
872
- it "should fail request not expected to be made was made and expectation block evaluated to true" do
873
- expect {
874
- stub = stub_request(:post, "www.example.com").with { |req| req.body == "wadus" }
875
- http_request(:post, "http://www.example.com/", body: "wadus")
876
- expect(stub).not_to have_been_requested
877
- }.to fail_with(%r(The request POST http://www.example.com/ with given block was not expected to execute but it executed 1 time))
878
- end
879
-
880
- it "should satisfy expectation if request was made and expectation block evaluated to true" do
881
- stub = stub_request(:post, "www.example.com").with { |req| req.body == "wadus" }
882
- http_request(:post, "http://www.example.com/", body: "wadus")
883
- expect(stub).to have_been_requested
884
- end
885
-
886
- it "should satisfy expectation if request was made and expectation block evaluated to false" do
887
- expect {
888
- stub_request(:any, /.+/) #stub any request
889
- stub = stub_request(:post, "www.example.com").with { |req| req.body == "wadus" }
890
- http_request(:post, "http://www.example.com/", body: "abc")
891
- expect(stub).to have_been_requested
892
- }.to fail_with(%r(The request POST http://www.example.com/ with given block was expected to execute 1 time but it executed 0 times))
893
- end
894
- end
895
-
896
- describe "when net connect is allowed", net_connect: true do
897
- before(:each) do
898
- WebMock.allow_net_connect!
899
- end
900
-
901
- it "should satisfy expectation if expected requests was made" do
902
- expect {
903
- http_request(:get, "http://www.example.com/")
904
- expect(a_request(:get, "http://www.example.com")).to have_been_made
905
- }.not_to raise_error
906
- end
907
-
908
- it "should fail request expected not to be made, was made" do
909
- expect {
910
- http_request(:get, "http://www.example.com/")
911
- expect(a_request(:get, "http://www.example.com")).not_to have_been_made
912
- }.to fail_with(%r(The request GET http://www.example.com/ was not expected to execute but it executed 1 time))
913
- end
914
- end
915
- end
916
- end