vcr 3.0.3 → 4.0.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 (127) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vcr.rb +18 -1
  3. data/lib/vcr/cassette.rb +11 -3
  4. data/lib/vcr/cassette/persisters/file_system.rb +1 -1
  5. data/lib/vcr/configuration.rb +3 -5
  6. data/lib/vcr/deprecations.rb +0 -62
  7. data/lib/vcr/errors.rb +16 -0
  8. data/lib/vcr/library_hooks/typhoeus.rb +37 -8
  9. data/lib/vcr/middleware/faraday.rb +5 -1
  10. data/lib/vcr/structs.rb +1 -1
  11. data/lib/vcr/util/hooks.rb +1 -0
  12. data/lib/vcr/version.rb +1 -1
  13. metadata +9 -249
  14. data/features/CHANGELOG.md +0 -710
  15. data/features/CONTRIBUTING.md +0 -26
  16. data/features/LICENSE.md +0 -20
  17. data/features/README.md +0 -339
  18. data/features/Upgrade.md +0 -289
  19. data/features/about_these_examples.md +0 -18
  20. data/features/cassettes/allow_unused_http_interactions.feature +0 -100
  21. data/features/cassettes/automatic_re_recording.feature +0 -72
  22. data/features/cassettes/decompress.feature +0 -74
  23. data/features/cassettes/dynamic_erb.feature +0 -100
  24. data/features/cassettes/exclusive.feature +0 -126
  25. data/features/cassettes/format.feature +0 -411
  26. data/features/cassettes/freezing_time.feature +0 -68
  27. data/features/cassettes/naming.feature +0 -28
  28. data/features/cassettes/no_cassette.feature +0 -152
  29. data/features/cassettes/update_content_length_header.feature +0 -112
  30. data/features/configuration/allow_http_connections_when_no_cassette.feature +0 -55
  31. data/features/configuration/cassette_library_dir.feature +0 -31
  32. data/features/configuration/debug_logging.feature +0 -58
  33. data/features/configuration/default_cassette_options.feature +0 -100
  34. data/features/configuration/filter_sensitive_data.feature +0 -153
  35. data/features/configuration/hook_into.feature +0 -172
  36. data/features/configuration/ignore_request.feature +0 -192
  37. data/features/configuration/preserve_exact_body_bytes.feature +0 -108
  38. data/features/configuration/query_parser.feature +0 -84
  39. data/features/configuration/uri_parser.feature +0 -93
  40. data/features/getting_started.md +0 -82
  41. data/features/hooks/after_http_request.feature +0 -58
  42. data/features/hooks/around_http_request.feature +0 -57
  43. data/features/hooks/before_http_request.feature +0 -63
  44. data/features/hooks/before_playback.feature +0 -184
  45. data/features/hooks/before_record.feature +0 -172
  46. data/features/http_libraries/em_http_request.feature +0 -250
  47. data/features/http_libraries/net_http.feature +0 -179
  48. data/features/middleware/faraday.feature +0 -56
  49. data/features/middleware/rack.feature +0 -92
  50. data/features/record_modes/all.feature +0 -82
  51. data/features/record_modes/new_episodes.feature +0 -79
  52. data/features/record_modes/none.feature +0 -72
  53. data/features/record_modes/once.feature +0 -95
  54. data/features/request_matching/README.md +0 -30
  55. data/features/request_matching/body.feature +0 -91
  56. data/features/request_matching/body_as_json.feature +0 -90
  57. data/features/request_matching/custom_matcher.feature +0 -135
  58. data/features/request_matching/headers.feature +0 -85
  59. data/features/request_matching/host.feature +0 -95
  60. data/features/request_matching/identical_request_sequence.feature +0 -89
  61. data/features/request_matching/method.feature +0 -96
  62. data/features/request_matching/path.feature +0 -96
  63. data/features/request_matching/playback_repeats.feature +0 -98
  64. data/features/request_matching/query.feature +0 -97
  65. data/features/request_matching/uri.feature +0 -94
  66. data/features/request_matching/uri_without_param.feature +0 -101
  67. data/features/step_definitions/cli_steps.rb +0 -199
  68. data/features/support/env.rb +0 -46
  69. data/features/support/http_lib_filters.rb +0 -46
  70. data/features/test_frameworks/cucumber.feature +0 -211
  71. data/features/test_frameworks/rspec_macro.feature +0 -81
  72. data/features/test_frameworks/rspec_metadata.feature +0 -150
  73. data/features/test_frameworks/test_unit.feature +0 -49
  74. data/lib/vcr/extensions/net_http_response.rb +0 -36
  75. data/lib/vcr/library_hooks/fakeweb.rb +0 -197
  76. data/spec/acceptance/concurrency_spec.rb +0 -51
  77. data/spec/acceptance/threading_spec.rb +0 -34
  78. data/spec/fixtures/cassette_spec/1_x_cassette.yml +0 -110
  79. data/spec/fixtures/cassette_spec/empty.yml +0 -0
  80. data/spec/fixtures/cassette_spec/example.yml +0 -111
  81. data/spec/fixtures/cassette_spec/with_localhost_requests.yml +0 -111
  82. data/spec/fixtures/fake_example_responses.yml +0 -110
  83. data/spec/fixtures/match_requests_on.yml +0 -187
  84. data/spec/lib/vcr/cassette/erb_renderer_spec.rb +0 -53
  85. data/spec/lib/vcr/cassette/http_interaction_list_spec.rb +0 -295
  86. data/spec/lib/vcr/cassette/migrator_spec.rb +0 -196
  87. data/spec/lib/vcr/cassette/persisters/file_system_spec.rb +0 -75
  88. data/spec/lib/vcr/cassette/persisters_spec.rb +0 -39
  89. data/spec/lib/vcr/cassette/serializers_spec.rb +0 -182
  90. data/spec/lib/vcr/cassette_spec.rb +0 -618
  91. data/spec/lib/vcr/configuration_spec.rb +0 -326
  92. data/spec/lib/vcr/deprecations_spec.rb +0 -85
  93. data/spec/lib/vcr/errors_spec.rb +0 -178
  94. data/spec/lib/vcr/extensions/net_http_response_spec.rb +0 -86
  95. data/spec/lib/vcr/library_hooks/excon_spec.rb +0 -104
  96. data/spec/lib/vcr/library_hooks/fakeweb_spec.rb +0 -169
  97. data/spec/lib/vcr/library_hooks/faraday_spec.rb +0 -68
  98. data/spec/lib/vcr/library_hooks/typhoeus_0.4_spec.rb +0 -36
  99. data/spec/lib/vcr/library_hooks/typhoeus_spec.rb +0 -162
  100. data/spec/lib/vcr/library_hooks/webmock_spec.rb +0 -117
  101. data/spec/lib/vcr/library_hooks_spec.rb +0 -51
  102. data/spec/lib/vcr/middleware/faraday_spec.rb +0 -181
  103. data/spec/lib/vcr/middleware/rack_spec.rb +0 -115
  104. data/spec/lib/vcr/request_ignorer_spec.rb +0 -70
  105. data/spec/lib/vcr/request_matcher_registry_spec.rb +0 -345
  106. data/spec/lib/vcr/structs_spec.rb +0 -732
  107. data/spec/lib/vcr/test_frameworks/cucumber_spec.rb +0 -107
  108. data/spec/lib/vcr/test_frameworks/rspec_spec.rb +0 -94
  109. data/spec/lib/vcr/util/hooks_spec.rb +0 -158
  110. data/spec/lib/vcr/util/internet_connection_spec.rb +0 -37
  111. data/spec/lib/vcr/util/version_checker_spec.rb +0 -31
  112. data/spec/lib/vcr/version_spec.rb +0 -27
  113. data/spec/lib/vcr_spec.rb +0 -354
  114. data/spec/monkey_patches.rb +0 -186
  115. data/spec/spec_helper.rb +0 -63
  116. data/spec/support/configuration_stubbing.rb +0 -8
  117. data/spec/support/cucumber_helpers.rb +0 -39
  118. data/spec/support/fixnum_extension.rb +0 -10
  119. data/spec/support/http_library_adapters.rb +0 -289
  120. data/spec/support/limited_uri.rb +0 -21
  121. data/spec/support/ruby_interpreter.rb +0 -7
  122. data/spec/support/shared_example_groups/excon.rb +0 -63
  123. data/spec/support/shared_example_groups/hook_into_http_library.rb +0 -594
  124. data/spec/support/shared_example_groups/request_hooks.rb +0 -59
  125. data/spec/support/sinatra_app.rb +0 -86
  126. data/spec/support/vcr_localhost_server.rb +0 -76
  127. data/spec/support/vcr_stub_helpers.rb +0 -17
