vcr 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
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