webmock 3.0.1 → 3.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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