webmock 2.0.3 → 2.1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile +2 -7
- data/README.md +54 -53
- data/Rakefile +1 -1
- data/lib/webmock/callback_registry.rb +1 -1
- data/lib/webmock/http_lib_adapters/curb_adapter.rb +68 -6
- data/lib/webmock/http_lib_adapters/em_http_request_adapter.rb +4 -4
- data/lib/webmock/http_lib_adapters/excon_adapter.rb +9 -9
- data/lib/webmock/http_lib_adapters/http_rb/request.rb +2 -2
- data/lib/webmock/http_lib_adapters/http_rb/response.rb +5 -5
- data/lib/webmock/http_lib_adapters/http_rb/webmock.rb +3 -3
- data/lib/webmock/http_lib_adapters/httpclient_adapter.rb +5 -5
- data/lib/webmock/http_lib_adapters/manticore_adapter.rb +7 -7
- data/lib/webmock/http_lib_adapters/net_http.rb +3 -3
- data/lib/webmock/http_lib_adapters/patron_adapter.rb +4 -4
- data/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb +14 -14
- data/lib/webmock/matchers/hash_including_matcher.rb +1 -1
- data/lib/webmock/rack_response.rb +3 -3
- data/lib/webmock/request_pattern.rb +8 -8
- data/lib/webmock/request_stub.rb +5 -5
- data/lib/webmock/util/uri.rb +2 -2
- data/lib/webmock/version.rb +1 -1
- data/minitest/webmock_spec.rb +3 -3
- data/spec/acceptance/curb/curb_spec.rb +64 -47
- data/spec/acceptance/curb/curb_spec_helper.rb +4 -4
- data/spec/acceptance/em_http_request/em_http_request_spec.rb +32 -32
- data/spec/acceptance/em_http_request/em_http_request_spec_helper.rb +9 -9
- data/spec/acceptance/excon/excon_spec.rb +14 -14
- data/spec/acceptance/excon/excon_spec_helper.rb +6 -6
- data/spec/acceptance/http_rb/http_rb_spec.rb +1 -1
- data/spec/acceptance/http_rb/http_rb_spec_helper.rb +7 -7
- data/spec/acceptance/httpclient/httpclient_spec.rb +20 -20
- data/spec/acceptance/httpclient/httpclient_spec_helper.rb +5 -5
- data/spec/acceptance/manticore/manticore_spec.rb +11 -11
- data/spec/acceptance/manticore/manticore_spec_helper.rb +3 -3
- data/spec/acceptance/net_http/net_http_shared.rb +4 -4
- data/spec/acceptance/net_http/net_http_spec.rb +25 -25
- data/spec/acceptance/net_http/net_http_spec_helper.rb +4 -4
- data/spec/acceptance/net_http/real_net_http_spec.rb +1 -1
- data/spec/acceptance/patron/patron_spec.rb +10 -10
- data/spec/acceptance/patron/patron_spec_helper.rb +5 -5
- data/spec/acceptance/shared/allowing_and_disabling_net_connect.rb +36 -36
- data/spec/acceptance/shared/callbacks.rb +11 -11
- data/spec/acceptance/shared/complex_cross_concern_behaviors.rb +5 -5
- data/spec/acceptance/shared/enabling_and_disabling_webmock.rb +4 -4
- data/spec/acceptance/shared/precedence_of_stubs.rb +4 -4
- data/spec/acceptance/shared/request_expectations.rb +90 -90
- data/spec/acceptance/shared/returning_declared_responses.rb +49 -49
- data/spec/acceptance/shared/stubbing_requests.rb +78 -78
- data/spec/acceptance/typhoeus/typhoeus_hydra_spec.rb +11 -11
- data/spec/acceptance/typhoeus/typhoeus_hydra_spec_helper.rb +8 -8
- data/spec/spec_helper.rb +6 -3
- data/spec/support/webmock_server.rb +1 -1
- data/spec/unit/api_spec.rb +2 -2
- data/spec/unit/errors_spec.rb +3 -3
- data/spec/unit/matchers/hash_including_matcher_spec.rb +16 -16
- data/spec/unit/rack_response_spec.rb +2 -2
- data/spec/unit/request_body_diff_spec.rb +1 -1
- data/spec/unit/request_execution_verifier_spec.rb +1 -1
- data/spec/unit/request_pattern_spec.rb +115 -115
- data/spec/unit/request_signature_snippet_spec.rb +2 -2
- data/spec/unit/request_signature_spec.rb +16 -16
- data/spec/unit/request_stub_spec.rb +20 -20
- data/spec/unit/response_spec.rb +28 -28
- data/spec/unit/stub_registry_spec.rb +10 -10
- data/spec/unit/stub_request_snippet_spec.rb +6 -6
- data/spec/unit/util/hash_keys_stringifier_spec.rb +4 -4
- data/spec/unit/util/query_mapper_spec.rb +2 -2
- data/spec/unit/util/uri_spec.rb +1 -1
- data/test/http_request.rb +3 -3
- data/test/shared_test.rb +6 -6
- data/webmock.gemspec +4 -2
- metadata +32 -4
@@ -37,10 +37,10 @@ module NetHTTPSpecHelper
|
|
37
37
|
headers = {}
|
38
38
|
response.each_header {|name, value| headers[name] = value}
|
39
39
|
OpenStruct.new({
|
40
|
-
:
|
41
|
-
:
|
42
|
-
:
|
43
|
-
:
|
40
|
+
body: response.body,
|
41
|
+
headers: WebMock::Util::Headers.normalize_headers(headers),
|
42
|
+
status: response.code,
|
43
|
+
message: response.message
|
44
44
|
})
|
45
45
|
end
|
46
46
|
|
@@ -6,7 +6,7 @@ require 'stringio'
|
|
6
6
|
require 'acceptance/net_http/net_http_shared'
|
7
7
|
require 'support/webmock_server'
|
8
8
|
|
9
|
-
describe "Real Net:HTTP without webmock", :
|
9
|
+
describe "Real Net:HTTP without webmock", without_webmock: true do
|
10
10
|
before(:all) do
|
11
11
|
raise "WebMock has no access here!!!" if defined?(WebMock::NetHTTPUtility)
|
12
12
|
WebMockServer.instance.start
|
@@ -32,7 +32,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should work with get_file" do
|
35
|
-
stub_request(:get, "www.example.com").to_return(:
|
35
|
+
stub_request(:get, "www.example.com").to_return(body: "abc")
|
36
36
|
@sess.get_file("/", @file_path)
|
37
37
|
expect(File.read(@file_path)).to eq("abc")
|
38
38
|
end
|
@@ -53,18 +53,18 @@ unless RUBY_PLATFORM =~ /java/
|
|
53
53
|
|
54
54
|
it "should work with put_file" do
|
55
55
|
File.open(@file_path, "w") {|f| f.write "abc"}
|
56
|
-
stub_request(:put, "www.example.com").with(:
|
56
|
+
stub_request(:put, "www.example.com").with(body: "abc")
|
57
57
|
@sess.put_file("/", @file_path)
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should work with post_file" do
|
61
61
|
File.open(@file_path, "w") {|f| f.write "abc"}
|
62
|
-
stub_request(:post, "www.example.com").with(:
|
62
|
+
stub_request(:post, "www.example.com").with(body: "abc")
|
63
63
|
@sess.post_file("/", @file_path)
|
64
64
|
end
|
65
65
|
|
66
66
|
it "should raise same error as Patron if file is not readable for post request" do
|
67
|
-
stub_request(:post, "www.example.com").with(:
|
67
|
+
stub_request(:post, "www.example.com").with(body: "abc")
|
68
68
|
expect {
|
69
69
|
@sess.post_file("/", "/path/to/non/existing/file")
|
70
70
|
}.to raise_error(ArgumentError, "Unable to open specified file.")
|
@@ -82,7 +82,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
82
82
|
end
|
83
83
|
|
84
84
|
it "should work with WebDAV copy request" do
|
85
|
-
stub_request(:copy, "www.example.com/abc").with(:
|
85
|
+
stub_request(:copy, "www.example.com/abc").with(headers: {'Destination' => "/def"})
|
86
86
|
@sess.copy("/abc", "/def")
|
87
87
|
end
|
88
88
|
|
@@ -97,22 +97,22 @@ unless RUBY_PLATFORM =~ /java/
|
|
97
97
|
|
98
98
|
it "should encode body with default encoding" do
|
99
99
|
stub_request(:get, "www.example.com").
|
100
|
-
to_return(:
|
100
|
+
to_return(body: "Øl")
|
101
101
|
|
102
102
|
expect(@sess.get("").body.encoding).to eq(Encoding::UTF_8)
|
103
103
|
end
|
104
104
|
|
105
105
|
it "should encode body to default internal" do
|
106
106
|
stub_request(:get, "www.example.com").
|
107
|
-
to_return(:
|
108
|
-
:
|
107
|
+
to_return(headers: {'Content-Type' => 'text/html; charset=iso-8859-1'},
|
108
|
+
body: "Øl".encode("iso-8859-1"))
|
109
109
|
|
110
110
|
expect(@sess.get("").body.encoding).to eq(Encoding.default_internal)
|
111
111
|
end
|
112
112
|
|
113
113
|
it "should encode body based on encoding-attribute in body" do
|
114
114
|
stub_request(:get, "www.example.com").
|
115
|
-
to_return(:
|
115
|
+
to_return(body: "<?xml encoding=\"iso-8859-1\">Øl</xml>".encode("iso-8859-1"))
|
116
116
|
|
117
117
|
expect(@sess.get("").body.encoding).to eq(Encoding::ISO_8859_1)
|
118
118
|
end
|
@@ -120,7 +120,7 @@ unless RUBY_PLATFORM =~ /java/
|
|
120
120
|
|
121
121
|
it "should encode body based on Session#default_response_charset" do
|
122
122
|
stub_request(:get, "www.example.com").
|
123
|
-
to_return(:
|
123
|
+
to_return(body: "Øl".encode("iso-8859-1"))
|
124
124
|
|
125
125
|
@sess.default_response_charset = "iso-8859-1"
|
126
126
|
|
@@ -18,7 +18,7 @@ module PatronSpecHelper
|
|
18
18
|
uri = "#{uri.path}#{uri.query ? '?' : ''}#{uri.query}"
|
19
19
|
uri.gsub!(' ','%20')
|
20
20
|
response = sess.request(method, uri, options[:headers] || {}, {
|
21
|
-
:
|
21
|
+
data: options[:body]
|
22
22
|
})
|
23
23
|
headers = {}
|
24
24
|
if response.headers
|
@@ -32,10 +32,10 @@ module PatronSpecHelper
|
|
32
32
|
message = response.status_line.match(status_line_pattern)[3] || ""
|
33
33
|
|
34
34
|
OpenStruct.new({
|
35
|
-
:
|
36
|
-
:
|
37
|
-
:
|
38
|
-
:
|
35
|
+
body: response.body,
|
36
|
+
headers: WebMock::Util::Headers.normalize_headers(headers),
|
37
|
+
status: response.status.to_s,
|
38
|
+
message: message
|
39
39
|
})
|
40
40
|
end
|
41
41
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
shared_context "allowing and disabling net connect" do |*adapter_info|
|
2
2
|
describe "when net connect" do
|
3
|
-
describe "is allowed", :
|
3
|
+
describe "is allowed", net_connect: true do
|
4
4
|
before(:each) do
|
5
5
|
WebMock.allow_net_connect!
|
6
6
|
end
|
@@ -16,9 +16,9 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
16
16
|
result = result.encode(
|
17
17
|
'UTF-8',
|
18
18
|
'binary',
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
19
|
+
invalid: :replace,
|
20
|
+
undef: :replace,
|
21
|
+
replace: ''
|
22
22
|
)
|
23
23
|
end
|
24
24
|
expect(result).to match(/.*google.*/)
|
@@ -26,7 +26,7 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should return stubbed response if request was stubbed" do
|
29
|
-
stub_request(:get, "www.example.com").to_return(:
|
29
|
+
stub_request(:get, "www.example.com").to_return(body: "abc")
|
30
30
|
expect(http_request(:get, "http://www.example.com/").body).to eq("abc")
|
31
31
|
end
|
32
32
|
end
|
@@ -37,12 +37,12 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
37
37
|
end
|
38
38
|
|
39
39
|
it "should return stubbed response if request was stubbed" do
|
40
|
-
stub_request(:get, "www.example.com").to_return(:
|
40
|
+
stub_request(:get, "www.example.com").to_return(body: "abc")
|
41
41
|
expect(http_request(:get, "http://www.example.com/").body).to eq("abc")
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should return stubbed response if request with path was stubbed" do
|
45
|
-
stub_request(:get, "www.example.com/hello_world").to_return(:
|
45
|
+
stub_request(:get, "www.example.com/hello_world").to_return(body: "abc")
|
46
46
|
expect(http_request(:get, "http://www.example.com/hello_world").body).to eq("abc")
|
47
47
|
end
|
48
48
|
|
@@ -55,11 +55,11 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
55
55
|
|
56
56
|
describe "is not allowed with exception for localhost" do
|
57
57
|
before(:each) do
|
58
|
-
WebMock.disable_net_connect!(:
|
58
|
+
WebMock.disable_net_connect!(allow_localhost: true)
|
59
59
|
end
|
60
60
|
|
61
61
|
it "should return stubbed response if request was stubbed" do
|
62
|
-
stub_request(:get, "www.example.com").to_return(:
|
62
|
+
stub_request(:get, "www.example.com").to_return(body: "abc")
|
63
63
|
expect(http_request(:get, "http://www.example.com/").body).to eq("abc")
|
64
64
|
end
|
65
65
|
|
@@ -91,12 +91,12 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
91
91
|
describe "is not allowed, with exceptions" do
|
92
92
|
describe "allowing by host string" do
|
93
93
|
before :each do
|
94
|
-
WebMock.disable_net_connect!(:
|
94
|
+
WebMock.disable_net_connect!(allow: 'httpstat.us')
|
95
95
|
end
|
96
96
|
|
97
97
|
context "when the host is not allowed" do
|
98
98
|
it "should return stubbed response if request was stubbed" do
|
99
|
-
stub_request(:get, 'disallowed.example.com/foo').to_return(:
|
99
|
+
stub_request(:get, 'disallowed.example.com/foo').to_return(body: "abc")
|
100
100
|
expect(http_request(:get, 'http://disallowed.example.com/foo').body).to eq("abc")
|
101
101
|
end
|
102
102
|
|
@@ -109,12 +109,12 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
109
109
|
|
110
110
|
context "when the host is allowed" do
|
111
111
|
it "should return stubbed response if request was stubbed" do
|
112
|
-
stub_request(:get, 'httpstat.us/200').to_return(:
|
112
|
+
stub_request(:get, 'httpstat.us/200').to_return(body: "abc")
|
113
113
|
expect(http_request(:get, "http://httpstat.us/200").body).to eq("abc")
|
114
114
|
end
|
115
115
|
|
116
116
|
# WARNING: this makes a real HTTP request!
|
117
|
-
it "should make a real request to allowed host", :
|
117
|
+
it "should make a real request to allowed host", net_connect: true do
|
118
118
|
expect(http_request(:get, "http://httpstat.us/200").status).to eq('200')
|
119
119
|
end
|
120
120
|
end
|
@@ -129,13 +129,13 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
129
129
|
let(:disallowed_host_with_port) { replace_with_different_port(allowed_host_with_port) }
|
130
130
|
|
131
131
|
before :each do
|
132
|
-
WebMock.disable_net_connect!(:
|
132
|
+
WebMock.disable_net_connect!(allow: allowed_host_with_port)
|
133
133
|
end
|
134
134
|
|
135
135
|
context "when the host is not allowed" do
|
136
136
|
it "should return stubbed response if request was stubbed" do
|
137
137
|
request_url = "http://#{disallowed_host_with_port}/foo"
|
138
|
-
stub_request(:get, request_url).to_return(:
|
138
|
+
stub_request(:get, request_url).to_return(body: "abc")
|
139
139
|
expect(http_request(:get, request_url).body).to eq("abc")
|
140
140
|
end
|
141
141
|
|
@@ -150,11 +150,11 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
150
150
|
context "when the host is allowed" do
|
151
151
|
it "should return stubbed response if request was stubbed" do
|
152
152
|
request_url = "http://#{allowed_host_with_port}/foo"
|
153
|
-
stub_request(:get, request_url).to_return(:
|
153
|
+
stub_request(:get, request_url).to_return(body: "abc")
|
154
154
|
expect(http_request(:get, request_url).body).to eq('abc')
|
155
155
|
end
|
156
156
|
|
157
|
-
it "should make a real request to allowed host", :
|
157
|
+
it "should make a real request to allowed host", net_connect: true do
|
158
158
|
request_url = "http://#{allowed_host_with_port}/foo"
|
159
159
|
expect(http_request(:get, request_url).status).to eq('200')
|
160
160
|
end
|
@@ -163,12 +163,12 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
163
163
|
|
164
164
|
describe "allowing by scheme:host string" do
|
165
165
|
before :each do
|
166
|
-
WebMock.disable_net_connect!(:
|
166
|
+
WebMock.disable_net_connect!(allow: 'https://www.google.pl')
|
167
167
|
end
|
168
168
|
|
169
169
|
context "when the host and scheme is not allowed" do
|
170
170
|
it "should return stubbed response if request was stubbed" do
|
171
|
-
stub_request(:get, 'https://disallowed.example.com/foo').to_return(:
|
171
|
+
stub_request(:get, 'https://disallowed.example.com/foo').to_return(body: "abc")
|
172
172
|
expect(http_request(:get, 'https://disallowed.example.com/foo').body).to eq("abc")
|
173
173
|
end
|
174
174
|
|
@@ -193,16 +193,16 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
193
193
|
|
194
194
|
context "when the host is allowed" do
|
195
195
|
it "should return stubbed response if request was stubbed" do
|
196
|
-
stub_request(:get, 'https://www.google.pl').to_return(:
|
196
|
+
stub_request(:get, 'https://www.google.pl').to_return(body: "abc")
|
197
197
|
expect(http_request(:get, "https://www.google.pl/").body).to eq("abc")
|
198
198
|
end
|
199
199
|
|
200
|
-
it "should make a real request to allowed host with scheme", :
|
200
|
+
it "should make a real request to allowed host with scheme", net_connect: true do
|
201
201
|
method = http_library == :httpclient ? :head : :get #https://github.com/nahi/httpclient/issues/299
|
202
202
|
expect(http_request(method, "https://www.google.pl/").status).to eq('200')
|
203
203
|
end
|
204
204
|
|
205
|
-
it "should make a real request to allowed host with scheme and port", :
|
205
|
+
it "should make a real request to allowed host with scheme and port", net_connect: true do
|
206
206
|
method = http_library == :httpclient ? :head : :get
|
207
207
|
expect(http_request(method, "https://www.google.pl:443/").status).to eq('200')
|
208
208
|
end
|
@@ -211,12 +211,12 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
211
211
|
|
212
212
|
describe "allowing by regular expression" do
|
213
213
|
before :each do
|
214
|
-
WebMock.disable_net_connect!(:
|
214
|
+
WebMock.disable_net_connect!(allow: %r{httpstat})
|
215
215
|
end
|
216
216
|
|
217
217
|
context "when the host is not allowed" do
|
218
218
|
it "should return stubbed response if request was stubbed" do
|
219
|
-
stub_request(:get, 'disallowed.example.com/foo').to_return(:
|
219
|
+
stub_request(:get, 'disallowed.example.com/foo').to_return(body: "abc")
|
220
220
|
expect(http_request(:get, 'http://disallowed.example.com/foo').body).to eq("abc")
|
221
221
|
end
|
222
222
|
|
@@ -229,17 +229,17 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
229
229
|
|
230
230
|
context "when the host is allowed" do
|
231
231
|
it "should return stubbed response if request was stubbed" do
|
232
|
-
stub_request(:get, 'httpstat.us/200').to_return(:
|
232
|
+
stub_request(:get, 'httpstat.us/200').to_return(body: "abc")
|
233
233
|
expect(http_request(:get, "http://httpstat.us/200").body).to eq("abc")
|
234
234
|
end
|
235
235
|
|
236
236
|
# WARNING: this makes a real HTTP request!
|
237
|
-
it "should make a real request to allowed host", :
|
237
|
+
it "should make a real request to allowed host", net_connect: true do
|
238
238
|
expect(http_request(:get, "http://httpstat.us/200").status).to eq('200')
|
239
239
|
end
|
240
240
|
|
241
|
-
it "should make a real request if request is allowed by path regexp and url contains default port", :
|
242
|
-
WebMock.disable_net_connect!(:
|
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
243
|
method = http_library == :httpclient ? :head : :get
|
244
244
|
expect(http_request(method, 'https://www.google.pl:443/webhp').status).to eq('200')
|
245
245
|
end
|
@@ -248,12 +248,12 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
248
248
|
|
249
249
|
describe "allowing by a callable" do
|
250
250
|
before :each do
|
251
|
-
WebMock.disable_net_connect!(:
|
251
|
+
WebMock.disable_net_connect!(allow: lambda{|url| url.to_str.include?('httpstat') })
|
252
252
|
end
|
253
253
|
|
254
254
|
context "when the host is not allowed" do
|
255
255
|
it "should return stubbed response if request was stubbed" do
|
256
|
-
stub_request(:get, 'disallowed.example.com/foo').to_return(:
|
256
|
+
stub_request(:get, 'disallowed.example.com/foo').to_return(body: "abc")
|
257
257
|
expect(http_request(:get, 'http://disallowed.example.com/foo').body).to eq("abc")
|
258
258
|
end
|
259
259
|
|
@@ -266,12 +266,12 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
266
266
|
|
267
267
|
context "when the host is allowed" do
|
268
268
|
it "should return stubbed response if request was stubbed" do
|
269
|
-
stub_request(:get, 'httpstat.us/200').to_return(:
|
269
|
+
stub_request(:get, 'httpstat.us/200').to_return(body: "abc")
|
270
270
|
expect(http_request(:get, "http://httpstat.us/200").body).to eq("abc")
|
271
271
|
end
|
272
272
|
|
273
273
|
# WARNING: this makes a real HTTP request!
|
274
|
-
it "should make a real request to allowed host", :
|
274
|
+
it "should make a real request to allowed host", net_connect: true do
|
275
275
|
expect(http_request(:get, "http://httpstat.us/200").status).to eq('200')
|
276
276
|
end
|
277
277
|
end
|
@@ -279,12 +279,12 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
279
279
|
|
280
280
|
describe "allowing by a list of the above" do
|
281
281
|
before :each do
|
282
|
-
WebMock.disable_net_connect!(:
|
282
|
+
WebMock.disable_net_connect!(allow: [lambda{|_| false }, %r{foobar}, 'httpstat.us'])
|
283
283
|
end
|
284
284
|
|
285
285
|
context "when the host is not allowed" do
|
286
286
|
it "should return stubbed response if request was stubbed" do
|
287
|
-
stub_request(:get, 'disallowed.example.com/foo').to_return(:
|
287
|
+
stub_request(:get, 'disallowed.example.com/foo').to_return(body: "abc")
|
288
288
|
expect(http_request(:get, 'http://disallowed.example.com/foo').body).to eq("abc")
|
289
289
|
end
|
290
290
|
|
@@ -297,12 +297,12 @@ shared_context "allowing and disabling net connect" do |*adapter_info|
|
|
297
297
|
|
298
298
|
context "when the host is allowed" do
|
299
299
|
it "should return stubbed response if request was stubbed" do
|
300
|
-
stub_request(:get, 'httpstat.us/200').to_return(:
|
300
|
+
stub_request(:get, 'httpstat.us/200').to_return(body: "abc")
|
301
301
|
expect(http_request(:get, "http://httpstat.us/200").body).to eq("abc")
|
302
302
|
end
|
303
303
|
|
304
304
|
# WARNING: this makes a real HTTP request!
|
305
|
-
it "should make a real request to allowed host", :
|
305
|
+
it "should make a real request to allowed host", net_connect: true do
|
306
306
|
expect(http_request(:get, "http://httpstat.us/200").status).to eq('200')
|
307
307
|
end
|
308
308
|
end
|
@@ -22,7 +22,7 @@ shared_context "callbacks" do |*adapter_info|
|
|
22
22
|
end
|
23
23
|
|
24
24
|
it "should not invoke a callback if this http library should be ignored" do
|
25
|
-
WebMock.after_request(:
|
25
|
+
WebMock.after_request(except: [http_library()]) {
|
26
26
|
@called = true
|
27
27
|
}
|
28
28
|
http_request(:get, "http://www.example.com/")
|
@@ -30,7 +30,7 @@ shared_context "callbacks" do |*adapter_info|
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should invoke a callback even if other http libraries should be ignored" do
|
33
|
-
WebMock.after_request(:
|
33
|
+
WebMock.after_request(except: [:other_lib]) {
|
34
34
|
@called = true
|
35
35
|
}
|
36
36
|
http_request(:get, "http://www.example.com/")
|
@@ -38,7 +38,7 @@ shared_context "callbacks" do |*adapter_info|
|
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should pass request signature to the callback" do
|
41
|
-
WebMock.after_request(:
|
41
|
+
WebMock.after_request(except: [:other_lib]) do |request_signature, _|
|
42
42
|
@request_signature = request_signature
|
43
43
|
end
|
44
44
|
http_request(:get, "http://www.example.com/")
|
@@ -69,11 +69,11 @@ shared_context "callbacks" do |*adapter_info|
|
|
69
69
|
before(:each) do
|
70
70
|
stub_request(:get, "http://www.example.com").
|
71
71
|
to_return(
|
72
|
-
:
|
73
|
-
:
|
74
|
-
:
|
72
|
+
status: [200, "hello"],
|
73
|
+
headers: {'Content-Length' => '666', 'Hello' => 'World'},
|
74
|
+
body: "foo bar"
|
75
75
|
)
|
76
|
-
WebMock.after_request(:
|
76
|
+
WebMock.after_request(except: [:other_lib]) do |_, response|
|
77
77
|
@response = response
|
78
78
|
end
|
79
79
|
http_request(:get, "http://www.example.com/")
|
@@ -95,11 +95,11 @@ shared_context "callbacks" do |*adapter_info|
|
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
98
|
-
describe "when request is not stubbed", :
|
98
|
+
describe "when request is not stubbed", net_connect: true do
|
99
99
|
before(:each) do
|
100
100
|
WebMock.reset!
|
101
101
|
WebMock.allow_net_connect!
|
102
|
-
WebMock.after_request(:
|
102
|
+
WebMock.after_request(except: [:other_lib]) do |_, response|
|
103
103
|
@response = response
|
104
104
|
end
|
105
105
|
http_request(:get, "http://httpstat.us/201")
|
@@ -127,8 +127,8 @@ shared_context "callbacks" do |*adapter_info|
|
|
127
127
|
expect(@called).to eq(2)
|
128
128
|
end
|
129
129
|
|
130
|
-
it "should invoke callbacks only for real requests if requested", :
|
131
|
-
WebMock.after_request(:
|
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
132
|
http_request(:get, "http://www.example.com/")
|
133
133
|
expect(@called).to eq(nil)
|
134
134
|
WebMock.allow_net_connect!
|
@@ -7,9 +7,9 @@ shared_context "complex cross-concern behaviors" do |*adapter_info|
|
|
7
7
|
real_response = http_request(:get, webmock_server_url)
|
8
8
|
|
9
9
|
stub_request(:get, webmock_server_url).to_return(
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
10
|
+
status: recorded_response.status,
|
11
|
+
body: recorded_response.body,
|
12
|
+
headers: recorded_response.headers
|
13
13
|
)
|
14
14
|
|
15
15
|
played_back_response = http_request(:get, webmock_server_url)
|
@@ -20,12 +20,12 @@ shared_context "complex cross-concern behaviors" do |*adapter_info|
|
|
20
20
|
|
21
21
|
let(:no_content_url) { 'http://httpstat.us/204' }
|
22
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", :
|
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
24
|
unless http_library == :curb
|
25
25
|
WebMock.allow_net_connect!
|
26
26
|
|
27
27
|
real_response = http_request(:get, no_content_url)
|
28
|
-
stub_request(:get, no_content_url).to_return(:
|
28
|
+
stub_request(:get, no_content_url).to_return(status: 204, body: stub_val)
|
29
29
|
stubbed_response = http_request(:get, no_content_url)
|
30
30
|
|
31
31
|
expect(stubbed_response.body).to eq(real_response.body)
|