webmock 3.18.1 → 3.20.0

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