vcr 1.2.0 → 1.3.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.
- data/CHANGELOG.md +12 -0
- data/FullBuildRakeFile +22 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +46 -25
- data/Guardfile +9 -0
- data/README.md +10 -371
- data/Rakefile +6 -2
- data/TODO.md +4 -0
- data/features/support/env.rb +5 -1
- data/full_build +1 -0
- data/lib/vcr.rb +17 -7
- data/lib/vcr/basic_object.rb +39 -0
- data/lib/vcr/config.rb +4 -7
- data/lib/vcr/deprecations.rb +14 -0
- data/lib/vcr/http_stubbing_adapters/common.rb +44 -13
- data/lib/vcr/http_stubbing_adapters/fakeweb.rb +17 -28
- data/lib/vcr/http_stubbing_adapters/multi_object_proxy.rb +43 -0
- data/lib/vcr/http_stubbing_adapters/typhoeus.rb +101 -0
- data/lib/vcr/http_stubbing_adapters/webmock.rb +16 -37
- data/lib/vcr/internet_connection.rb +2 -1
- data/lib/vcr/structs.rb +32 -0
- data/lib/vcr/version.rb +1 -1
- data/spec/config_spec.rb +5 -25
- data/spec/deprecations_spec.rb +31 -3
- data/spec/extensions/net_http_spec.rb +1 -0
- data/spec/fixtures/1.9.1/fake_example.com_responses.yml +32 -1
- data/spec/fixtures/not_1.9.1/fake_example.com_responses.yml +32 -1
- data/spec/http_stubbing_adapters/fakeweb_spec.rb +9 -24
- data/spec/http_stubbing_adapters/multi_object_proxy_spec.rb +101 -0
- data/spec/http_stubbing_adapters/typhoeus_spec.rb +28 -0
- data/spec/http_stubbing_adapters/webmock_spec.rb +8 -26
- data/spec/internet_connection_spec.rb +25 -7
- data/spec/spec_helper.rb +3 -1
- data/spec/structs_spec.rb +30 -6
- data/spec/support/http_library_adapters.rb +50 -15
- data/spec/support/http_stubbing_adapter.rb +65 -56
- data/spec/support/version_checker.rb +29 -0
- data/spec/vcr_spec.rb +30 -12
- data/vcr.gemspec +5 -4
- metadata +44 -15
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VCR::HttpStubbingAdapters::Typhoeus do
|
4
|
+
without_monkey_patches :vcr
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
::Typhoeus::Hydra.stubs = []
|
8
|
+
::Typhoeus::Hydra.allow_net_connect = true
|
9
|
+
end
|
10
|
+
|
11
|
+
it_behaves_like 'an http stubbing adapter', ['typhoeus'], [:method, :uri, :host, :path, :body, :headers]
|
12
|
+
|
13
|
+
it_performs('version checking',
|
14
|
+
:valid => %w[ 0.2.0 0.2.99 ],
|
15
|
+
:too_low => %w[ 0.1.0 0.1.31 ],
|
16
|
+
:too_high => %w[ 0.3.0 1.0.0 ]
|
17
|
+
) do
|
18
|
+
disable_warnings
|
19
|
+
before(:each) { @orig_version = Typhoeus::VERSION }
|
20
|
+
after(:each) { Typhoeus::VERSION = @orig_version }
|
21
|
+
|
22
|
+
# Cannot be regular method def as that raises a "dynamic constant assignment" error
|
23
|
+
define_method :stub_version do |version|
|
24
|
+
Typhoeus::VERSION = version
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end unless RUBY_PLATFORM == 'java'
|
28
|
+
|
@@ -3,35 +3,17 @@ require 'spec_helper'
|
|
3
3
|
describe VCR::HttpStubbingAdapters::WebMock do
|
4
4
|
without_monkey_patches :vcr
|
5
5
|
|
6
|
-
|
6
|
+
it_behaves_like 'an http stubbing adapter',
|
7
7
|
%w[net/http patron httpclient em-http-request curb],
|
8
8
|
[:method, :uri, :host, :path, :body, :headers]
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
%w
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
expect { described_class.check_version! }.to raise_error(/You are using WebMock #{version}. VCR requires version .* or greater/)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
%w( 1.4.0 1.4.10 1.4.99 ).each do |version|
|
22
|
-
it "does nothing when WebMock's version is #{version}" do
|
23
|
-
WebMock.stub!(:version).and_return(version)
|
24
|
-
described_class.should_not_receive(:warn)
|
25
|
-
expect { described_class.check_version! }.to_not raise_error
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
%w( 1.5.0 1.10.0 2.0.0 ).each do |version|
|
30
|
-
it "does nothing when WebMock's version is #{version}" do
|
31
|
-
WebMock.stub!(:version).and_return(version)
|
32
|
-
described_class.should_receive(:warn).with(/VCR is known to work with WebMock ~> .*\./)
|
33
|
-
expect { described_class.check_version! }.to_not raise_error
|
34
|
-
end
|
10
|
+
it_performs('version checking',
|
11
|
+
:valid => %w[ 1.4.0 1.4.99 1.5.0 1.5.99 ],
|
12
|
+
:too_low => %w[ 0.9.9 0.9.10 0.1.30 1.0.30 1.2.9 1.3.9 ],
|
13
|
+
:too_high => %w[ 1.6.0 1.10.0 2.0.0 ]
|
14
|
+
) do
|
15
|
+
def stub_version(version)
|
16
|
+
WebMock.stub(:version).and_return(version)
|
35
17
|
end
|
36
18
|
end
|
37
19
|
end
|
@@ -3,17 +3,35 @@ require 'spec_helper'
|
|
3
3
|
describe VCR::InternetConnection do
|
4
4
|
describe '.available?' do
|
5
5
|
before(:each) do
|
6
|
-
described_class.
|
6
|
+
described_class.send(:remove_instance_variable, :@available) if described_class.instance_variable_defined?(:@available)
|
7
7
|
end
|
8
8
|
|
9
|
-
|
10
|
-
Ping.stub(:pingecho).with("example.com", anything, anything).and_return(
|
11
|
-
described_class.available?.should be_true
|
9
|
+
def stub_pingecho_with(value)
|
10
|
+
Ping.stub(:pingecho).with("example.com", anything, anything).and_return(value)
|
12
11
|
end
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
context 'when pinging example.com succeeds' do
|
14
|
+
it 'returns true' do
|
15
|
+
stub_pingecho_with(true)
|
16
|
+
described_class.should be_available
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'memoizes the value so no extra pings are made' do
|
20
|
+
Ping.should_receive(:pingecho).once.and_return(true)
|
21
|
+
3.times { described_class.available? }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when pinging example.com fails' do
|
26
|
+
it 'returns false' do
|
27
|
+
stub_pingecho_with(false)
|
28
|
+
described_class.should_not be_available
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'memoizes the value so no extra pings are made' do
|
32
|
+
Ping.should_receive(:pingecho).once.and_return(false)
|
33
|
+
3.times { described_class.available? }
|
34
|
+
end
|
17
35
|
end
|
18
36
|
end
|
19
37
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -25,7 +25,7 @@ RSpec.configure do |config|
|
|
25
25
|
|
26
26
|
config.before(:each) do
|
27
27
|
VCR::Config.default_cassette_options = { :record => :new_episodes }
|
28
|
-
VCR::Config.
|
28
|
+
VCR::Config.stub_with :fakeweb
|
29
29
|
|
30
30
|
WebMock.allow_net_connect!
|
31
31
|
WebMock.reset_webmock
|
@@ -36,5 +36,7 @@ RSpec.configure do |config|
|
|
36
36
|
|
37
37
|
config.filter_run :focus => true
|
38
38
|
config.run_all_when_everything_filtered = true
|
39
|
+
|
40
|
+
config.alias_it_should_behave_like_to :it_performs, 'it performs'
|
39
41
|
end
|
40
42
|
|
data/spec/structs_spec.rb
CHANGED
@@ -32,6 +32,28 @@ describe VCR::Request do
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
describe 'uri normalization' do
|
36
|
+
def request(uri)
|
37
|
+
VCR::Request.new(:get, uri, '', {})
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'adds port 80 to an http URI that lacks a port' do
|
41
|
+
request('http://example.com/foo').uri.should == 'http://example.com:80/foo'
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'keeps the existing port for an http URI' do
|
45
|
+
request('http://example.com:8000/foo').uri.should == 'http://example.com:8000/foo'
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'adds port 443 to an https URI that lacks a port' do
|
49
|
+
request('https://example.com/foo').uri.should == 'https://example.com:443/foo'
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'keeps the existing port for an https URI' do
|
53
|
+
request('https://example.com:8000/foo').uri.should == 'https://example.com:8000/foo'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
35
57
|
describe '.from_net_http_request' do
|
36
58
|
let(:net_http) { YAML.load(File.read(File.dirname(__FILE__) + "/fixtures/#{YAML_SERIALIZATION_VERSION}/example_net_http.yml")) }
|
37
59
|
let(:request) { YAML.load(File.read(File.dirname(__FILE__) + "/fixtures/#{YAML_SERIALIZATION_VERSION}/example_net_http_request.yml")) }
|
@@ -53,10 +75,11 @@ describe VCR::Request do
|
|
53
75
|
end
|
54
76
|
end
|
55
77
|
|
56
|
-
|
57
|
-
|
78
|
+
it_behaves_like 'a header normalizer' do
|
79
|
+
def with_headers(headers)
|
80
|
+
described_class.new(:get, 'http://example.com/', nil, headers)
|
81
|
+
end
|
58
82
|
end
|
59
|
-
it_should_behave_like 'a header normalizer'
|
60
83
|
end
|
61
84
|
|
62
85
|
describe VCR::ResponseStatus do
|
@@ -96,10 +119,11 @@ describe VCR::Response do
|
|
96
119
|
end
|
97
120
|
end
|
98
121
|
|
99
|
-
|
100
|
-
|
122
|
+
it_behaves_like 'a header normalizer' do
|
123
|
+
def with_headers(headers)
|
124
|
+
described_class.new(:status, headers, nil, '1.1')
|
125
|
+
end
|
101
126
|
end
|
102
|
-
it_should_behave_like 'a header normalizer'
|
103
127
|
|
104
128
|
it "ensures the body is serialized to yaml as a raw string" do
|
105
129
|
body = "My String"
|
@@ -96,10 +96,26 @@ HTTP_LIBRARY_ADAPTERS['curb'] = Module.new do
|
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
|
+
HTTP_LIBRARY_ADAPTERS['typhoeus'] = Module.new do
|
100
|
+
def self.http_library_name; "Typhoeus"; end
|
101
|
+
|
102
|
+
def get_body_string(response)
|
103
|
+
response.body
|
104
|
+
end
|
105
|
+
|
106
|
+
def get_header(header_key, response)
|
107
|
+
response.headers_hash[header_key]
|
108
|
+
end
|
109
|
+
|
110
|
+
def make_http_request(method, url, body = nil, headers = {})
|
111
|
+
Typhoeus::Request.send(method, url, :body => body, :headers => headers)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
99
115
|
NET_CONNECT_NOT_ALLOWED_ERROR = /You can use VCR to automatically record this request and replay it later/
|
100
116
|
|
101
117
|
module HttpLibrarySpecs
|
102
|
-
def test_http_library(library, supported_request_match_attributes)
|
118
|
+
def test_http_library(library, supported_request_match_attributes, *other)
|
103
119
|
# curb, patron and em-http-client cannot be installed on jruby
|
104
120
|
return if %w[curb patron em-http-request].include?(library) && RUBY_INTERPRETER != :mri
|
105
121
|
|
@@ -135,7 +151,7 @@ module HttpLibrarySpecs
|
|
135
151
|
end
|
136
152
|
end
|
137
153
|
|
138
|
-
it
|
154
|
+
it "raises an error for a request with a different #{attribute}" do
|
139
155
|
expect { make_http_request(invalid) }.to raise_error(NET_CONNECT_NOT_ALLOWED_ERROR)
|
140
156
|
end
|
141
157
|
else
|
@@ -192,11 +208,12 @@ module HttpLibrarySpecs
|
|
192
208
|
|
193
209
|
it 'records new http requests' do
|
194
210
|
VCR.should_receive(:record_http_interaction) do |interaction|
|
195
|
-
|
211
|
+
interaction.request.uri.should == 'http://example.com:80/foo'
|
196
212
|
interaction.request.method.should == :get
|
197
213
|
interaction.response.status.code.should == 404
|
198
214
|
interaction.response.status.message.should == 'Not Found'
|
199
215
|
interaction.response.body.should =~ /The requested URL \/foo was not found/
|
216
|
+
interaction.response.headers['content-type'].should == ["text/html; charset=iso-8859-1"]
|
200
217
|
end
|
201
218
|
|
202
219
|
make_http_request(:get, 'http://example.com/foo')
|
@@ -214,6 +231,11 @@ module HttpLibrarySpecs
|
|
214
231
|
subject.request_stubbed?(VCR::Request.new(method, url), [:method, :uri]).should == expected
|
215
232
|
end
|
216
233
|
|
234
|
+
it "returns false from #http_connections_allowed? when http_connections_allowed is set to nil" do
|
235
|
+
subject.http_connections_allowed = nil
|
236
|
+
subject.http_connections_allowed?.should == false
|
237
|
+
end
|
238
|
+
|
217
239
|
[true, false].each do |http_allowed|
|
218
240
|
context "when #http_connections_allowed is set to #{http_allowed}" do
|
219
241
|
before(:each) { subject.http_connections_allowed = http_allowed }
|
@@ -257,14 +279,16 @@ module HttpLibrarySpecs
|
|
257
279
|
subject.stub_requests(@recorded_interactions, VCR::RequestMatcher::DEFAULT_MATCH_ATTRIBUTES)
|
258
280
|
end
|
259
281
|
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
282
|
+
if other.include?(:needs_net_http_extension)
|
283
|
+
it 'returns true from #request_stubbed? for the requests that are stubbed' do
|
284
|
+
test_request_stubbed(:post, 'http://example.com', true)
|
285
|
+
test_request_stubbed(:get, 'http://example.com/foo', true)
|
286
|
+
end
|
264
287
|
|
265
|
-
|
266
|
-
|
267
|
-
|
288
|
+
it 'returns false from #request_stubbed? for requests that are not stubbed' do
|
289
|
+
test_request_stubbed(:post, 'http://example.com/foo', false)
|
290
|
+
test_request_stubbed(:get, 'http://google.com', false)
|
291
|
+
end
|
268
292
|
end
|
269
293
|
|
270
294
|
it 'gets the stubbed responses when multiple post requests are made to http://example.com, and does not record them' do
|
@@ -275,7 +299,16 @@ module HttpLibrarySpecs
|
|
275
299
|
|
276
300
|
it 'gets the stubbed responses when requests are made to http://example.com/foo, and does not record them' do
|
277
301
|
VCR.should_receive(:record_http_interaction).never
|
278
|
-
get_body_string(make_http_request(:get, 'http://example.com/foo')).should == 'example.com get response with path=foo'
|
302
|
+
get_body_string(make_http_request(:get, 'http://example.com/foo')).should == 'example.com get response 1 with path=foo'
|
303
|
+
end
|
304
|
+
|
305
|
+
it 'rotates through multiple responses for the same request' do
|
306
|
+
get_body_string(make_http_request(:get, 'http://example.com/foo')).should == 'example.com get response 1 with path=foo'
|
307
|
+
get_body_string(make_http_request(:get, 'http://example.com/foo')).should == 'example.com get response 2 with path=foo'
|
308
|
+
|
309
|
+
# subsequent requests keep getting the last one
|
310
|
+
get_body_string(make_http_request(:get, 'http://example.com/foo')).should == 'example.com get response 2 with path=foo'
|
311
|
+
get_body_string(make_http_request(:get, 'http://example.com/foo')).should == 'example.com get response 2 with path=foo'
|
279
312
|
end
|
280
313
|
|
281
314
|
it "correctly handles stubbing multiple values for the same header" do
|
@@ -287,10 +320,12 @@ module HttpLibrarySpecs
|
|
287
320
|
|
288
321
|
test_real_http_request(http_allowed)
|
289
322
|
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
323
|
+
if other.include?(:needs_net_http_extension)
|
324
|
+
it 'returns false from #request_stubbed?' do
|
325
|
+
test_request_stubbed(:get, 'http://example.com/foo', false)
|
326
|
+
test_request_stubbed(:post, 'http://example.com', false)
|
327
|
+
test_request_stubbed(:get, 'http://google.com', false)
|
328
|
+
end
|
294
329
|
end
|
295
330
|
end
|
296
331
|
end
|
@@ -1,20 +1,22 @@
|
|
1
|
-
shared_examples_for "an http stubbing adapter" do |supported_http_libraries, supported_request_match_attributes|
|
1
|
+
shared_examples_for "an http stubbing adapter" do |supported_http_libraries, supported_request_match_attributes, *other|
|
2
2
|
extend HttpLibrarySpecs
|
3
3
|
before(:each) { VCR.stub!(:http_stubbing_adapter).and_return(subject) }
|
4
4
|
subject { described_class }
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
if other.include?(:needs_net_http_extension)
|
7
|
+
describe '#request_uri' do
|
8
|
+
it 'returns the uri for the given http request' do
|
9
|
+
net_http = Net::HTTP.new('example.com', 80)
|
10
|
+
request = Net::HTTP::Get.new('/foo/bar')
|
11
|
+
subject.request_uri(net_http, request).should == 'http://example.com:80/foo/bar'
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
it 'handles basic auth' do
|
15
|
+
net_http = Net::HTTP.new('example.com',80)
|
16
|
+
request = Net::HTTP::Get.new('/auth.txt')
|
17
|
+
request.basic_auth 'user', 'pass'
|
18
|
+
subject.request_uri(net_http, request).should == 'http://user:pass@example.com:80/auth.txt'
|
19
|
+
end
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
@@ -25,76 +27,83 @@ shared_examples_for "an http stubbing adapter" do |supported_http_libraries, sup
|
|
25
27
|
subject.ignore_localhost?.should == val
|
26
28
|
end
|
27
29
|
end
|
30
|
+
|
31
|
+
it "returns false when ignore_localhost is set to nil" do
|
32
|
+
subject.ignore_localhost = nil
|
33
|
+
subject.ignore_localhost?.should == false
|
34
|
+
end
|
28
35
|
end
|
29
36
|
|
30
|
-
|
31
|
-
|
37
|
+
if other.include?(:needs_net_http_extension)
|
38
|
+
describe '#request_stubbed? using specific match_attributes' do
|
39
|
+
let(:interactions) { YAML.load(File.read(File.join(File.dirname(__FILE__), '..', 'fixtures', YAML_SERIALIZATION_VERSION, 'match_requests_on.yml'))) }
|
32
40
|
|
33
|
-
|
34
|
-
|
35
|
-
|
41
|
+
@supported_request_match_attributes = supported_request_match_attributes
|
42
|
+
def self.matching_on(attribute, valid1, valid2, invalid, &block)
|
43
|
+
supported_request_match_attributes = @supported_request_match_attributes
|
36
44
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
45
|
+
describe ":#{attribute}" do
|
46
|
+
if supported_request_match_attributes.include?(attribute)
|
47
|
+
before(:each) { subject.stub_requests(interactions, [attribute]) }
|
48
|
+
module_eval(&block)
|
41
49
|
|
42
|
-
|
43
|
-
|
44
|
-
|
50
|
+
[valid1, valid2].each do |val|
|
51
|
+
it "returns true for a #{val.inspect} request" do
|
52
|
+
subject.request_stubbed?(request(val), [attribute]).should == true
|
53
|
+
end
|
45
54
|
end
|
46
|
-
end
|
47
55
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
56
|
+
it "returns false for another #{attribute}" do
|
57
|
+
subject.request_stubbed?(request(invalid), [attribute]).should == false
|
58
|
+
end
|
59
|
+
else
|
60
|
+
it 'raises an error indicating matching requests on this attribute is not supported' do
|
61
|
+
expect { subject.request_stubbed?(VCR::Request.new, [attribute]) }.to raise_error(/does not support matching requests on #{attribute}/)
|
62
|
+
end
|
54
63
|
end
|
55
64
|
end
|
56
65
|
end
|
57
|
-
end
|
58
66
|
|
59
|
-
|
60
|
-
|
61
|
-
|
67
|
+
matching_on :method, :get, :post, :put do
|
68
|
+
def request(http_method)
|
69
|
+
VCR::Request.new(http_method, 'http://some-wrong-domain.com/', nil, {})
|
70
|
+
end
|
62
71
|
end
|
63
|
-
end
|
64
72
|
|
65
|
-
|
66
|
-
|
67
|
-
|
73
|
+
matching_on :host, 'example1.com', 'example2.com', 'example3.com' do
|
74
|
+
def request(host)
|
75
|
+
VCR::Request.new(:get, "http://#{host}/some/wrong/path", nil, {})
|
76
|
+
end
|
68
77
|
end
|
69
|
-
end
|
70
78
|
|
71
|
-
|
72
|
-
|
73
|
-
|
79
|
+
matching_on :uri, 'http://example.com/uri1', 'http://example.com/uri2', 'http://example.com/uri3' do
|
80
|
+
def request(uri)
|
81
|
+
VCR::Request.new(:get, uri, nil, {})
|
82
|
+
end
|
74
83
|
end
|
75
|
-
end
|
76
84
|
|
77
|
-
|
78
|
-
|
79
|
-
|
85
|
+
matching_on :path, '/path1', '/path2', '/path3' do
|
86
|
+
def request(path)
|
87
|
+
VCR::Request.new(:get, "http://example.com#{path}", nil, {})
|
88
|
+
end
|
80
89
|
end
|
81
|
-
end
|
82
90
|
|
83
|
-
|
84
|
-
|
85
|
-
|
91
|
+
matching_on :body, 'param=val1', 'param=val2', 'param=val3' do
|
92
|
+
def request(body)
|
93
|
+
VCR::Request.new(:put, "http://wrong-domain.com/wrong/path", body, {})
|
94
|
+
end
|
86
95
|
end
|
87
|
-
end
|
88
96
|
|
89
|
-
|
90
|
-
|
91
|
-
|
97
|
+
matching_on :headers, { 'X-HTTP-HEADER1' => 'val1' }, { 'X-HTTP-HEADER1' => 'val2' }, { 'X-HTTP-HEADER1' => 'val3' } do
|
98
|
+
def request(headers)
|
99
|
+
VCR::Request.new(:get, "http://wrong-domain.com/wrong/path", nil, headers)
|
100
|
+
end
|
92
101
|
end
|
93
102
|
end
|
94
103
|
end
|
95
104
|
|
96
105
|
supported_http_libraries.each do |library|
|
97
|
-
test_http_library library, supported_request_match_attributes
|
106
|
+
test_http_library library, supported_request_match_attributes, *other
|
98
107
|
end
|
99
108
|
end
|
100
109
|
|