vcr 2.4.0 → 2.5.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 (85) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +3 -0
  3. data/.travis.yml +2 -0
  4. data/CHANGELOG.md +31 -0
  5. data/Gemfile +1 -2
  6. data/Gemfile.lock +63 -46
  7. data/README.md +5 -2
  8. data/features/cassettes/allow_unused_http_interactions.feature +1 -1
  9. data/features/cassettes/automatic_re_recording.feature +1 -1
  10. data/features/cassettes/decompress.feature +3 -3
  11. data/features/cassettes/dynamic_erb.feature +2 -2
  12. data/features/cassettes/exclusive.feature +1 -1
  13. data/features/cassettes/naming.feature +1 -1
  14. data/features/cassettes/no_cassette.feature +6 -3
  15. data/features/cassettes/persistence.feature +1 -1
  16. data/features/cassettes/update_content_length_header.feature +1 -1
  17. data/features/configuration/allow_http_connections_when_no_cassette.feature +1 -1
  18. data/features/configuration/cassette_library_dir.feature +1 -1
  19. data/features/configuration/debug_logging.feature +5 -5
  20. data/features/configuration/filter_sensitive_data.feature +2 -2
  21. data/features/configuration/hook_into.feature +4 -7
  22. data/features/getting_started.md +2 -2
  23. data/features/hooks/before_playback.feature +5 -5
  24. data/features/hooks/before_record.feature +5 -5
  25. data/features/middleware/rack.feature +2 -2
  26. data/features/record_modes/all.feature +1 -1
  27. data/features/record_modes/new_episodes.feature +1 -1
  28. data/features/record_modes/none.feature +1 -1
  29. data/features/record_modes/once.feature +1 -1
  30. data/features/request_matching/custom_matcher.feature +1 -1
  31. data/features/request_matching/headers.feature +0 -2
  32. data/features/request_matching/playback_repeats.feature +1 -1
  33. data/features/request_matching/uri_without_param.feature +1 -1
  34. data/features/support/env.rb +1 -0
  35. data/features/test_frameworks/cucumber.feature +8 -8
  36. data/features/test_frameworks/rspec_macro.feature +2 -2
  37. data/features/test_frameworks/rspec_metadata.feature +1 -1
  38. data/gemfiles/typhoeus_old.gemfile +1 -1
  39. data/gemfiles/typhoeus_old.gemfile.lock +31 -57
  40. data/lib/vcr/cassette/migrator.rb +8 -1
  41. data/lib/vcr/configuration.rb +9 -2
  42. data/lib/vcr/library_hooks/excon.rb +2 -184
  43. data/lib/vcr/library_hooks/typhoeus.rb +1 -1
  44. data/lib/vcr/library_hooks/typhoeus_0.4.rb +4 -0
  45. data/lib/vcr/library_hooks/webmock.rb +1 -1
  46. data/lib/vcr/middleware/excon.rb +226 -0
  47. data/lib/vcr/version.rb +1 -1
  48. data/spec/acceptance/threading_spec.rb +28 -0
  49. data/spec/monkey_patches.rb +3 -7
  50. data/spec/quality_spec.rb +1 -1
  51. data/spec/spec_helper.rb +7 -4
  52. data/spec/support/http_library_adapters.rb +4 -3
  53. data/spec/support/shared_example_groups/excon.rb +22 -0
  54. data/spec/support/shared_example_groups/hook_into_http_library.rb +46 -46
  55. data/spec/support/shared_example_groups/request_hooks.rb +8 -8
  56. data/spec/vcr/cassette/erb_renderer_spec.rb +5 -5
  57. data/spec/vcr/cassette/http_interaction_list_spec.rb +52 -40
  58. data/spec/vcr/cassette/migrator_spec.rb +11 -11
  59. data/spec/vcr/cassette/persisters/file_system_spec.rb +11 -11
  60. data/spec/vcr/cassette/persisters_spec.rb +2 -2
  61. data/spec/vcr/cassette/serializers_spec.rb +13 -12
  62. data/spec/vcr/cassette_spec.rb +58 -58
  63. data/spec/vcr/configuration_spec.rb +43 -31
  64. data/spec/vcr/deprecations_spec.rb +3 -3
  65. data/spec/vcr/errors_spec.rb +25 -25
  66. data/spec/vcr/extensions/net_http_response_spec.rb +7 -7
  67. data/spec/vcr/library_hooks/excon_spec.rb +7 -85
  68. data/spec/vcr/library_hooks/fakeweb_spec.rb +15 -13
  69. data/spec/vcr/library_hooks/faraday_spec.rb +4 -4
  70. data/spec/vcr/library_hooks/typhoeus_0.4_spec.rb +5 -0
  71. data/spec/vcr/library_hooks/typhoeus_spec.rb +3 -3
  72. data/spec/vcr/library_hooks/webmock_spec.rb +13 -5
  73. data/spec/vcr/library_hooks_spec.rb +9 -9
  74. data/spec/vcr/middleware/faraday_spec.rb +10 -10
  75. data/spec/vcr/middleware/rack_spec.rb +20 -15
  76. data/spec/vcr/request_ignorer_spec.rb +3 -3
  77. data/spec/vcr/request_matcher_registry_spec.rb +88 -61
  78. data/spec/vcr/structs_spec.rb +85 -85
  79. data/spec/vcr/test_frameworks/cucumber_spec.rb +7 -7
  80. data/spec/vcr/test_frameworks/rspec_spec.rb +10 -10
  81. data/spec/vcr/util/hooks_spec.rb +20 -20
  82. data/spec/vcr/util/internet_connection_spec.rb +2 -2
  83. data/spec/vcr_spec.rb +50 -48
  84. data/vcr.gemspec +4 -4
  85. metadata +308 -372
