vcr 1.5.1 → 1.6.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 +11 -1
- data/Gemfile +1 -1
- data/Gemfile.lock +4 -3
- data/benchmarks/http_stubbing_libraries.rb +4 -4
- data/features/.nav +1 -0
- data/features/configuration/ignore_hosts.feature +61 -0
- data/features/http_libraries/net_http.feature +34 -0
- data/features/step_definitions/cli_steps.rb +16 -1
- data/lib/vcr.rb +23 -14
- data/lib/vcr/cassette.rb +2 -4
- data/lib/vcr/config.rb +20 -5
- data/lib/vcr/deprecations.rb +27 -14
- data/lib/vcr/http_stubbing_adapters/fakeweb.rb +14 -9
- data/lib/vcr/http_stubbing_adapters/faraday.rb +12 -3
- data/lib/vcr/http_stubbing_adapters/typhoeus.rb +3 -7
- data/lib/vcr/http_stubbing_adapters/webmock.rb +17 -7
- data/lib/vcr/middleware/faraday.rb +1 -1
- data/lib/vcr/request_matcher.rb +12 -8
- data/lib/vcr/structs/http_interaction.rb +16 -0
- data/lib/vcr/structs/normalizers/body.rb +24 -0
- data/lib/vcr/structs/normalizers/header.rb +56 -0
- data/lib/vcr/structs/normalizers/status_message.rb +17 -0
- data/lib/vcr/structs/normalizers/uri.rb +34 -0
- data/lib/vcr/structs/request.rb +20 -0
- data/lib/vcr/structs/response.rb +16 -0
- data/lib/vcr/structs/response_status.rb +9 -0
- data/lib/vcr/util/regexes.rb +37 -0
- data/lib/vcr/version.rb +16 -5
- data/spec/spec_helper.rb +26 -3
- data/spec/support/http_library_adapters.rb +11 -12
- data/spec/support/http_stubbing_adapter.rb +2 -16
- data/spec/support/normalizers.rb +84 -0
- data/spec/support/version_checker.rb +1 -1
- data/spec/vcr/cassette_spec.rb +8 -10
- data/spec/vcr/config_spec.rb +63 -17
- data/spec/vcr/deprecations_spec.rb +83 -24
- data/spec/vcr/http_stubbing_adapters/multi_object_proxy_spec.rb +1 -1
- data/spec/vcr/http_stubbing_adapters/typhoeus_spec.rb +2 -2
- data/spec/vcr/middleware/faraday_spec.rb +1 -1
- data/spec/vcr/structs/http_interaction_spec.rb +23 -0
- data/spec/vcr/structs/request_spec.rb +54 -0
- data/spec/vcr/structs/response_spec.rb +39 -0
- data/spec/vcr/structs/response_status_spec.rb +18 -0
- data/spec/vcr_spec.rb +26 -54
- data/vcr.gemspec +1 -1
- metadata +48 -31
- data/TODO.md +0 -5
- data/lib/vcr/structs.rb +0 -176
- data/spec/vcr/structs_spec.rb +0 -201
@@ -340,7 +340,7 @@ module HttpLibrarySpecs
|
|
340
340
|
end
|
341
341
|
|
342
342
|
[true, false].each do |http_allowed|
|
343
|
-
context "when
|
343
|
+
context "when http_connections_allowed is set to #{http_allowed}" do
|
344
344
|
before(:each) { subject.http_connections_allowed = http_allowed }
|
345
345
|
|
346
346
|
it "returns #{http_allowed} for #http_connections_allowed?" do
|
@@ -350,25 +350,24 @@ module HttpLibrarySpecs
|
|
350
350
|
test_real_http_request(http_allowed, *other)
|
351
351
|
|
352
352
|
unless http_allowed
|
353
|
-
|
354
|
-
|
353
|
+
localhost_response = "Localhost response"
|
354
|
+
|
355
|
+
describe '.ignore_hosts' do
|
355
356
|
let(:record_mode) { :none }
|
356
357
|
|
357
|
-
|
358
|
-
|
359
|
-
|
358
|
+
context 'when set to ["127.0.0.1", "localhost"]' do
|
359
|
+
before(:each) do
|
360
|
+
subject.ignored_hosts = ["127.0.0.1", "localhost"]
|
361
|
+
end
|
360
362
|
|
363
|
+
%w[ 127.0.0.1 localhost ].each do |localhost_alias|
|
361
364
|
it "allows requests to #{localhost_alias}" do
|
362
365
|
get_body_string(make_http_request(:get, "http://#{localhost_alias}:#{VCR::SinatraApp.port}/localhost_test")).should == localhost_response
|
363
366
|
end
|
364
367
|
end
|
365
368
|
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
it "does not allow requests to #{localhost_alias}" do
|
370
|
-
expect { make_http_request(:get, "http://#{localhost_alias}:#{VCR::SinatraApp.port}/localhost_test") }.to raise_error(NET_CONNECT_NOT_ALLOWED_ERROR)
|
371
|
-
end
|
369
|
+
it 'does not allow requests to 0.0.0.0' do
|
370
|
+
expect { make_http_request(:get, "http://0.0.0.0:#{VCR::SinatraApp.port}/localhost_test") }.to raise_error(NET_CONNECT_NOT_ALLOWED_ERROR)
|
372
371
|
end
|
373
372
|
end
|
374
373
|
end
|
@@ -3,20 +3,6 @@ shared_examples_for "an http stubbing adapter" do |supported_http_libraries, sup
|
|
3
3
|
before(:each) { VCR.stub!(:http_stubbing_adapter).and_return(subject) }
|
4
4
|
subject { described_class }
|
5
5
|
|
6
|
-
describe '.ignore_localhost?' do
|
7
|
-
[true, false].each do |val|
|
8
|
-
it "returns #{val} when ignore_localhost is set to #{val}" do
|
9
|
-
subject.ignore_localhost = val
|
10
|
-
subject.ignore_localhost?.should == val
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
it "returns false when ignore_localhost is set to nil" do
|
15
|
-
subject.ignore_localhost = nil
|
16
|
-
subject.ignore_localhost?.should == false
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
6
|
describe '.set_http_connections_allowed_to_default' do
|
21
7
|
[true, false].each do |default|
|
22
8
|
context "when VCR::Config.allow_http_connections_when_no_cassette is #{default}" do
|
@@ -59,7 +45,7 @@ shared_examples_for "an http stubbing adapter" do |supported_http_libraries, sup
|
|
59
45
|
end
|
60
46
|
|
61
47
|
if other.include?(:needs_net_http_extension)
|
62
|
-
describe '
|
48
|
+
describe '.request_uri' do
|
63
49
|
it 'returns the uri for the given http request' do
|
64
50
|
net_http = Net::HTTP.new('example.com', 80)
|
65
51
|
request = Net::HTTP::Get.new('/foo/bar')
|
@@ -74,7 +60,7 @@ shared_examples_for "an http stubbing adapter" do |supported_http_libraries, sup
|
|
74
60
|
end
|
75
61
|
end
|
76
62
|
|
77
|
-
describe '
|
63
|
+
describe '.request_stubbed? using specific match_attributes' do
|
78
64
|
let(:interactions) { YAML.load(File.read(File.join(File.dirname(__FILE__), '..', 'fixtures', YAML_SERIALIZATION_VERSION, 'match_requests_on.yml'))) }
|
79
65
|
|
80
66
|
@supported_request_match_attributes = supported_request_match_attributes
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
shared_examples_for "header normalization" do
|
4
|
+
let(:instance) do
|
5
|
+
with_headers('Some_Header' => 'value1', 'aNother' => ['a', 'b'], 'third' => [], 'fourth' => nil)
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'normalizes the hash to lower case keys and arrays of values' do
|
9
|
+
instance.headers['some_header'].should == ['value1']
|
10
|
+
instance.headers['another'].should == ['a', 'b']
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'removes empty headers' do
|
14
|
+
instance.headers.should_not have_key('third')
|
15
|
+
instance.headers.should_not have_key('fourth')
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'filters out unimportant default values set by the HTTP library' do
|
19
|
+
instance = with_headers('accept' => ['*/*'], 'connection' => 'close', 'http-user' => ['foo'], 'expect' => ['', 'bar'])
|
20
|
+
instance.headers.should == { 'http-user' => ['foo'], 'expect' => ['bar'] }
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'sets empty hash header to nil' do
|
24
|
+
with_headers({}).headers.should be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'ensures header keys are serialized to yaml as raw strings' do
|
28
|
+
key = 'my-key'
|
29
|
+
key.instance_variable_set(:@foo, 7)
|
30
|
+
instance = with_headers(key => ['value1'])
|
31
|
+
instance.headers.to_yaml.should == { 'my-key' => ['value1'] }.to_yaml
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'ensures header values are serialized to yaml as raw strings' do
|
35
|
+
value = 'my-value'
|
36
|
+
value.instance_variable_set(:@foo, 7)
|
37
|
+
instance = with_headers('my-key' => [value])
|
38
|
+
instance.headers.to_yaml.should == { 'my-key' => ['my-value'] }.to_yaml
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
shared_examples_for "body normalization" do
|
43
|
+
it 'sets empty string to nil' do
|
44
|
+
instance('').body.should be_nil
|
45
|
+
end
|
46
|
+
|
47
|
+
it "ensures the body is serialized to yaml as a raw string" do
|
48
|
+
body = "My String"
|
49
|
+
body.instance_variable_set(:@foo, 7)
|
50
|
+
instance(body).body.to_yaml.should == "My String".to_yaml
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
shared_examples_for 'uri normalization' do
|
55
|
+
it 'adds port 80 to an http URI that lacks a port' do
|
56
|
+
instance('http://example.com/foo').uri.should == 'http://example.com:80/foo'
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'keeps the existing port for an http URI' do
|
60
|
+
instance('http://example.com:8000/foo').uri.should == 'http://example.com:8000/foo'
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'adds port 443 to an https URI that lacks a port' do
|
64
|
+
instance('https://example.com/foo').uri.should == 'https://example.com:443/foo'
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'keeps the existing port for an https URI' do
|
68
|
+
instance('https://example.com:8000/foo').uri.should == 'https://example.com:8000/foo'
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
shared_examples_for 'status message normalization' do
|
73
|
+
it 'chomps leading and trailing spaces on the status message' do
|
74
|
+
instance(' OK ').message.should == 'OK'
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'sets status message to nil when it is the empty string' do
|
78
|
+
instance('').message.should be_nil
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'sets status message to nil when it is a blank string' do
|
82
|
+
instance(' ').message.should be_nil
|
83
|
+
end
|
84
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
shared_examples_for "version checking" do |options|
|
2
2
|
library = described_class.library_name
|
3
3
|
|
4
|
-
describe '
|
4
|
+
describe '.check_version!' do
|
5
5
|
options[:valid].each do |version|
|
6
6
|
it "does nothing when #{library}'s version is #{version}" do
|
7
7
|
stub_version(version)
|
data/spec/vcr/cassette_spec.rb
CHANGED
@@ -49,7 +49,7 @@ describe VCR::Cassette do
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
describe '
|
52
|
+
describe '.new' do
|
53
53
|
it 'raises an error with a helpful message when loading an old unsupported cassette' do
|
54
54
|
VCR::Config.cassette_library_dir = "#{VCR::SPEC_ROOT}/fixtures/#{YAML_SERIALIZATION_VERSION}"
|
55
55
|
expect { VCR::Cassette.new('0_3_1_cassette') }.to raise_error(/The VCR cassette 0_3_1_cassette.yml uses an old format that is now deprecated/)
|
@@ -181,16 +181,14 @@ describe VCR::Cassette do
|
|
181
181
|
VCR::Cassette.new(:name, :record => record_mode)
|
182
182
|
end
|
183
183
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
it "#{ ignore_localhost ? 'does not load' : 'loads' } localhost interactions from the cassette file when http_stubbing_adapter.ignore_localhost is set to #{ignore_localhost}" do
|
189
|
-
VCR.http_stubbing_adapter.stub!(:ignore_localhost?).and_return(ignore_localhost)
|
190
|
-
VCR::Config.cassette_library_dir = "#{VCR::SPEC_ROOT}/fixtures/#{YAML_SERIALIZATION_VERSION}/cassette_spec"
|
191
|
-
cassette = VCR::Cassette.new('with_localhost_requests', :record => record_mode)
|
192
|
-
cassette.recorded_interactions.map { |i| URI.parse(i.uri).host }.should =~ expected_uri_hosts
|
184
|
+
it 'does not load ignored interactions' do
|
185
|
+
VCR::Config.stub(:uri_should_be_ignored?) do |uri|
|
186
|
+
uri.to_s !~ /example\.com/
|
193
187
|
end
|
188
|
+
|
189
|
+
VCR::Config.cassette_library_dir = "#{VCR::SPEC_ROOT}/fixtures/#{YAML_SERIALIZATION_VERSION}/cassette_spec"
|
190
|
+
cassette = VCR::Cassette.new('with_localhost_requests', :record => record_mode)
|
191
|
+
cassette.recorded_interactions.map { |i| URI.parse(i.uri).host }.should == %w[example.com]
|
194
192
|
end
|
195
193
|
|
196
194
|
it "loads the recorded interactions from the library yml file" do
|
data/spec/vcr/config_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe VCR::Config do
|
|
6
6
|
VCR::Config.stub(:http_stubbing_libraries).and_return([])
|
7
7
|
end
|
8
8
|
|
9
|
-
describe '
|
9
|
+
describe '.cassette_library_dir=' do
|
10
10
|
temp_dir(File.expand_path(File.dirname(__FILE__) + '/fixtures/config_spec'))
|
11
11
|
|
12
12
|
it 'creates the directory if it does not exist' do
|
@@ -18,7 +18,7 @@ describe VCR::Config do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
describe '
|
21
|
+
describe '.default_cassette_options' do
|
22
22
|
it 'has a hash with some defaults even if it is set to nil' do
|
23
23
|
VCR::Config.default_cassette_options = nil
|
24
24
|
VCR::Config.default_cassette_options.should == { :match_requests_on => VCR::RequestMatcher::DEFAULT_MATCH_ATTRIBUTES }
|
@@ -47,26 +47,52 @@ describe VCR::Config do
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
describe '
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
}.to change { VCR.http_stubbing_adapter.ignore_localhost? }.from(!val).to(val)
|
57
|
-
end
|
50
|
+
describe '.ignore_hosts' do
|
51
|
+
let(:stubbing_adapter) { VCR::HttpStubbingAdapters::FakeWeb }
|
52
|
+
before(:each) do
|
53
|
+
stubbing_adapter.send(:ignored_hosts).should be_empty
|
54
|
+
VCR.stub(:http_stubbing_adapter => stubbing_adapter)
|
55
|
+
VCR::Config.ignored_hosts.should be_empty
|
58
56
|
end
|
59
57
|
|
60
|
-
it '
|
61
|
-
|
62
|
-
[
|
63
|
-
|
64
|
-
|
65
|
-
|
58
|
+
it 'adds the given hosts to the ignored_hosts list' do
|
59
|
+
VCR::Config.ignore_hosts 'example.com', 'example.net'
|
60
|
+
VCR::Config.ignored_hosts.should == %w[ example.com example.net ]
|
61
|
+
VCR::Config.ignore_host 'example.org'
|
62
|
+
VCR::Config.ignored_hosts.should == %w[ example.com example.net example.org ]
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'removes duplicate hosts' do
|
66
|
+
VCR::Config.ignore_host 'example.com'
|
67
|
+
VCR::Config.ignore_host 'example.com'
|
68
|
+
VCR::Config.ignored_hosts.should == ['example.com']
|
69
|
+
end
|
70
|
+
|
71
|
+
it "updates the http_stubbing_adapter's ignored_hosts list" do
|
72
|
+
VCR::Config.ignore_hosts 'example.com', 'example.org'
|
73
|
+
stubbing_adapter.send(:ignored_hosts).should == %w[ example.com example.org ]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '.ignore_localhost=' do
|
78
|
+
before(:each) do
|
79
|
+
VCR::Config.ignored_hosts.should be_empty
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'adds the localhost aliases to the ignored_hosts list when set to true' do
|
83
|
+
VCR::Config.ignore_host 'example.com'
|
84
|
+
VCR::Config.ignore_localhost = true
|
85
|
+
VCR::Config.ignored_hosts.should == ['example.com', *VCR::LOCALHOST_ALIASES]
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'removes the localhost aliases from the ignored_hosts list when set to false' do
|
89
|
+
VCR::Config.ignore_host 'example.com', *VCR::LOCALHOST_ALIASES
|
90
|
+
VCR::Config.ignore_localhost = false
|
91
|
+
VCR::Config.ignored_hosts.should == ['example.com']
|
66
92
|
end
|
67
93
|
end
|
68
94
|
|
69
|
-
describe '
|
95
|
+
describe '.allow_http_connections_when_no_cassette=' do
|
70
96
|
[true, false].each do |val|
|
71
97
|
it "sets the allow_http_connections_when_no_cassette to #{val} when set to #{val}" do
|
72
98
|
VCR::Config.allow_http_connections_when_no_cassette = val
|
@@ -85,4 +111,24 @@ describe VCR::Config do
|
|
85
111
|
VCR::Config.allow_http_connections_when_no_cassette = true
|
86
112
|
end
|
87
113
|
end
|
114
|
+
|
115
|
+
describe '.uri_should_be_ignored?' do
|
116
|
+
before(:each) { described_class.ignore_hosts 'example.com' }
|
117
|
+
|
118
|
+
it 'returns true for a string URI with a host in the ignore_hosts list' do
|
119
|
+
described_class.uri_should_be_ignored?("http://example.com/").should be_true
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'returns true for a URI instance with a host in the ignore_hosts list' do
|
123
|
+
described_class.uri_should_be_ignored?(URI("http://example.com/")).should be_true
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'returns false for a string URI with a host in the ignore_hosts list' do
|
127
|
+
described_class.uri_should_be_ignored?("http://example.net/").should be_false
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'returns false for a URI instance with a host in the ignore_hosts list' do
|
131
|
+
described_class.uri_should_be_ignored?(URI("http://example.net/")).should be_false
|
132
|
+
end
|
133
|
+
end
|
88
134
|
end
|
@@ -1,8 +1,58 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
shared_examples_for '.ignore_localhost? deprecation' do
|
4
|
+
it 'returns false when no hosts are ignored' do
|
5
|
+
VCR::Config.ignored_hosts.should be_empty
|
6
|
+
described_class.ignore_localhost?.should be_false
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'returns false when only non-local hosts are ignored' do
|
10
|
+
VCR::Config.ignore_hosts 'example.com'
|
11
|
+
described_class.ignore_localhost?.should be_false
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'returns false when only some localhost aliases are ignored' do
|
15
|
+
aliases = VCR::LOCALHOST_ALIASES.dup
|
16
|
+
aliases.pop
|
17
|
+
VCR::Config.ignore_hosts *aliases
|
18
|
+
described_class.ignore_localhost?.should be_false
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'returns true when all localhost aliases are ignored, even if some other hosts are ignored, too' do
|
22
|
+
VCR::Config.ignore_hosts 'example.com', *VCR::LOCALHOST_ALIASES
|
23
|
+
described_class.ignore_localhost?.should be_true
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'prints a warning: WARNING: `VCR::Config.ignore_localhost?` is deprecated. Check the list of ignored hosts using `VCR::Config.ignored_hosts` instead.' do
|
27
|
+
VCR::Config.should_receive(:warn).with(/Check the list of ignored hosts using `VCR::Config.ignored_hosts` instead/)
|
28
|
+
described_class.ignore_localhost?
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
3
32
|
describe 'Deprecations' do
|
4
33
|
disable_warnings
|
5
34
|
|
35
|
+
VCR::HttpStubbingAdapters::Common.adapters.each do |adapter|
|
36
|
+
describe adapter do
|
37
|
+
it_behaves_like '.ignore_localhost? deprecation'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe VCR::HttpStubbingAdapters::FakeWeb do
|
42
|
+
describe 'LOCALHOST_REGEX constant' do
|
43
|
+
subject { described_class::LOCALHOST_REGEX }
|
44
|
+
|
45
|
+
it 'refers to the expected regex' do
|
46
|
+
should == %r|\Ahttps?://((\w+:)?\w+@)?(#{VCR::LOCALHOST_ALIASES.sort.map { |a| Regexp.escape(a) }.join('|')})(:\d+)?/|i
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'prints a warning: WARNING: `VCR::HttpStubbingAdapters::FakeWeb::LOCALHOST_REGEX` is deprecated.' do
|
50
|
+
described_class.should_receive(:warn).with("WARNING: `VCR::HttpStubbingAdapters::FakeWeb::LOCALHOST_REGEX` is deprecated.")
|
51
|
+
subject
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
6
56
|
describe VCR::Config do
|
7
57
|
describe '.http_stubbing_library' do
|
8
58
|
before(:each) { described_class.stub_with :webmock, :typhoeus }
|
@@ -28,6 +78,8 @@ describe 'Deprecations' do
|
|
28
78
|
described_class.http_stubbing_library = :webmock
|
29
79
|
end
|
30
80
|
end
|
81
|
+
|
82
|
+
it_behaves_like '.ignore_localhost? deprecation'
|
31
83
|
end
|
32
84
|
|
33
85
|
describe VCR::Cassette do
|
@@ -43,35 +95,42 @@ describe 'Deprecations' do
|
|
43
95
|
end
|
44
96
|
|
45
97
|
[true, false].each do |orig_ignore_localhost|
|
46
|
-
|
47
|
-
|
98
|
+
orig_ignored_hosts = if orig_ignore_localhost
|
99
|
+
VCR::LOCALHOST_ALIASES
|
100
|
+
else
|
101
|
+
[]
|
102
|
+
end
|
48
103
|
|
49
|
-
|
50
|
-
|
104
|
+
context "when the ignored_hosts list is set to #{orig_ignored_hosts.inspect} and the :allow_real_http option is set to :localhost" do
|
105
|
+
before(:each) do
|
106
|
+
VCR::Config.ignored_hosts.clear
|
107
|
+
VCR::Config.ignore_hosts *orig_ignored_hosts
|
108
|
+
end
|
51
109
|
|
52
|
-
|
53
|
-
subject
|
54
|
-
VCR.http_stubbing_adapter.ignore_localhost?.should == true
|
55
|
-
end
|
110
|
+
subject { VCR::Cassette.new('cassette name', :allow_real_http => :localhost) }
|
56
111
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
112
|
+
it "sets the ignored_hosts list to the list of localhost aliases" do
|
113
|
+
subject
|
114
|
+
VCR::Config.ignored_hosts.should == VCR::LOCALHOST_ALIASES
|
115
|
+
end
|
61
116
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
117
|
+
it "prints a warning: VCR's :allow_real_http cassette option is deprecated. Instead, use the ignore_localhost configuration option." do
|
118
|
+
Kernel.should_receive(:warn).with("WARNING: VCR's :allow_real_http cassette option is deprecated. Instead, use the ignore_localhost configuration option.")
|
119
|
+
subject
|
120
|
+
end
|
121
|
+
|
122
|
+
it "reverts ignore_hosts when the cassette is ejected" do
|
123
|
+
subject.eject
|
124
|
+
VCR::Config.ignored_hosts.should == orig_ignored_hosts
|
125
|
+
end
|
66
126
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
end
|
127
|
+
{
|
128
|
+
'http://localhost' => true,
|
129
|
+
'http://127.0.0.1' => true,
|
130
|
+
'http://example.com' => false
|
131
|
+
}.each do |url, expected_value|
|
132
|
+
it "returns #{expected_value} for #allow_real_http_requests_to? when it is given #{url}" do
|
133
|
+
subject.allow_real_http_requests_to?(URI.parse(url)).should == expected_value
|
75
134
|
end
|
76
135
|
end
|
77
136
|
end
|