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,313 +0,0 @@
1
- shared_context "allowing and disabling net connect" do |*adapter_info|
2
- describe "when net connect" do
3
- describe "is allowed", net_connect: true do
4
- before(:each) do
5
- WebMock.allow_net_connect!
6
- end
7
-
8
- it "should make a real web request if request is not stubbed" do
9
- expect(http_request(:get, webmock_server_url).status).to eq("200")
10
- end
11
-
12
- it "should make a real https request if request is not stubbed" do
13
- unless http_library == :httpclient
14
- result = http_request(:get, "https://www.google.com/").body
15
- if result.respond_to? :encode
16
- result = result.encode(
17
- 'UTF-8',
18
- 'binary',
19
- invalid: :replace,
20
- undef: :replace,
21
- replace: ''
22
- )
23
- end
24
- expect(result).to match(/.*google.*/)
25
- end
26
- end
27
-
28
- it "should return stubbed response if request was stubbed" do
29
- stub_request(:get, "www.example.com").to_return(body: "abc")
30
- expect(http_request(:get, "http://www.example.com/").body).to eq("abc")
31
- end
32
- end
33
-
34
- describe "is not allowed" do
35
- before(:each) do
36
- WebMock.disable_net_connect!
37
- end
38
-
39
- it "should return stubbed response if request was stubbed" do
40
- stub_request(:get, "www.example.com").to_return(body: "abc")
41
- expect(http_request(:get, "http://www.example.com/").body).to eq("abc")
42
- end
43
-
44
- it "should return stubbed response if request with path was stubbed" do
45
- stub_request(:get, "www.example.com/hello_world").to_return(body: "abc")
46
- expect(http_request(:get, "http://www.example.com/hello_world").body).to eq("abc")
47
- end
48
-
49
- it "should raise exception if request was not stubbed" do
50
- expect {
51
- http_request(:get, "http://www.example.com/")
52
- }.to raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/))
53
- end
54
- end
55
-
56
- describe "is not allowed with exception for localhost" do
57
- before(:each) do
58
- WebMock.disable_net_connect!(allow_localhost: true)
59
- end
60
-
61
- it "should return stubbed response if request was stubbed" do
62
- stub_request(:get, "www.example.com").to_return(body: "abc")
63
- expect(http_request(:get, "http://www.example.com/").body).to eq("abc")
64
- end
65
-
66
- it "should raise exception if request was not stubbed" do
67
- expect {
68
- http_request(:get, "http://www.example.com/")
69
- }.to raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.example.com/))
70
- end
71
-
72
- it "should make a real request to localhost" do
73
- expect {
74
- http_request(:get, "http://localhost:12345/")
75
- }.to raise_error(connection_refused_exception_class)
76
- end
77
-
78
- it "should make a real request to 127.0.0.1" do
79
- expect {
80
- http_request(:get, "http://127.0.0.1:12345/")
81
- }.to raise_error(connection_refused_exception_class)
82
- end
83
-
84
- it "should make a real request to 0.0.0.0" do
85
- expect {
86
- http_request(:get, "http://0.0.0.0:12345/")
87
- }.to raise_error(connection_refused_exception_class)
88
- end
89
- end
90
-
91
- describe "is not allowed, with exceptions" do
92
- describe "allowing by host string" do
93
- before :each do
94
- WebMock.disable_net_connect!(allow: 'httpstat.us')
95
- end
96
-
97
- context "when the host is not allowed" do
98
- it "should return stubbed response if request was stubbed" do
99
- stub_request(:get, 'disallowed.example.com/foo').to_return(body: "abc")
100
- expect(http_request(:get, 'http://disallowed.example.com/foo').body).to eq("abc")
101
- end
102
-
103
- it "should raise exception if request was not stubbed" do
104
- expect {
105
- http_request(:get, 'http://disallowed.example.com/')
106
- }.to raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://disallowed.example.com))
107
- end
108
- end
109
-
110
- context "when the host is allowed" do
111
- it "should return stubbed response if request was stubbed" do
112
- stub_request(:get, 'httpstat.us/200').to_return(body: "abc")
113
- expect(http_request(:get, "http://httpstat.us/200").body).to eq("abc")
114
- end
115
-
116
- # WARNING: this makes a real HTTP request!
117
- it "should make a real request to allowed host", net_connect: true do
118
- expect(http_request(:get, "http://httpstat.us/200").status).to eq('200')
119
- end
120
- end
121
- end
122
-
123
- describe "allowing by host:port string" do
124
- def replace_with_different_port(uri)
125
- uri.sub(%r{:(\d+)}){|m0, m1| ':' + ($~[1].to_i + 1).to_s }
126
- end
127
-
128
- let(:allowed_host_with_port) { WebMockServer.instance.host_with_port }
129
- let(:disallowed_host_with_port) { replace_with_different_port(allowed_host_with_port) }
130
-
131
- before :each do
132
- WebMock.disable_net_connect!(allow: allowed_host_with_port)
133
- end
134
-
135
- context "when the host is not allowed" do
136
- it "should return stubbed response if request was stubbed" do
137
- request_url = "http://#{disallowed_host_with_port}/foo"
138
- stub_request(:get, request_url).to_return(body: "abc")
139
- expect(http_request(:get, request_url).body).to eq("abc")
140
- end
141
-
142
- it "should raise exception if request was not stubbed" do
143
- request_url = "http://#{disallowed_host_with_port}/foo"
144
- expect {
145
- http_request(:get, request_url)
146
- }.to raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET #{request_url}))
147
- end
148
- end
149
-
150
- context "when the host is allowed" do
151
- it "should return stubbed response if request was stubbed" do
152
- request_url = "http://#{allowed_host_with_port}/foo"
153
- stub_request(:get, request_url).to_return(body: "abc")
154
- expect(http_request(:get, request_url).body).to eq('abc')
155
- end
156
-
157
- it "should make a real request to allowed host", net_connect: true do
158
- request_url = "http://#{allowed_host_with_port}/foo"
159
- expect(http_request(:get, request_url).status).to eq('200')
160
- end
161
- end
162
- end
163
-
164
- describe "allowing by scheme:host string" do
165
- before :each do
166
- WebMock.disable_net_connect!(allow: 'https://www.google.pl')
167
- end
168
-
169
- context "when the host and scheme is not allowed" do
170
- it "should return stubbed response if request was stubbed" do
171
- stub_request(:get, 'https://disallowed.example.com/foo').to_return(body: "abc")
172
- expect(http_request(:get, 'https://disallowed.example.com/foo').body).to eq("abc")
173
- end
174
-
175
- it "should raise exception if request was not stubbed" do
176
- expect {
177
- http_request(:get, 'https://disallowed.example.com/')
178
- }.to raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET https://disallowed.example.com))
179
- end
180
-
181
- it "should raise exception if request was made to different port" do
182
- expect {
183
- http_request(:get, 'https://www.google.pl:80/')
184
- }.to raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET https://www.google.pl:80))
185
- end
186
-
187
- it "should raise exception if request was made to different scheme" do
188
- expect {
189
- http_request(:get, 'http://www.google.pl/')
190
- }.to raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://www.google.pl))
191
- end
192
- end
193
-
194
- context "when the host is allowed" do
195
- it "should return stubbed response if request was stubbed" do
196
- stub_request(:get, 'https://www.google.pl').to_return(body: "abc")
197
- expect(http_request(:get, "https://www.google.pl/").body).to eq("abc")
198
- end
199
-
200
- it "should make a real request to allowed host with scheme", net_connect: true do
201
- method = http_library == :httpclient ? :head : :get #https://github.com/nahi/httpclient/issues/299
202
- expect(http_request(method, "https://www.google.pl/").status).to eq('200')
203
- end
204
-
205
- it "should make a real request to allowed host with scheme and port", net_connect: true do
206
- method = http_library == :httpclient ? :head : :get
207
- expect(http_request(method, "https://www.google.pl:443/").status).to eq('200')
208
- end
209
- end
210
- end
211
-
212
- describe "allowing by regular expression" do
213
- before :each do
214
- WebMock.disable_net_connect!(allow: %r{httpstat})
215
- end
216
-
217
- context "when the host is not allowed" do
218
- it "should return stubbed response if request was stubbed" do
219
- stub_request(:get, 'disallowed.example.com/foo').to_return(body: "abc")
220
- expect(http_request(:get, 'http://disallowed.example.com/foo').body).to eq("abc")
221
- end
222
-
223
- it "should raise exception if request was not stubbed" do
224
- expect {
225
- http_request(:get, 'http://disallowed.example.com/')
226
- }.to raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://disallowed.example.com))
227
- end
228
- end
229
-
230
- context "when the host is allowed" do
231
- it "should return stubbed response if request was stubbed" do
232
- stub_request(:get, 'httpstat.us/200').to_return(body: "abc")
233
- expect(http_request(:get, "http://httpstat.us/200").body).to eq("abc")
234
- end
235
-
236
- # WARNING: this makes a real HTTP request!
237
- it "should make a real request to allowed host", net_connect: true do
238
- expect(http_request(:get, "http://httpstat.us/200").status).to eq('200')
239
- end
240
-
241
- it "should make a real request if request is allowed by path regexp and url contains default port", net_connect: true do
242
- WebMock.disable_net_connect!(allow: %r{www.google.pl/webhp})
243
- method = http_library == :httpclient ? :head : :get
244
- expect(http_request(method, 'https://www.google.pl:443/webhp').status).to eq('200')
245
- end
246
- end
247
- end
248
-
249
- describe "allowing by a callable" do
250
- before :each do
251
- WebMock.disable_net_connect!(allow: lambda{|url| url.to_str.include?('httpstat') })
252
- end
253
-
254
- context "when the host is not allowed" do
255
- it "should return stubbed response if request was stubbed" do
256
- stub_request(:get, 'disallowed.example.com/foo').to_return(body: "abc")
257
- expect(http_request(:get, 'http://disallowed.example.com/foo').body).to eq("abc")
258
- end
259
-
260
- it "should raise exception if request was not stubbed" do
261
- expect {
262
- http_request(:get, 'http://disallowed.example.com/')
263
- }.to raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://disallowed.example.com))
264
- end
265
- end
266
-
267
- context "when the host is allowed" do
268
- it "should return stubbed response if request was stubbed" do
269
- stub_request(:get, 'httpstat.us/200').to_return(body: "abc")
270
- expect(http_request(:get, "http://httpstat.us/200").body).to eq("abc")
271
- end
272
-
273
- # WARNING: this makes a real HTTP request!
274
- it "should make a real request to allowed host", net_connect: true do
275
- expect(http_request(:get, "http://httpstat.us/200").status).to eq('200')
276
- end
277
- end
278
- end
279
-
280
- describe "allowing by a list of the above" do
281
- before :each do
282
- WebMock.disable_net_connect!(allow: [lambda{|_| false }, %r{foobar}, 'httpstat.us'])
283
- end
284
-
285
- context "when the host is not allowed" do
286
- it "should return stubbed response if request was stubbed" do
287
- stub_request(:get, 'disallowed.example.com/foo').to_return(body: "abc")
288
- expect(http_request(:get, 'http://disallowed.example.com/foo').body).to eq("abc")
289
- end
290
-
291
- it "should raise exception if request was not stubbed" do
292
- expect {
293
- http_request(:get, 'http://disallowed.example.com/')
294
- }.to raise_error(WebMock::NetConnectNotAllowedError, %r(Real HTTP connections are disabled. Unregistered request: GET http://disallowed.example.com))
295
- end
296
- end
297
-
298
- context "when the host is allowed" do
299
- it "should return stubbed response if request was stubbed" do
300
- stub_request(:get, 'httpstat.us/200').to_return(body: "abc")
301
- expect(http_request(:get, "http://httpstat.us/200").body).to eq("abc")
302
- end
303
-
304
- # WARNING: this makes a real HTTP request!
305
- it "should make a real request to allowed host", net_connect: true do
306
- expect(http_request(:get, "http://httpstat.us/200").status).to eq('200')
307
- end
308
- end
309
- end
310
-
311
- end
312
- end
313
- end
@@ -1,147 +0,0 @@
1
- shared_context "callbacks" do |*adapter_info|
2
- describe "when after_request callback is declared" do
3
- before(:each) do
4
- @called = nil
5
- WebMock.reset_callbacks
6
- stub_request(:get, "http://www.example.com")
7
- end
8
-
9
- it "should not invoke callback unless request is made" do
10
- WebMock.after_request {
11
- @called = true
12
- }
13
- expect(@called).to eq(nil)
14
- end
15
-
16
- it "should invoke a callback after request is made" do
17
- WebMock.after_request {
18
- @called = true
19
- }
20
- http_request(:get, "http://www.example.com/")
21
- expect(@called).to eq(true)
22
- end
23
-
24
- it "should not invoke a callback if this http library should be ignored" do
25
- WebMock.after_request(except: [http_library()]) {
26
- @called = true
27
- }
28
- http_request(:get, "http://www.example.com/")
29
- expect(@called).to eq(nil)
30
- end
31
-
32
- it "should invoke a callback even if other http libraries should be ignored" do
33
- WebMock.after_request(except: [:other_lib]) {
34
- @called = true
35
- }
36
- http_request(:get, "http://www.example.com/")
37
- expect(@called).to eq(true)
38
- end
39
-
40
- it "should pass request signature to the callback" do
41
- WebMock.after_request(except: [:other_lib]) do |request_signature, _|
42
- @request_signature = request_signature
43
- end
44
- http_request(:get, "http://www.example.com/")
45
- expect(@request_signature.uri.to_s).to eq("http://www.example.com:80/")
46
- end
47
-
48
- after(:each) do
49
- WebMock::StubRegistry.instance.global_stubs.clear
50
- end
51
-
52
- it 'passes the same request signature instance to the callback that was passed to the global stub callback' do
53
- global_stub_request_sig = after_request_request_sig = nil
54
- WebMock.globally_stub_request do |request_sig|
55
- global_stub_request_sig = request_sig
56
- nil
57
- end
58
-
59
- WebMock.after_request do |request_sig, _|
60
- after_request_request_sig = request_sig
61
- end
62
-
63
- http_request(:get, "http://www.example.com/")
64
- expect(global_stub_request_sig).to be(after_request_request_sig)
65
- end
66
-
67
- context "passing response to callback" do
68
- context "when request is stubbed" do
69
- before(:each) do
70
- stub_request(:get, "http://www.example.com").
71
- to_return(
72
- status: [200, "hello"],
73
- headers: {'Content-Length' => '666', 'Hello' => 'World'},
74
- body: "foo bar"
75
- )
76
- WebMock.after_request(except: [:other_lib]) do |_, response|
77
- @response = response
78
- end
79
- http_request(:get, "http://www.example.com/")
80
- end
81
-
82
- it "should pass response to callback with the status and message" do
83
- expect(@response.status).to eq([200, "hello"])
84
- end
85
-
86
- it "should pass response to callback with headers" do
87
- expect(@response.headers).to eq({
88
- 'Content-Length' => '666',
89
- 'Hello' => 'World'
90
- })
91
- end
92
-
93
- it "should pass response to callback with body" do
94
- expect(@response.body).to eq("foo bar")
95
- end
96
- end
97
-
98
- describe "when request is not stubbed", net_connect: true do
99
- before(:each) do
100
- WebMock.reset!
101
- WebMock.allow_net_connect!
102
- WebMock.after_request(except: [:other_lib]) do |_, response|
103
- @response = response
104
- end
105
- http_request(:get, "http://httpstat.us/201")
106
- end
107
-
108
- it "should pass real response to callback with status and message" do
109
- expect(@response.status[0]).to eq(201)
110
- expect(@response.status[1]).to eq("Created") unless adapter_info.include?(:no_status_message)
111
- end
112
-
113
- it "should pass real response to callback with headers" do
114
- expect(@response.headers["Content-Length"]).to eq("11")
115
- end
116
-
117
- it "should pass response to callback with body" do
118
- expect(@response.body.size).to eq(11)
119
- end
120
- end
121
- end
122
-
123
- it "should invoke multiple callbacks in order of their declarations" do
124
- WebMock.after_request { @called = 1 }
125
- WebMock.after_request { @called += 1 }
126
- http_request(:get, "http://www.example.com/")
127
- expect(@called).to eq(2)
128
- end
129
-
130
- it "should invoke callbacks only for real requests if requested", net_connect: true do
131
- WebMock.after_request(real_requests_only: true) { @called = true }
132
- http_request(:get, "http://www.example.com/")
133
- expect(@called).to eq(nil)
134
- WebMock.allow_net_connect!
135
- http_request(:get, "http://www.example.net/")
136
- expect(@called).to eq(true)
137
- end
138
-
139
- it "should not invoke any callbacks after callbacks were reset" do
140
- WebMock.after_request { @called = 1 }
141
- WebMock.reset_callbacks
142
- stub_request(:get, "http://www.example.com/")
143
- http_request(:get, "http://www.example.com/")
144
- expect(@called).to eq(nil)
145
- end
146
- end
147
- end
@@ -1,36 +0,0 @@
1
- shared_context "complex cross-concern behaviors" do |*adapter_info|
2
- it 'allows a response with multiple values for the same header to be recorded and played back exactly as-is' do
3
- WebMock.allow_net_connect!
4
-
5
- recorded_response = nil
6
- WebMock.after_request { |_,r| recorded_response = r }
7
- real_response = http_request(:get, webmock_server_url)
8
-
9
- stub_request(:get, webmock_server_url).to_return(
10
- status: recorded_response.status,
11
- body: recorded_response.body,
12
- headers: recorded_response.headers
13
- )
14
-
15
- played_back_response = http_request(:get, webmock_server_url)
16
-
17
- expect(played_back_response.headers.keys).to include('Set-Cookie')
18
- expect(played_back_response).to eq(real_response)
19
- end
20
-
21
- let(:no_content_url) { 'http://httpstat.us/204' }
22
- [nil, ''].each do |stub_val|
23
- it "returns the same value (nil or "") for a request stubbed as #{stub_val.inspect} that a real empty response has", net_connect: true do
24
- unless http_library == :curb
25
- WebMock.allow_net_connect!
26
-
27
- real_response = http_request(:get, no_content_url)
28
- stub_request(:get, no_content_url).to_return(status: 204, body: stub_val)
29
- stubbed_response = http_request(:get, no_content_url)
30
-
31
- expect(stubbed_response.body).to eq(real_response.body)
32
- end
33
- end
34
- end
35
- end
36
-
@@ -1,95 +0,0 @@
1
- shared_context "enabled and disabled webmock" do |*adapter_info|
2
- describe "when webmock is disabled" do
3
- before(:each) do
4
- WebMock.disable!
5
- end
6
- after(:each) do
7
- WebMock.enable!
8
- end
9
- include_context "disabled WebMock"
10
- end
11
-
12
- describe "when webmock is enabled again" do
13
- before(:each) do
14
- WebMock.disable!
15
- WebMock.enable!
16
- end
17
- include_context "enabled WebMock"
18
- end
19
-
20
- describe "when webmock is disabled except this lib" do
21
- before(:each) do
22
- WebMock.disable!(except: [http_library])
23
- end
24
- after(:each) do
25
- WebMock.enable!
26
- end
27
- include_context "enabled WebMock"
28
- end
29
-
30
- describe "when webmock is enabled except this lib" do
31
- before(:each) do
32
- WebMock.disable!
33
- WebMock.enable!(except: [http_library])
34
- end
35
- after(:each) do
36
- WebMock.enable!
37
- end
38
- include_context "disabled WebMock"
39
- end
40
- end
41
-
42
- shared_context "disabled WebMock" do
43
- it "should not register executed requests" do
44
- http_request(:get, webmock_server_url)
45
- expect(a_request(:get, webmock_server_url)).not_to have_been_made
46
- end
47
-
48
- it "should not block unstubbed requests" do
49
- expect {
50
- http_request(:get, webmock_server_url)
51
- }.not_to raise_error
52
- end
53
-
54
- it "should return real response even if there are stubs" do
55
- stub_request(:get, /.*/).to_return(body: "x")
56
- expect(http_request(:get, webmock_server_url).body).to eq("hello world")
57
- end
58
-
59
- it "should not invoke any callbacks" do
60
- WebMock.reset_callbacks
61
- stub_request(:get, webmock_server_url)
62
- @called = nil
63
- WebMock.after_request { @called = 1 }
64
- http_request(:get, webmock_server_url)
65
- expect(@called).to eq(nil)
66
- end
67
- end
68
-
69
- shared_context "enabled WebMock" do
70
- it "should register executed requests" do
71
- WebMock.allow_net_connect!
72
- http_request(:get, webmock_server_url)
73
- expect(a_request(:get, webmock_server_url)).to have_been_made
74
- end
75
-
76
- it "should block unstubbed requests" do
77
- expect {
78
- http_request(:get, "http://www.example.com/")
79
- }.to raise_error(WebMock::NetConnectNotAllowedError)
80
- end
81
-
82
- it "should return stubbed response" do
83
- stub_request(:get, /.*/).to_return(body: "x")
84
- expect(http_request(:get, "http://www.example.com/").body).to eq("x")
85
- end
86
-
87
- it "should invoke callbacks" do
88
- WebMock.allow_net_connect!
89
- WebMock.reset_callbacks
90
- @called = nil
91
- WebMock.after_request { @called = 1 }
92
- http_request(:get, webmock_server_url)
93
- expect(@called).to eq(1)
94
- end
95
- end
@@ -1,15 +0,0 @@
1
- shared_context "precedence of stubs" do |*adapter_info|
2
- describe "when choosing a matching request stub" do
3
- it "should use the last declared matching request stub" do
4
- stub_request(:get, "www.example.com").to_return(body: "abc")
5
- stub_request(:get, "www.example.com").to_return(body: "def")
6
- expect(http_request(:get, "http://www.example.com/").body).to eq("def")
7
- end
8
-
9
- it "should not be affected by the type of uri or request method" do
10
- stub_request(:get, "www.example.com").to_return(body: "abc")
11
- stub_request(:any, /.*example.*/).to_return(body: "def")
12
- expect(http_request(:get, "http://www.example.com/").body).to eq("def")
13
- end
14
- end
15
- end