@@ -1,86 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe VCR::Net::HTTPResponse do
4
- def self.it_allows_the_body_to_be_read(expected_regex)
5
- it 'allows the body to be read using #body' do
6
- expect(response.body.to_s).to match expected_regex
7
- end
8
-
9
- it 'allows the body to be read using #read_body' do
10
- expect(response.read_body.to_s).to match expected_regex
11
- end
12
-
13
- it 'allows the body to be read using #read_body with a block' do
14
- yielded_body = ''
15
- response { |r| r.read_body { |s| yielded_body << s.to_s } }
16
- expect(yielded_body).to match expected_regex
17
- end
18
-
19
- it 'allows the body to be read by passing a destination string to #read_body' do
20
- dest = ''
21
- ret_val = response { |r| r.read_body(dest) }.body
22
- expect(dest.to_s).to match expected_regex
23
- expect(ret_val.to_s).to eq(dest)
24
- end
25
-
26
- it 'raises an ArgumentError if both a destination string and a block is given to #read_body' do
27
- dest = ''
28
- expect { response { |r| r.read_body(dest) { |s| } } }.to raise_error(ArgumentError, 'both arg and block given for HTTP method')
29
- end
30
-
31
- it 'raises an IOError when #read_body is called twice with a block' do
32
- response { |r| r.read_body { |s| } }
33
- expect { response { |r| r.read_body { |s| } } }.to raise_error(IOError, /read_body called twice/)
34
- end
35
-
36
- it 'raises an IOError when #read_body is called twice with a destination string' do
37
- dest = ''
38
- response { |r| r.read_body(dest) }
39
- expect { response { |r| r.read_body(dest) } }.to raise_error(IOError, /read_body called twice/)
40
- end
41
- end
42
-
43
- { :get => /GET to root/, :head => /\A\z/ }.each do |http_verb, expected_body_regex|
44
- context "for a #{http_verb.to_s.upcase} request" do
45
- let(:http_verb_method) { :"request_#{http_verb}" }
46
-
47
- def response(&block)
48
- if defined?(@response) && block
49
- block.call(@response)
50
- return @response
51
- end
52
-
53
- @response ||= begin
54
- http = Net::HTTP.new('localhost', VCR::SinatraApp.port)
55
- res = http.send(http_verb_method, '/', &block)
56
- expect(res).not_to be_a(VCR::Net::HTTPResponse)
57
- expect(res).not_to be_a(::Net::WebMockHTTPResponse)
58
- res
59
- end
60
- end
61
-
62
- context 'when the body has not already been read' do
63
- it_allows_the_body_to_be_read(expected_body_regex)
64
- end
65
-
66
- context 'when the body has already been read using #read_body and a dest string' do
67
- before(:each) do
68
- dest = ''
69
- response { |res| res.read_body(dest) }
70
- response.extend VCR::Net::HTTPResponse
71
- end
72
-
73
- it_allows_the_body_to_be_read(expected_body_regex)
74
- end
75
-
76
- context 'when the body has already been read using #body' do
77
- before(:each) do
78
- response.body
79
- response.extend VCR::Net::HTTPResponse
80
- end
81
-
82
- it_allows_the_body_to_be_read(expected_body_regex)
83
- end
84
- end
85
- end
86
- end
@@ -1,104 +0,0 @@
1
- require 'spec_helper'
2
- require 'support/shared_example_groups/excon'
3
-
4
- describe "Excon hook", :with_monkey_patches => :excon do
5
- after(:each) do
6
- ::Excon.stubs.clear
7
- ::Excon.defaults[:mock] = false
8
- end
9
-
10
- def directly_stub_request(method, url, response_body)
11
- ::Excon.defaults[:mock] = true
12
- ::Excon.stub({ :method => method, :url => url }, { :body => response_body })
13
- end
14
-
15
- it_behaves_like 'a hook into an HTTP library', :excon, 'excon', :status_message_not_exposed
16
-
17
- context "when the query is specified as a hash option" do
18
- let(:excon) { ::Excon.new("http://localhost:#{VCR::SinatraApp.port}/search") }
19
-
20
- it 'properly records and plays back the response' do
21
- allow(VCR).to receive(:real_http_connections_allowed?).and_return(true)
22
- recorded, played_back = [1, 2].map do
23
- VCR.use_cassette('excon_query', :record => :once) do
24
- excon.request(:method => :get, :query => { :q => 'Tolkien' }).body
25
- end
26
- end
27
-
28
- expect(recorded).to eq(played_back)
29
- expect(recorded).to eq('query: Tolkien')
30
- end
31
- end
32
-
33
- context "when Excon's expects and idempotent middlewares cause errors to be raised" do
34
- let(:excon) { ::Excon.new("http://localhost:#{VCR::SinatraApp.port}/404_not_200") }
35
-
36
- def make_request
37
- VCR.use_cassette('with_errors', :record => :once) do
38
- excon.request(:method => :get, :expects => [200], :idempotent => true).body
39
- end
40
- end
41
-
42
- it 'records and plays back properly' do
43
- expect { make_request }.to raise_error(Excon::Errors::NotFound)
44
- expect { make_request }.to raise_error(Excon::Errors::NotFound)
45
- end
46
- end
47
-
48
- include_examples "Excon streaming"
49
-
50
- context 'when Excon raises an error due to an unexpected response status' do
51
- before(:each) do
52
- allow(VCR).to receive(:real_http_connections_allowed?).and_return(true)
53
- end
54
-
55
- it 'still records properly' do
56
- expect(VCR).to receive(:record_http_interaction) do |interaction|
57
- expect(interaction.response.status.code).to eq(404)
58
- expect(interaction.response.body).to eq('404 not 200')
59
- end
60
-
61
- expect {
62
- Excon.get("http://localhost:#{VCR::SinatraApp.port}/404_not_200", :expects => 200)
63
- }.to raise_error(Excon::Errors::Error)
64
- end
65
-
66
- def error_raised_by
67
- yield
68
- rescue => e
69
- return e
70
- else
71
- raise "No error was raised"
72
- end
73
-
74
- it 'raises the same error class as excon itself raises' do
75
- real_error, stubbed_error = 2.times.map do
76
- error_raised_by do
77
- VCR.use_cassette('excon_error', :record => :once) do
78
- Excon.get("http://localhost:#{VCR::SinatraApp.port}/not_found", :expects => 200)
79
- end
80
- end
81
- end
82
-
83
- expect(stubbed_error.class).to be(real_error.class)
84
- end
85
-
86
- it_behaves_like "request hooks", :excon, :recordable do
87
- undef make_request
88
- def make_request(disabled = false)
89
- expect {
90
- Excon.get(request_url, :expects => 404)
91
- }.to raise_error(Excon::Errors::Error)
92
- end
93
- end
94
- end
95
-
96
- describe "VCR.configuration.after_library_hooks_loaded hook" do
97
- it 'disables the webmock excon adapter so it does not conflict with our typhoeus hook' do
98
- expect(::WebMock::HttpLibAdapters::ExconAdapter).to respond_to(:disable!)
99
- expect(::WebMock::HttpLibAdapters::ExconAdapter).to receive(:disable!)
100
- $excon_after_loaded_hook.conditionally_invoke
101
- end
102
- end
103
- end
104
-
@@ -1,169 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "FakeWeb hook", :with_monkey_patches => :fakeweb do
4
- after(:each) do
5
- ::FakeWeb.clean_registry
6
- end
7
-
8
- def disable_real_connections
9
- ::FakeWeb.allow_net_connect = false
10
- ::FakeWeb::NetConnectNotAllowedError
11
- end
12
-
13
- def enable_real_connections
14
- ::FakeWeb.allow_net_connect = true
15
- end
16
-
17
- def directly_stub_request(method, url, response_body)
18
- ::FakeWeb.register_uri(method, url, :body => response_body)
19
- end
20
-
21
- it_behaves_like 'a hook into an HTTP library', :fakeweb, 'net/http'
22
-
23
- describe "some specific Net::HTTP edge cases" do
24
- before(:each) do
25
- allow(VCR).to receive(:real_http_connections_allowed?).and_return(true)
26
- end
27
-
28
- it 'records the request body when using #post_form' do
29
- expect(VCR).to receive(:record_http_interaction) do |interaction|
30
- expect(interaction.request.body).to eq("q=ruby")
31
- end
32
-
33
- uri = URI("http://localhost:#{VCR::SinatraApp.port}/foo")
34
- Net::HTTP.post_form(uri, 'q' => 'ruby')
35
- end
36
-
37
- it "does not record headers for which Net::HTTP sets defaults near the end of the real request" do
38
- expect(VCR).to receive(:record_http_interaction) do |interaction|
39
- expect(interaction.request.headers).not_to have_key('content-type')
40
- expect(interaction.request.headers).not_to have_key('host')
41
- end
42
- Net::HTTP.new('localhost', VCR::SinatraApp.port).send_request('POST', '/', '', { 'x-http-user' => 'me' })
43
- end
44
-
45
- it "records headers for which Net::HTTP usually sets defaults when the user manually sets their values" do
46
- expect(VCR).to receive(:record_http_interaction) do |interaction|
47
- expect(interaction.request.headers['content-type']).to eq(['foo/bar'])
48
- expect(interaction.request.headers['host']).to eq(['my-example.com'])
49
- end
50
- Net::HTTP.new('localhost', VCR::SinatraApp.port).send_request('POST', '/', '', { 'Content-Type' => 'foo/bar', 'Host' => 'my-example.com' })
51
- end
52
-
53
- def perform_get_with_returning_block
54
- Net::HTTP.new('localhost', VCR::SinatraApp.port).request(Net::HTTP::Get.new('/', {})) do |response|
55
- return response
56
- end
57
- end
58
-
59
- it 'records the interaction when Net::HTTP#request is called with a block with a return statement' do
60
- expect(VCR).to receive(:record_http_interaction).once
61
- expect(perform_get_with_returning_block.body).to eq("GET to root")
62
- end
63
-
64
- def make_post_request
65
- Net::HTTP.new('localhost', VCR::SinatraApp.port).post('/record-and-playback', '')
66
- end
67
-
68
- it 'records the interaction only once, even when Net::HTTP internally recursively calls #request' do
69
- expect(VCR).to receive(:record_http_interaction).once
70
- make_post_request
71
- end
72
-
73
- it 'properly returns the response body for a post request when recording, stubbing or ignoring the request' do
74
- recorded_body = nil
75
- VCR.use_cassette("new_cassette", :record => :once) do
76
- recorded_body = make_post_request.body
77
- expect(recorded_body).to match(/Response \d+/)
78
- end
79
-
80
- VCR.use_cassette("new_cassette", :record => :once) do
81
- expect(make_post_request.body).to eq(recorded_body)
82
- end
83
-
84
- VCR.configuration.ignore_request { |r| true }
85
- ignored_body = make_post_request.body
86
- expect(ignored_body).not_to eq(recorded_body)
87
- expect(ignored_body).to match(/Response \d+/)
88
- end
89
-
90
- context 'when the same Net::HTTP request object is used twice' do
91
- let(:uri) { URI("http://localhost:#{VCR::SinatraApp.port}/foo") }
92
- let(:http) { Net::HTTP.new(uri.host, uri.port) }
93
-
94
- it 'raises an UnhandledHTTPRequestError when using a cassette that only recorded one request' do
95
- VCR.use_cassette("new_cassette", :record => :once) do
96
- request = Net::HTTP::Get.new(uri.request_uri)
97
- http.request(request)
98
- end
99
-
100
- VCR.use_cassette("new_cassette", :record => :once) do
101
- request = Net::HTTP::Get.new(uri.request_uri)
102
- http.request(request)
103
- http.request(request)
104
- end
105
- end
106
- end
107
- end
108
-
109
- describe "VCR.configuration.after_library_hooks_loaded hook" do
110
- let(:run_hook) { $fakeweb_after_loaded_hook.conditionally_invoke }
111
-
112
- context 'when WebMock has been loaded' do
113
- before(:each) do
114
- expect(defined?(WebMock)).to be_truthy
115
- end
116
-
117
- it 'raises an error since FakeWeb and WebMock cannot both be used simultaneously' do
118
- expect { run_hook }.to raise_error(ArgumentError, /cannot use both/)
119
- end
120
- end
121
-
122
- context 'when WebMock has not been loaded' do
123
- let!(:orig_webmock_constant) { ::WebMock }
124
- before(:each) { Object.send(:remove_const, :WebMock) }
125
- after(:each) { ::WebMock = orig_webmock_constant }
126
-
127
- it 'does not raise an error' do
128
- run_hook # should not raise an error
129
- end
130
-
131
- it "warns about FakeWeb deprecation" do
132
- expect(::Kernel).to receive(:warn).with("WARNING: VCR's FakeWeb integration is deprecated and will be removed in VCR 4.0.")
133
- run_hook
134
- end
135
- end
136
- end
137
-
138
- describe "when a SocketError occurs" do
139
- before(:each) do
140
- VCR.configuration.ignore_request { |r| true }
141
- end
142
-
143
- it_behaves_like "request hooks", :fakeweb, :ignored do
144
- undef assert_expected_response
145
- def assert_expected_response(response)
146
- expect(response).to be_nil
147
- end
148
-
149
- undef make_request
150
- def make_request(disabled = false)
151
- allow_any_instance_of(::Net::HTTP).to receive(:request_without_vcr).and_raise(SocketError)
152
- expect {
153
- ::Net::HTTP.get_response(URI(request_url))
154
- }.to raise_error(SocketError)
155
- end
156
- end
157
- end
158
-
159
- describe "when VCR is turned off" do
160
- it 'allows white listed connections' do
161
- ::FakeWeb.allow_net_connect = %r[localhost]
162
-
163
- VCR.turn_off!
164
-
165
- uri = URI("http://localhost:#{VCR::SinatraApp.port}/foo")
166
- expect(Net::HTTP.get(uri)).to eq("FOO!")
167
- end
168
- end
169
- end
@@ -1,68 +0,0 @@
1
- require 'spec_helper'
2
- require 'vcr/library_hooks/faraday'
3
-
4
- describe "Faraday hook" do
5
- it 'inserts the VCR middleware just before the adapter' do
6
- conn = Faraday.new(:url => 'http://sushi.com') do |builder|
7
- builder.request :url_encoded
8
- builder.response :logger
9
- builder.adapter :net_http
10
- end
11
-
12
- conn.builder.lock!
13
- expect(conn.builder.handlers.last(2).map(&:klass)).to eq([
14
- VCR::Middleware::Faraday,
15
- Faraday::Adapter::NetHttp
16
- ])
17
- end
18
-
19
- it 'handles the case where no adapter is declared' do
20
- conn = Faraday.new
21
-
22
- conn.builder.lock!
23
- expect(conn.builder.handlers.last(2).map(&:klass)).to eq([
24
- VCR::Middleware::Faraday,
25
- Faraday::Adapter::NetHttp
26
- ])
27
- end
28
-
29
- it 'does nothing if the VCR middleware has already been included' do
30
- conn = Faraday.new(:url => 'http://sushi.com') do |builder|
31
- builder.use VCR::Middleware::Faraday
32
- builder.use Faraday::Response::Logger
33
- builder.use Faraday::Adapter::NetHttp
34
- end
35
-
36
- conn.builder.lock!
37
- expect(conn.builder.handlers.map(&:klass)).to eq([
38
- VCR::Middleware::Faraday,
39
- Faraday::Response::Logger,
40
- Faraday::Adapter::NetHttp
41
- ])
42
- end
43
-
44
- it 'prints a warning if the faraday connection stack contains a middleware after the HTTP adapter' do
45
- conn = Faraday.new(:url => 'http://sushi.com') do |builder|
46
- builder.use Faraday::Adapter::NetHttp
47
- builder.use Faraday::Response::Logger
48
- end
49
-
50
- expect(conn.builder).to receive(:warn).with(/Faraday::Response::Logger/)
51
- conn.builder.lock!
52
- end
53
-
54
- it 'gracefully handles the case where there is no explicit HTTP adapter' do
55
- conn = Faraday.new(:url => 'http://sushi.com') do |builder|
56
- builder.request :url_encoded
57
- builder.response :logger
58
- end
59
-
60
- conn.builder.lock!
61
- expect(conn.builder.handlers.map(&:klass)).to eq([
62
- Faraday::Request::UrlEncoded,
63
- Faraday::Response::Logger,
64
- VCR::Middleware::Faraday
65
- ])
66
- end
67
- end
68
-
@@ -1,36 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Typhoeus 0.4 hook", :with_monkey_patches => :typhoeus_0_4 do
4
- after(:each) do
5
- ::Typhoeus::Hydra.clear_stubs
6
- end
7
-
8
- def disable_real_connections
9
- ::Typhoeus::Hydra.allow_net_connect = false
10
- ::Typhoeus::Hydra::NetConnectNotAllowedError
11
- end
12
-
13
- def enable_real_connections
14
- ::Typhoeus::Hydra.allow_net_connect = true
15
- end
16
-
17
- def directly_stub_request(method, url, response_body)
18
- response = ::Typhoeus::Response.new(:code => 200, :body => response_body)
19
- ::Typhoeus::Hydra.stub(method, url).and_return(response)
20
- end
21
-
22
- it_behaves_like 'a hook into an HTTP library', :typhoeus, 'typhoeus 0.4'
23
-
24
- describe "VCR.configuration.after_library_hooks_loaded hook" do
25
- it 'disables the webmock typhoeus adapter so it does not conflict with our typhoeus hook' do
26
- expect(::WebMock::HttpLibAdapters::TyphoeusAdapter).to receive(:disable!)
27
- $typhoeus_after_loaded_hook.conditionally_invoke
28
- end
29
-
30
- it "warns about Typhoeus 0.4 deprecation" do
31
- expect(::Kernel).to receive(:warn).with("WARNING: VCR's Typhoeus 0.4 integration is deprecated and will be removed in VCR 3.0.")
32
- $typhoeus_0_4_after_loaded_hook.conditionally_invoke
33
- end
34
- end
35
- end if RUBY_INTERPRETER == :mri && ::Typhoeus::VERSION.to_f < 0.5
36
-