@@ -10,7 +10,7 @@ describe VCR, 'deprecations', :disable_warnings do
10
10
  it 'yields the configuration object' do
11
11
  config_object = nil
12
12
  VCR.config { |c| config_object = c }
13
- config_object.should be(VCR.configuration)
13
+ expect(config_object).to be(VCR.configuration)
14
14
  end
15
15
 
16
16
  it 'prints a deprecation warning' do
@@ -22,7 +22,7 @@ describe VCR, 'deprecations', :disable_warnings do
22
22
 
23
23
  describe "Config" do
24
24
  it 'returns the same object referenced by VCR.configuration' do
25
- VCR::Config.should be(VCR.configuration)
25
+ expect(VCR::Config).to be(VCR.configuration)
26
26
  end
27
27
 
28
28
  it 'prints a deprecation warning' do
@@ -40,7 +40,7 @@ describe VCR, 'deprecations', :disable_warnings do
40
40
 
41
41
  describe "Cassette::MissingERBVariableError" do
42
42
  it 'returns VCR::Errors::MissingERBVariableError' do
43
- VCR::Cassette::MissingERBVariableError.should be(VCR::Errors::MissingERBVariableError)
43
+ expect(VCR::Cassette::MissingERBVariableError).to be(VCR::Errors::MissingERBVariableError)
44
44
  end
45
45
 
46
46
  it 'prints a deprecation warning' do
@@ -17,119 +17,119 @@ module VCR
17
17
  end
18
18
 
19
19
  it 'identifies the request by method and URI' do
20
- message_for(:method => :post, :uri => 'http://foo.com/').should include(
20
+ expect(message_for(:method => :post, :uri => 'http://foo.com/')).to include(
21
21
  'POST http://foo.com/'
22
22
  )
23
23
  end
24
24
 
25
25
  context 'when there is no current cassette' do
26
26
  it 'mentions that there is no current cassette' do
27
- message.should include('There is currently no cassette in use.')
27
+ expect(message).to include('There is currently no cassette in use.')
28
28
  end
29
29
 
30
30
  it 'mentions that the request can be recorded by inserting a cassette' do
31
- message.should match(/record this request and play it back.*VCR.use_cassette/m)
31
+ expect(message).to match(/record this request and play it back.*VCR.use_cassette/m)
32
32
  end
33
33
 
34
34
  it 'mentions the allow_http_connections_when_no_cassette option' do
35
- message.should include('allow_http_connections_when_no_cassette')
35
+ expect(message).to include('allow_http_connections_when_no_cassette')
36
36
  end
37
37
 
38
38
  it 'mentions that the request can be ignored' do
39
- message.should include('set an `ignore_request` callback')
39
+ expect(message).to include('set an `ignore_request` callback')
40
40
  end
41
41
 
42
42
  it 'does not double-insert the asterisks for the bullet points' do
43
- message.should_not match(/\s+\*\s+\*/)
43
+ expect(message).not_to match(/\s+\*\s+\*/)
44
44
  end
45
45
 
46
46
  it 'mentions the debug logging configuration option' do
47
- message.should include('debug_logger')
47
+ expect(message).to include('debug_logger')
48
48
  end
49
49
  end
50
50
 
51
51
  context 'when there is a current cassette' do
52
52
  it 'mentions the details about the current casette' do
53
53
  VCR.use_cassette('example') do
54
- message.should match(/VCR is currently using the following cassette:.+example.yml/m)
54
+ expect(message).to match(/VCR is currently using the following cassette:.+example.yml/m)
55
55
  end
56
56
  end
57
57
 
58
58
  it 'mentions that :new_episodes can be used to record the request' do
59
59
  VCR.use_cassette('example') do
60
- message.should include('use the :new_episodes record mode')
60
+ expect(message).to include('use the :new_episodes record mode')
61
61
  end
62
62
  end
63
63
 
64
64
  it 'mentions that :once does not allow a cassette to be re-recorded' do
65
65
  VCR.use_cassette('example', :record => :once) do
66
- message.should include('(:once) does not allow new requests to be recorded')
66
+ expect(message).to include('(:once) does not allow new requests to be recorded')
67
67
  end
68
68
  end
69
69
 
70
70
  it 'mentions that :none does not allow any recording' do
71
71
  VCR.use_cassette('example', :record => :none) do
72
- message.should include('(:none) does not allow requests to be recorded')
72
+ expect(message).to include('(:none) does not allow requests to be recorded')
73
73
  end
74
74
  end
75
75
 
76
76
  it 'does not mention the :once or :none record modes if using the :new_episodes record mode' do
77
77
  VCR.use_cassette('example', :record => :new_episodes) do
78
- message.should_not include(':once', ':none')
78
+ expect(message).not_to include(':once', ':none')
79
79
  end
80
80
  end
81
81
 
82
82
  it 'mentions :allow_playback_repeats if the current cassette has a used matching interaction' do
83
83
  VCR.use_cassette('example') do |cassette|
84
- cassette.http_interactions.should respond_to(:has_used_interaction_matching?)
84
+ expect(cassette.http_interactions).to respond_to(:has_used_interaction_matching?)
85
85
  cassette.http_interactions.stub(:has_used_interaction_matching? => true)
86
- message.should include('allow_playback_repeats')
86
+ expect(message).to include('allow_playback_repeats')
87
87
  end
88
88
  end
89
89
 
90
90
  it 'does not mention :allow_playback_repeats if the current cassette does not have a used matching interaction' do
91
91
  VCR.use_cassette('example') do |cassette|
92
- cassette.http_interactions.should respond_to(:has_used_interaction_matching?)
92
+ expect(cassette.http_interactions).to respond_to(:has_used_interaction_matching?)
93
93
  cassette.http_interactions.stub(:has_used_interaction_matching? => false)
94
- message.should_not include('allow_playback_repeats')
94
+ expect(message).not_to include('allow_playback_repeats')
95
95
  end
96
96
  end
97
97
 
98
98
  it 'does not mention using a different :match_requests_on option when there are no remaining unused interactions' do
99
99
  VCR.use_cassette('example') do |cassette|
100
- cassette.http_interactions.should respond_to(:remaining_unused_interaction_count)
100
+ expect(cassette.http_interactions).to respond_to(:remaining_unused_interaction_count)
101
101
  cassette.http_interactions.stub(:remaining_unused_interaction_count => 0)
102
- message.should_not include('match_requests_on cassette option')
102
+ expect(message).not_to include('match_requests_on cassette option')
103
103
  end
104
104
  end
105
105
 
106
106
  it 'mentions using a different :match_requests_on option when there are some remaining unused interactions' do
107
107
  VCR.use_cassette('example') do |cassette|
108
- cassette.http_interactions.should respond_to(:remaining_unused_interaction_count)
108
+ expect(cassette.http_interactions).to respond_to(:remaining_unused_interaction_count)
109
109
  cassette.http_interactions.stub(:remaining_unused_interaction_count => 1)
110
- message.should include('match_requests_on cassette option')
110
+ expect(message).to include('match_requests_on cassette option')
111
111
  end
112
112
  end
113
113
 
114
114
  it 'uses the singular (HTTP interaction) when there is only 1 left' do
115
115
  VCR.use_cassette('example') do |cassette|
116
- cassette.http_interactions.should respond_to(:remaining_unused_interaction_count)
116
+ expect(cassette.http_interactions).to respond_to(:remaining_unused_interaction_count)
117
117
  cassette.http_interactions.stub(:remaining_unused_interaction_count => 1)
118
- message.should include('1 HTTP interaction ')
118
+ expect(message).to include('1 HTTP interaction ')
119
119
  end
120
120
  end
121
121
 
122
122
  it 'uses the plural (HTTP interactions) when there is more than 1 left' do
123
123
  VCR.use_cassette('example') do |cassette|
124
- cassette.http_interactions.should respond_to(:remaining_unused_interaction_count)
124
+ expect(cassette.http_interactions).to respond_to(:remaining_unused_interaction_count)
125
125
  cassette.http_interactions.stub(:remaining_unused_interaction_count => 2)
126
- message.should include('2 HTTP interactions ')
126
+ expect(message).to include('2 HTTP interactions ')
127
127
  end
128
128
  end
129
129
 
130
130
  it 'mentions the debug logging configuration option' do
131
131
  VCR.use_cassette('example', :record => :new_episodes) do
132
- message.should include('debug_logger')
132
+ expect(message).to include('debug_logger')
133
133
  end
134
134
  end
135
135
  end
@@ -3,24 +3,24 @@ require 'spec_helper'
3
3
  describe VCR::Net::HTTPResponse do
4
4
  def self.it_allows_the_body_to_be_read(expected_regex)
5
5
  it 'allows the body to be read using #body' do
6
- response.body.to_s.should =~ expected_regex
6
+ expect(response.body.to_s).to match expected_regex
7
7
  end
8
8
 
9
9
  it 'allows the body to be read using #read_body' do
10
- response.read_body.to_s.should =~ expected_regex
10
+ expect(response.read_body.to_s).to match expected_regex
11
11
  end
12
12
 
13
13
  it 'allows the body to be read using #read_body with a block' do
14
14
  yielded_body = ''
15
15
  response { |r| r.read_body { |s| yielded_body << s.to_s } }
16
- yielded_body.should =~ expected_regex
16
+ expect(yielded_body).to match expected_regex
17
17
  end
18
18
 
19
19
  it 'allows the body to be read by passing a destination string to #read_body' do
20
20
  dest = ''
21
21
  ret_val = response { |r| r.read_body(dest) }.body
22
- dest.to_s.should =~ expected_regex
23
- ret_val.to_s.should eq(dest)
22
+ expect(dest.to_s).to match expected_regex
23
+ expect(ret_val.to_s).to eq(dest)
24
24
  end
25
25
 
26
26
  it 'raises an ArgumentError if both a destination string and a block is given to #read_body' do
@@ -53,8 +53,8 @@ describe VCR::Net::HTTPResponse do
53
53
  @response ||= begin
54
54
  http = Net::HTTP.new('localhost', VCR::SinatraApp.port)
55
55
  res = http.send(http_verb_method, '/', &block)
56
- res.should_not be_a(VCR::Net::HTTPResponse)
57
- res.should_not be_a(::Net::WebMockHTTPResponse)
56
+ expect(res).not_to be_a(VCR::Net::HTTPResponse)
57
+ expect(res).not_to be_a(::Net::WebMockHTTPResponse)
58
58
  res
59
59
  end
60
60
  end
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'support/shared_example_groups/excon'
2
3
 
3
4
  describe "Excon hook", :with_monkey_patches => :excon do
4
5
  # TODO: figure out a way to get disabling VCR to work with Excon
@@ -20,68 +21,12 @@ describe "Excon hook", :with_monkey_patches => :excon do
20
21
  end
21
22
  end
22
23
 
23
- recorded.should eq(played_back)
24
- recorded.should eq('query: Tolkien')
24
+ expect(recorded).to eq(played_back)
25
+ expect(recorded).to eq('query: Tolkien')
25
26
  end
26
27
  end
27
28
 
28
- context 'when the request overrides the connection params' do
29
- let!(:excon) { ::Excon.new("http://localhost:#{VCR::SinatraApp.port}/") }
30
-
31
- def deep_dup(hash)
32
- Marshal.load(Marshal.dump hash)
33
- end
34
-
35
- def intercept_request(&interception)
36
- orig_new = ::Excon::Connection.method(:new)
37
-
38
- ::Excon::Connection.stub(:new) do |*args1|
39
- orig_new.call(*args1).tap do |inst|
40
-
41
- meth = inst.method(:request)
42
- inst.stub(:request) do |*args2|
43
- interception.call(inst, *args2)
44
- meth.call(*args2)
45
- end
46
- end
47
- end
48
- end
49
-
50
- it 'runs the real request with the same connection params' do
51
- connection_params_1 = deep_dup(excon.connection)
52
- connection_params_2 = nil
53
-
54
- intercept_request do |instance, *args|
55
- connection_params_2 = deep_dup(instance.connection)
56
- end
57
-
58
- VCR.use_cassette("excon") do
59
- excon.request(:method => :get, :path => '/foo')
60
- end
61
-
62
- connection_params_2.should eq(connection_params_1)
63
- end
64
- end
65
-
66
- context "when Excon's streaming API is used" do
67
- it 'properly records and plays back the response' do
68
- VCR.stub(:real_http_connections_allowed? => true)
69
- recorded, played_back = [1, 2].map do
70
- chunks = []
71
-
72
- VCR.use_cassette('excon_streaming', :record => :once) do
73
- Excon.get "http://localhost:#{VCR::SinatraApp.port}/foo", :response_block => lambda { |chunk, remaining_bytes, total_bytes|
74
- chunks << chunk
75
- }
76
- end
77
-
78
- chunks.join
79
- end
80
-
81
- recorded.should eq(played_back)
82
- recorded.should eq("FOO!")
83
- end
84
- end
29
+ include_examples "Excon streaming"
85
30
 
86
31
  context 'when Excon raises an error due to an unexpected response status' do
87
32
  before(:each) do
@@ -90,7 +35,7 @@ describe "Excon hook", :with_monkey_patches => :excon do
90
35
 
91
36
  it 'still records properly' do
92
37
  VCR.should_receive(:record_http_interaction) do |interaction|
93
- interaction.response.status.code.should eq(404)
38
+ expect(interaction.response.status.code).to eq(404)
94
39
  end
95
40
 
96
41
  expect {
@@ -98,29 +43,6 @@ describe "Excon hook", :with_monkey_patches => :excon do
98
43
  }.to raise_error(Excon::Errors::Error)
99
44
  end
100
45
 
101
- it 'performs the right number of retries' do
102
- connection = Excon.new("http://localhost:#{VCR::SinatraApp.port}/not_found")
103
-
104
- Excon::Connection.stub(:new => connection)
105
-
106
- connection.extend Module.new {
107
- def request_kernel_call_counts
108
- @request_kernel_call_counts ||= Hash.new(0)
109
- end
110
-
111
- def request_kernel(params, &block)
112
- request_kernel_call_counts[params[:mock]] += 1
113
- super
114
- end
115
- }
116
-
117
- expect {
118
- connection.get(:expects => 200, :idempotent => true, :retry_limit => 3)
119
- }.to raise_error(Excon::Errors::Error)
120
-
121
- connection.request_kernel_call_counts.should eq(true => 3, false => 3)
122
- end
123
-
124
46
  def error_raised_by
125
47
  yield
126
48
  rescue => e
@@ -138,7 +60,7 @@ describe "Excon hook", :with_monkey_patches => :excon do
138
60
  end
139
61
  end
140
62
 
141
- stubbed_error.class.should be(real_error.class)
63
+ expect(stubbed_error.class).to be(real_error.class)
142
64
  end
143
65
 
144
66
  it_behaves_like "request hooks", :excon, :recordable do
@@ -153,7 +75,7 @@ describe "Excon hook", :with_monkey_patches => :excon do
153
75
 
154
76
  describe "VCR.configuration.after_library_hooks_loaded hook" do
155
77
  it 'disables the webmock excon adapter so it does not conflict with our typhoeus hook' do
156
- ::WebMock::HttpLibAdapters::ExconAdapter.should respond_to(:disable!)
78
+ expect(::WebMock::HttpLibAdapters::ExconAdapter).to respond_to(:disable!)
157
79
  ::WebMock::HttpLibAdapters::ExconAdapter.should_receive(:disable!)
158
80
  $excon_after_loaded_hook.conditionally_invoke
159
81
  end
@@ -27,7 +27,7 @@ describe "FakeWeb hook", :with_monkey_patches => :fakeweb do
27
27
 
28
28
  it 'records the request body when using #post_form' do
29
29
  VCR.should_receive(:record_http_interaction) do |interaction|
30
- interaction.request.body.should eq("q=ruby")
30
+ expect(interaction.request.body).to eq("q=ruby")
31
31
  end
32
32
 
33
33
  uri = URI("http://localhost:#{VCR::SinatraApp.port}/foo")
@@ -36,16 +36,16 @@ describe "FakeWeb hook", :with_monkey_patches => :fakeweb do
36
36
 
37
37
  it "does not record headers for which Net::HTTP sets defaults near the end of the real request" do
38
38
  VCR.should_receive(:record_http_interaction) do |interaction|
39
- interaction.request.headers.should_not have_key('content-type')
40
- interaction.request.headers.should_not have_key('host')
39
+ expect(interaction.request.headers).not_to have_key('content-type')
40
+ expect(interaction.request.headers).not_to have_key('host')
41
41
  end
42
42
  Net::HTTP.new('localhost', VCR::SinatraApp.port).send_request('POST', '/', '', { 'x-http-user' => 'me' })
43
43
  end
44
44
 
45
45
  it "records headers for which Net::HTTP usually sets defaults when the user manually sets their values" do
46
46
  VCR.should_receive(:record_http_interaction) do |interaction|
47
- interaction.request.headers['content-type'].should eq(['foo/bar'])
48
- interaction.request.headers['host'].should eq(['my-example.com'])
47
+ expect(interaction.request.headers['content-type']).to eq(['foo/bar'])
48
+ expect(interaction.request.headers['host']).to eq(['my-example.com'])
49
49
  end
50
50
  Net::HTTP.new('localhost', VCR::SinatraApp.port).send_request('POST', '/', '', { 'Content-Type' => 'foo/bar', 'Host' => 'my-example.com' })
51
51
  end
@@ -58,7 +58,7 @@ describe "FakeWeb hook", :with_monkey_patches => :fakeweb do
58
58
 
59
59
  it 'records the interaction when Net::HTTP#request is called with a block with a return statement' do
60
60
  VCR.should_receive(:record_http_interaction).once
61
- perform_get_with_returning_block.body.should eq("GET to root")
61
+ expect(perform_get_with_returning_block.body).to eq("GET to root")
62
62
  end
63
63
 
64
64
  def make_post_request
@@ -74,17 +74,17 @@ describe "FakeWeb hook", :with_monkey_patches => :fakeweb do
74
74
  recorded_body = nil
75
75
  VCR.use_cassette("new_cassette", :record => :once) do
76
76
  recorded_body = make_post_request.body
77
- recorded_body.should match(/Response \d+/)
77
+ expect(recorded_body).to match(/Response \d+/)
78
78
  end
79
79
 
80
80
  VCR.use_cassette("new_cassette", :record => :once) do
81
- make_post_request.body.should eq(recorded_body)
81
+ expect(make_post_request.body).to eq(recorded_body)
82
82
  end
83
83
 
84
84
  VCR.configuration.ignore_request { |r| true }
85
85
  ignored_body = make_post_request.body
86
- ignored_body.should_not eq(recorded_body)
87
- ignored_body.should match(/Response \d+/)
86
+ expect(ignored_body).not_to eq(recorded_body)
87
+ expect(ignored_body).to match(/Response \d+/)
88
88
  end
89
89
 
90
90
  context 'when the same Net::HTTP request object is used twice' do
@@ -110,7 +110,9 @@ describe "FakeWeb hook", :with_monkey_patches => :fakeweb do
110
110
  let(:run_hook) { $fakeweb_after_loaded_hook.conditionally_invoke }
111
111
 
112
112
  context 'when WebMock has been loaded' do
113
- before(:each) { defined?(WebMock).should be_true }
113
+ before(:each) do
114
+ expect(defined?(WebMock)).to be_true
115
+ end
114
116
 
115
117
  it 'raises an error since FakeWeb and WebMock cannot both be used simultaneously' do
116
118
  expect { run_hook }.to raise_error(ArgumentError, /cannot use both/)
@@ -141,7 +143,7 @@ describe "FakeWeb hook", :with_monkey_patches => :fakeweb do
141
143
  it_behaves_like "request hooks", :fakeweb, :ignored do
142
144
  undef assert_expected_response
143
145
  def assert_expected_response(response)
144
- response.should be_nil
146
+ expect(response).to be_nil
145
147
  end
146
148
 
147
149
  undef make_request
@@ -161,7 +163,7 @@ describe "FakeWeb hook", :with_monkey_patches => :fakeweb do
161
163
  VCR.turn_off!
162
164
 
163
165
  uri = URI("http://localhost:#{VCR::SinatraApp.port}/foo")
164
- Net::HTTP.get(uri).should eq("FOO!")
166
+ expect(Net::HTTP.get(uri)).to eq("FOO!")
165
167
  end
166
168
  end
167
169
  end
@@ -10,7 +10,7 @@ describe "Faraday hook" do
10
10
  end
11
11
 
12
12
  conn.builder.lock!
13
- conn.builder.handlers.last(2).map(&:klass).should eq([
13
+ expect(conn.builder.handlers.last(2).map(&:klass)).to eq([
14
14
  VCR::Middleware::Faraday,
15
15
  Faraday::Adapter::NetHttp
16
16
  ])
@@ -20,7 +20,7 @@ describe "Faraday hook" do
20
20
  conn = Faraday.new
21
21
 
22
22
  conn.builder.lock!
23
- conn.builder.handlers.last(2).map(&:klass).should eq([
23
+ expect(conn.builder.handlers.last(2).map(&:klass)).to eq([
24
24
  VCR::Middleware::Faraday,
25
25
  Faraday::Adapter::NetHttp
26
26
  ])
@@ -34,7 +34,7 @@ describe "Faraday hook" do
34
34
  end
35
35
 
36
36
  conn.builder.lock!
37
- conn.builder.handlers.map(&:klass).should eq([
37
+ expect(conn.builder.handlers.map(&:klass)).to eq([
38
38
  VCR::Middleware::Faraday,
39
39
  Faraday::Response::Logger,
40
40
  Faraday::Adapter::NetHttp
@@ -58,7 +58,7 @@ describe "Faraday hook" do
58
58
  end
59
59
 
60
60
  conn.builder.lock!
61
- conn.builder.handlers.map(&:klass).should eq([
61
+ expect(conn.builder.handlers.map(&:klass)).to eq([
62
62
  Faraday::Request::UrlEncoded,
63
63
  Faraday::Response::Logger,
64
64
  VCR::Middleware::Faraday