vcr 2.3.0 → 2.4.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/.gitignore +5 -2
- data/.travis.yml +3 -1
- data/Appraisals +0 -4
- data/CHANGELOG.md +90 -54
- data/Gemfile +6 -6
- data/{gemfiles/typhoeus-new.gemfile.lock → Gemfile.lock} +34 -37
- data/LICENSE +1 -1
- data/README.md +14 -7
- data/Rakefile +8 -6
- data/cucumber.yml +10 -7
- data/features/.nav +3 -0
- data/features/configuration/preserve_exact_body_bytes.feature +2 -2
- data/features/configuration/query_parser.feature +84 -0
- data/features/configuration/uri_parser.feature +1 -1
- data/features/hooks/around_http_request.feature +1 -1
- data/features/request_matching/README.md +2 -0
- data/features/request_matching/query.feature +97 -0
- data/gemfiles/{typhoeus-old.gemfile → typhoeus_old.gemfile} +1 -3
- data/gemfiles/{typhoeus-old.gemfile.lock → typhoeus_old.gemfile.lock} +25 -17
- data/lib/vcr.rb +5 -1
- data/lib/vcr/configuration.rb +20 -0
- data/lib/vcr/deprecations.rb +62 -1
- data/lib/vcr/errors.rb +9 -9
- data/lib/vcr/library_hooks/fakeweb.rb +1 -0
- data/lib/vcr/library_hooks/typhoeus.rb +1 -0
- data/lib/vcr/library_hooks/webmock.rb +1 -1
- data/lib/vcr/request_matcher_registry.rb +8 -1
- data/lib/vcr/structs.rb +2 -2
- data/lib/vcr/test_frameworks/rspec.rb +0 -56
- data/lib/vcr/version.rb +1 -1
- data/script/ci.sh +2 -2
- data/spec/monkey_patches.rb +1 -1
- data/spec/spec_helper.rb +12 -13
- data/spec/support/http_library_adapters.rb +9 -1
- data/spec/vcr/deprecations_spec.rb +11 -9
- data/spec/vcr/library_hooks/fakeweb_spec.rb +5 -0
- data/spec/vcr/library_hooks/typhoeus_spec.rb +55 -0
- data/spec/vcr/request_matcher_registry_spec.rb +39 -0
- data/vcr.gemspec +4 -3
- metadata +79 -85
- data/gemfiles/typhoeus-new.gemfile +0 -18
@@ -2,7 +2,7 @@ require 'vcr/util/version_checker'
|
|
2
2
|
require 'vcr/request_handler'
|
3
3
|
require 'webmock'
|
4
4
|
|
5
|
-
VCR::VersionChecker.new('WebMock', WebMock.version, '1.8.0', '1.
|
5
|
+
VCR::VersionChecker.new('WebMock', WebMock.version, '1.8.0', '1.9').check_version!
|
6
6
|
|
7
7
|
module VCR
|
8
8
|
class LibraryHooks
|
@@ -19,7 +19,7 @@ module VCR
|
|
19
19
|
class URIWithoutParamsMatcher < Struct.new(:params_to_ignore)
|
20
20
|
def partial_uri_from(request)
|
21
21
|
request.parsed_uri.tap do |uri|
|
22
|
-
return
|
22
|
+
return uri unless uri.query # ignore uris without params, e.g. "http://example.com/"
|
23
23
|
|
24
24
|
uri.query = uri.query.split('&').tap { |params|
|
25
25
|
params.map! do |p|
|
@@ -31,6 +31,8 @@ module VCR
|
|
31
31
|
params.reject! { |p| params_to_ignore.include?(p.first) }
|
32
32
|
params.map! { |p| p.join('=') }
|
33
33
|
}.join('&')
|
34
|
+
|
35
|
+
uri.query = nil if uri.query.empty?
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
@@ -118,6 +120,11 @@ module VCR
|
|
118
120
|
register(:path) do |r1, r2|
|
119
121
|
r1.parsed_uri.path == r2.parsed_uri.path
|
120
122
|
end
|
123
|
+
|
124
|
+
register(:query) do |r1, r2|
|
125
|
+
VCR.configuration.query_parser.call(r1.parsed_uri.query.to_s) ==
|
126
|
+
VCR.configuration.query_parser.call(r2.parsed_uri.query.to_s)
|
127
|
+
end
|
121
128
|
end
|
122
129
|
end
|
123
130
|
end
|
data/lib/vcr/structs.rb
CHANGED
@@ -1,62 +1,6 @@
|
|
1
1
|
module VCR
|
2
2
|
# Integrates VCR with RSpec.
|
3
3
|
module RSpec
|
4
|
-
|
5
|
-
# Contains macro methods to assist with VCR usage. These methods are
|
6
|
-
# intended to be used directly in an RSpec example group. To make these
|
7
|
-
# available in your RSpec example groups, extend the module in an individual
|
8
|
-
# example group, or configure RSpec to extend the module in all example groups.
|
9
|
-
#
|
10
|
-
# @example
|
11
|
-
# RSpec.configure do |c|
|
12
|
-
# c.extend VCR::RSpec::Macros
|
13
|
-
# end
|
14
|
-
#
|
15
|
-
module Macros
|
16
|
-
|
17
|
-
# Sets up a `before` and `after` hook that will insert and eject a
|
18
|
-
# cassette, respectively.
|
19
|
-
#
|
20
|
-
# @example
|
21
|
-
# describe "Some API Client" do
|
22
|
-
# use_vcr_cassette "some_api", :record => :new_episodes
|
23
|
-
# end
|
24
|
-
#
|
25
|
-
# @param [(optional) String] name the cassette name; it will be inferred by the example
|
26
|
-
# group descriptions if not given.
|
27
|
-
# @param [(optional) Hash] options the cassette options
|
28
|
-
def use_vcr_cassette(*args)
|
29
|
-
options = args.last.is_a?(Hash) ? args.pop : {}
|
30
|
-
name = args.first || infer_cassette_name
|
31
|
-
|
32
|
-
before(:each) do
|
33
|
-
VCR.insert_cassette(name, options)
|
34
|
-
end
|
35
|
-
|
36
|
-
after(:each) do
|
37
|
-
VCR.eject_cassette
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
def infer_cassette_name
|
44
|
-
# RSpec 1 exposes #description_parts; use that if its available
|
45
|
-
return description_parts.join("/") if respond_to?(:description_parts)
|
46
|
-
|
47
|
-
# Otherwise use RSpec 2 metadata...
|
48
|
-
group_descriptions = []
|
49
|
-
klass = self
|
50
|
-
|
51
|
-
while klass.respond_to?(:metadata) && klass.metadata
|
52
|
-
group_descriptions << klass.metadata[:example_group][:description]
|
53
|
-
klass = klass.superclass
|
54
|
-
end
|
55
|
-
|
56
|
-
group_descriptions.compact.reverse.join('/')
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
4
|
# @private
|
61
5
|
module Metadata
|
62
6
|
extend self
|
data/lib/vcr/version.rb
CHANGED
data/script/ci.sh
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
set -e -x
|
3
3
|
|
4
4
|
echo "-------- Running Typhoeus 0.4 Specs ---------"
|
5
|
-
bundle install --gemfile=gemfiles/
|
6
|
-
BUNDLE_GEMFILE=gemfiles/
|
5
|
+
bundle install --gemfile=gemfiles/typhoeus_old.gemfile --without extras
|
6
|
+
BUNDLE_GEMFILE=gemfiles/typhoeus_old.gemfile bundle exec rspec spec/vcr/library_hooks/typhoeus_0.4_spec.rb --format progress --backtrace
|
7
7
|
|
8
8
|
# Setup vendored rspec-1
|
9
9
|
git submodule init
|
data/spec/monkey_patches.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -6,6 +6,8 @@ if RUBY_VERSION =~ /1.9/ && RUBY_ENGINE == 'ruby'
|
|
6
6
|
SimpleCov.start do
|
7
7
|
add_filter "/spec"
|
8
8
|
add_filter "/features"
|
9
|
+
add_filter "/bin"
|
10
|
+
add_filter "/bundle"
|
9
11
|
|
10
12
|
# internet_connection mostly contains logic copied from the ruby 1.8.7
|
11
13
|
# stdlib for which I haven't written tests.
|
@@ -21,25 +23,22 @@ if RUBY_VERSION =~ /1.9/ && RUBY_ENGINE == 'ruby'
|
|
21
23
|
end
|
22
24
|
|
23
25
|
using_git = File.exist?(File.expand_path('../../.git/', __FILE__))
|
24
|
-
if using_git
|
25
|
-
require 'bundler'
|
26
|
-
Bundler.setup
|
27
|
-
end
|
26
|
+
require 'bundler/setup' if using_git
|
28
27
|
|
29
28
|
require 'rspec'
|
30
29
|
|
31
|
-
require "support/fixnum_extension
|
32
|
-
require "support/limited_uri
|
33
|
-
require "support/
|
34
|
-
require "support/
|
35
|
-
require "support/shared_example_groups/
|
36
|
-
require "support/
|
37
|
-
require "support/
|
38
|
-
require "support/
|
39
|
-
require "support/vcr_stub_helpers.rb"
|
30
|
+
require "support/fixnum_extension"
|
31
|
+
require "support/limited_uri"
|
32
|
+
require "support/ruby_interpreter"
|
33
|
+
require "support/shared_example_groups/hook_into_http_library"
|
34
|
+
require "support/shared_example_groups/request_hooks"
|
35
|
+
require "support/sinatra_app"
|
36
|
+
require "support/vcr_localhost_server"
|
37
|
+
require "support/vcr_stub_helpers"
|
40
38
|
|
41
39
|
require 'vcr'
|
42
40
|
require 'monkey_patches'
|
41
|
+
require "support/http_library_adapters"
|
43
42
|
|
44
43
|
module VCR
|
45
44
|
SPEC_ROOT = File.dirname(__FILE__)
|
@@ -160,7 +160,15 @@ HTTP_LIBRARY_ADAPTERS['typhoeus'] = Module.new do
|
|
160
160
|
alias get_body_object get_body_string
|
161
161
|
|
162
162
|
def get_header(header_key, response)
|
163
|
-
|
163
|
+
# Due to https://github.com/typhoeus/typhoeus/commit/256c95473d5d40d7ec2f5db603687323ddd73689
|
164
|
+
# headers are now downcased.
|
165
|
+
# ...except when they're not. I'm not 100% why (I haven't had time to dig into it yet)
|
166
|
+
# but in some situations the headers aren't downcased. I think it has to do with playback; VCR
|
167
|
+
# isn't sending the headers in downcased to typhoeus. It gets complicated with the interaction
|
168
|
+
# w/ WebMock, and the fact that webmock normalizes headers in a different fashion.
|
169
|
+
#
|
170
|
+
# For now this hack works.
|
171
|
+
response.headers.fetch(header_key.downcase) { response.headers[header_key] }
|
164
172
|
end
|
165
173
|
|
166
174
|
def make_http_request(method, url, body = nil, headers = {})
|
@@ -14,8 +14,7 @@ describe VCR, 'deprecations', :disable_warnings do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'prints a deprecation warning' do
|
17
|
-
VCR.should_receive(:warn).with
|
18
|
-
"WARNING: `VCR.config` is deprecated. Use VCR.configure instead."
|
17
|
+
VCR.should_receive(:warn).with(/VCR.config.*deprecated/i)
|
19
18
|
|
20
19
|
VCR.config { }
|
21
20
|
end
|
@@ -27,8 +26,7 @@ describe VCR, 'deprecations', :disable_warnings do
|
|
27
26
|
end
|
28
27
|
|
29
28
|
it 'prints a deprecation warning' do
|
30
|
-
VCR.should_receive(:warn).with
|
31
|
-
"WARNING: `VCR::Config` is deprecated. Use VCR.configuration instead."
|
29
|
+
VCR.should_receive(:warn).with(/VCR::Config.*deprecated/i)
|
32
30
|
|
33
31
|
VCR::Config
|
34
32
|
end
|
@@ -46,8 +44,7 @@ describe VCR, 'deprecations', :disable_warnings do
|
|
46
44
|
end
|
47
45
|
|
48
46
|
it 'prints a deprecation warning' do
|
49
|
-
VCR::Cassette.should_receive(:warn).with
|
50
|
-
"WARNING: `VCR::Cassette::MissingERBVariableError` is deprecated. Use `VCR::Errors::MissingERBVariableError` instead."
|
47
|
+
VCR::Cassette.should_receive(:warn).with(/VCR::Cassette::MissingERBVariableError.*deprecated/i)
|
51
48
|
|
52
49
|
VCR::Cassette::MissingERBVariableError
|
53
50
|
end
|
@@ -66,9 +63,7 @@ describe VCR, 'deprecations', :disable_warnings do
|
|
66
63
|
end
|
67
64
|
|
68
65
|
it 'prints a deprecation warning' do
|
69
|
-
VCR.configuration.should_receive(:warn).with
|
70
|
-
"WARNING: `VCR.config { |c| c.stub_with ... }` is deprecated. Use `VCR.configure { |c| c.hook_into ... }` instead."
|
71
|
-
|
66
|
+
VCR.configuration.should_receive(:warn).with(/stub_with.*deprecated/i)
|
72
67
|
VCR.configure { |c| c.stub_with :fakeweb, :excon }
|
73
68
|
end
|
74
69
|
end
|
@@ -79,5 +74,12 @@ describe VCR, 'deprecations', :disable_warnings do
|
|
79
74
|
VCR::Middleware::Faraday.new(stub) { }
|
80
75
|
end
|
81
76
|
end
|
77
|
+
|
78
|
+
describe "VCR::RSpec::Macros" do
|
79
|
+
it 'prints a deprecation warning' do
|
80
|
+
Kernel.should_receive(:warn).with(/VCR::RSpec::Macros is deprecated/)
|
81
|
+
Class.new.extend(VCR::RSpec::Macros)
|
82
|
+
end
|
83
|
+
end
|
82
84
|
end
|
83
85
|
|
@@ -125,6 +125,11 @@ describe "FakeWeb hook", :with_monkey_patches => :fakeweb do
|
|
125
125
|
it 'does not raise an error' do
|
126
126
|
run_hook # should not raise an error
|
127
127
|
end
|
128
|
+
|
129
|
+
it "warns about FakeWeb deprecation" do
|
130
|
+
::Kernel.should_receive(:warn).with("WARNING: VCR's FakeWeb integration is deprecated and will be removed in VCR 3.0.")
|
131
|
+
run_hook
|
132
|
+
end
|
128
133
|
end
|
129
134
|
end
|
130
135
|
|
@@ -27,5 +27,60 @@ describe "Typhoeus hook", :with_monkey_patches => :typhoeus do
|
|
27
27
|
$typhoeus_after_loaded_hook.conditionally_invoke
|
28
28
|
end
|
29
29
|
end
|
30
|
+
|
31
|
+
context 'when there are nested hydra queues' do
|
32
|
+
def make_requests
|
33
|
+
VCR.use_cassette("nested") do
|
34
|
+
response_1 = response_2 = nil
|
35
|
+
|
36
|
+
hydra = Typhoeus::Hydra.new
|
37
|
+
request = Typhoeus::Request.new("http://localhost:#{VCR::SinatraApp.port}/")
|
38
|
+
|
39
|
+
request.on_success do |r1|
|
40
|
+
response_1 = r1
|
41
|
+
|
42
|
+
nested = Typhoeus::Request.new("http://localhost:#{VCR::SinatraApp.port}/foo")
|
43
|
+
nested.on_success { |r2| response_2 = r2 }
|
44
|
+
|
45
|
+
hydra.queue(nested)
|
46
|
+
end
|
47
|
+
|
48
|
+
hydra.queue(request)
|
49
|
+
hydra.run
|
50
|
+
|
51
|
+
return body_for(response_1), body_for(response_2)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def body_for(response)
|
56
|
+
return :no_response if response.nil?
|
57
|
+
response.body
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'records and plays back properly' do
|
61
|
+
recorded = make_requests
|
62
|
+
played_back = make_requests
|
63
|
+
|
64
|
+
played_back.should eq(recorded)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context '#effective_url' do
|
69
|
+
def make_single_request
|
70
|
+
VCR.use_cassette('single') do
|
71
|
+
response = Typhoeus::Request.new("http://localhost:#{VCR::SinatraApp.port}/").run
|
72
|
+
|
73
|
+
response.effective_url
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'recorded and played back properly' do
|
78
|
+
recorded = make_single_request
|
79
|
+
played_back = make_single_request
|
80
|
+
recorded.should_not be_nil
|
81
|
+
|
82
|
+
played_back.should eq(recorded)
|
83
|
+
end
|
84
|
+
end
|
30
85
|
end
|
31
86
|
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'vcr/request_matcher_registry'
|
2
2
|
require 'vcr/structs'
|
3
3
|
require 'support/limited_uri'
|
4
|
+
require 'cgi'
|
4
5
|
|
5
6
|
module VCR
|
6
7
|
describe RequestMatcherRegistry do
|
7
8
|
before { VCR.stub_chain(:configuration, :uri_parser) { LimitedURI } }
|
9
|
+
before { VCR.stub_chain(:configuration, :query_parser) { CGI.method(:parse) } }
|
8
10
|
|
9
11
|
def request_with(values)
|
10
12
|
VCR::Request.new.tap do |request|
|
@@ -143,6 +145,13 @@ module VCR
|
|
143
145
|
request_with(:uri => 'http://example.com/bar')
|
144
146
|
).should be_false
|
145
147
|
end
|
148
|
+
|
149
|
+
it 'matches a second request when all parameters are filtered' do
|
150
|
+
subject[subject.send(meth, :q, :oq)].matches?(
|
151
|
+
request_with(:uri => 'http://example.com/search'),
|
152
|
+
request_with(:uri => 'http://example.com/search?q=vcr&oq=vcr')
|
153
|
+
).should be_true
|
154
|
+
end
|
146
155
|
end
|
147
156
|
end
|
148
157
|
|
@@ -242,6 +251,36 @@ module VCR
|
|
242
251
|
).should be_false
|
243
252
|
end
|
244
253
|
end
|
254
|
+
|
255
|
+
describe ":query" do
|
256
|
+
it 'matches when it is identical' do
|
257
|
+
subject[:query].matches?(
|
258
|
+
request_with(:uri => 'http://foo.com/bar?a=8'),
|
259
|
+
request_with(:uri => 'http://goo.com/car?a=8')
|
260
|
+
).should be_true
|
261
|
+
end
|
262
|
+
|
263
|
+
it 'matches when empty' do
|
264
|
+
subject[:query].matches?(
|
265
|
+
request_with(:uri => 'http://foo.com/bar'),
|
266
|
+
request_with(:uri => 'http://goo.com/car')
|
267
|
+
).should be_true
|
268
|
+
end
|
269
|
+
|
270
|
+
it 'matches when parameters are reordered' do
|
271
|
+
subject[:query].matches?(
|
272
|
+
request_with(:uri => 'http://foo.com/bar?a=8&b=9'),
|
273
|
+
request_with(:uri => 'http://goo.com/car?b=9&a=8')
|
274
|
+
).should be_true
|
275
|
+
end
|
276
|
+
|
277
|
+
it 'does not match when it is not the same' do
|
278
|
+
subject[:query].matches?(
|
279
|
+
request_with(:uri => 'http://foo.com/bar?a=8'),
|
280
|
+
request_with(:uri => 'http://goo.com/car?b=8')
|
281
|
+
).should be_false
|
282
|
+
end
|
283
|
+
end
|
245
284
|
end
|
246
285
|
end
|
247
286
|
end
|
data/vcr.gemspec
CHANGED
@@ -3,7 +3,8 @@ require "vcr/version"
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "vcr"
|
6
|
-
s.homepage = "http://github.com/
|
6
|
+
s.homepage = "http://github.com/vcr/vcr"
|
7
|
+
s.license = "MIT"
|
7
8
|
s.authors = ["Myron Marston"]
|
8
9
|
s.summary = "Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests."
|
9
10
|
s.description = "VCR provides a simple API to record and replay your test suite's HTTP interactions. It works with a variety of HTTP client libraries, HTTP stubbing libraries and testing frameworks."
|
@@ -27,7 +28,7 @@ Gem::Specification.new do |s|
|
|
27
28
|
s.add_development_dependency 'shoulda', '~> 2.9.2'
|
28
29
|
|
29
30
|
s.add_development_dependency 'fakeweb', '~> 1.3.0'
|
30
|
-
s.add_development_dependency 'webmock', '~> 1.
|
31
|
+
s.add_development_dependency 'webmock', '~> 1.9'
|
31
32
|
|
32
33
|
s.add_development_dependency 'faraday', '~> 0.8'
|
33
34
|
s.add_development_dependency 'httpclient', '~> 2.2'
|
@@ -40,12 +41,12 @@ Gem::Specification.new do |s|
|
|
40
41
|
s.add_development_dependency 'json', '~> 1.6.5'
|
41
42
|
s.add_development_dependency 'simplecov', '~> 0.5.3'
|
42
43
|
s.add_development_dependency 'redis', '~> 2.2.2'
|
44
|
+
s.add_development_dependency 'typhoeus', '~> 0.5.3'
|
43
45
|
|
44
46
|
unless RUBY_PLATFORM == 'java'
|
45
47
|
s.add_development_dependency 'patron', '~> 0.4.15'
|
46
48
|
s.add_development_dependency 'em-http-request', '~> 1.0.2'
|
47
49
|
s.add_development_dependency 'curb', '~> 0.8.0'
|
48
|
-
s.add_development_dependency 'typhoeus', '>= 0.3.3', '< 0.5.0'
|
49
50
|
s.add_development_dependency 'yajl-ruby', '~> 1.1.0'
|
50
51
|
end
|
51
52
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vcr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
-
-
|
8
|
+
- 4
|
9
9
|
- 0
|
10
|
-
version: 2.
|
10
|
+
version: 2.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Myron Marston
|
@@ -15,10 +15,9 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-01-05 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
name: bundler
|
22
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
22
|
none: false
|
24
23
|
requirements:
|
@@ -30,11 +29,11 @@ dependencies:
|
|
30
29
|
- 0
|
31
30
|
- 7
|
32
31
|
version: 1.0.7
|
33
|
-
type: :development
|
34
32
|
prerelease: false
|
33
|
+
type: :development
|
34
|
+
name: bundler
|
35
35
|
requirement: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
name: rake
|
38
37
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
38
|
none: false
|
40
39
|
requirements:
|
@@ -46,11 +45,11 @@ dependencies:
|
|
46
45
|
- 9
|
47
46
|
- 2
|
48
47
|
version: 0.9.2
|
49
|
-
type: :development
|
50
48
|
prerelease: false
|
49
|
+
type: :development
|
50
|
+
name: rake
|
51
51
|
requirement: *id002
|
52
52
|
- !ruby/object:Gem::Dependency
|
53
|
-
name: cucumber
|
54
53
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
54
|
none: false
|
56
55
|
requirements:
|
@@ -62,11 +61,11 @@ dependencies:
|
|
62
61
|
- 1
|
63
62
|
- 4
|
64
63
|
version: 1.1.4
|
65
|
-
type: :development
|
66
64
|
prerelease: false
|
65
|
+
type: :development
|
66
|
+
name: cucumber
|
67
67
|
requirement: *id003
|
68
68
|
- !ruby/object:Gem::Dependency
|
69
|
-
name: aruba
|
70
69
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
71
70
|
none: false
|
72
71
|
requirements:
|
@@ -78,11 +77,11 @@ dependencies:
|
|
78
77
|
- 4
|
79
78
|
- 11
|
80
79
|
version: 0.4.11
|
81
|
-
type: :development
|
82
80
|
prerelease: false
|
81
|
+
type: :development
|
82
|
+
name: aruba
|
83
83
|
requirement: *id004
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
|
-
name: rspec
|
86
85
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
87
86
|
none: false
|
88
87
|
requirements:
|
@@ -93,11 +92,11 @@ dependencies:
|
|
93
92
|
- 2
|
94
93
|
- 11
|
95
94
|
version: "2.11"
|
96
|
-
type: :development
|
97
95
|
prerelease: false
|
96
|
+
type: :development
|
97
|
+
name: rspec
|
98
98
|
requirement: *id005
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
|
-
name: shoulda
|
101
100
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
102
101
|
none: false
|
103
102
|
requirements:
|
@@ -109,11 +108,11 @@ dependencies:
|
|
109
108
|
- 9
|
110
109
|
- 2
|
111
110
|
version: 2.9.2
|
112
|
-
type: :development
|
113
111
|
prerelease: false
|
112
|
+
type: :development
|
113
|
+
name: shoulda
|
114
114
|
requirement: *id006
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
|
-
name: fakeweb
|
117
116
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
118
117
|
none: false
|
119
118
|
requirements:
|
@@ -125,27 +124,26 @@ dependencies:
|
|
125
124
|
- 3
|
126
125
|
- 0
|
127
126
|
version: 1.3.0
|
128
|
-
type: :development
|
129
127
|
prerelease: false
|
128
|
+
type: :development
|
129
|
+
name: fakeweb
|
130
130
|
requirement: *id007
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
|
-
name: webmock
|
133
132
|
version_requirements: &id008 !ruby/object:Gem::Requirement
|
134
133
|
none: false
|
135
134
|
requirements:
|
136
135
|
- - ~>
|
137
136
|
- !ruby/object:Gem::Version
|
138
|
-
hash:
|
137
|
+
hash: 29
|
139
138
|
segments:
|
140
139
|
- 1
|
141
|
-
-
|
142
|
-
|
143
|
-
version: 1.8.3
|
144
|
-
type: :development
|
140
|
+
- 9
|
141
|
+
version: "1.9"
|
145
142
|
prerelease: false
|
143
|
+
type: :development
|
144
|
+
name: webmock
|
146
145
|
requirement: *id008
|
147
146
|
- !ruby/object:Gem::Dependency
|
148
|
-
name: faraday
|
149
147
|
version_requirements: &id009 !ruby/object:Gem::Requirement
|
150
148
|
none: false
|
151
149
|
requirements:
|
@@ -156,11 +154,11 @@ dependencies:
|
|
156
154
|
- 0
|
157
155
|
- 8
|
158
156
|
version: "0.8"
|
159
|
-
type: :development
|
160
157
|
prerelease: false
|
158
|
+
type: :development
|
159
|
+
name: faraday
|
161
160
|
requirement: *id009
|
162
161
|
- !ruby/object:Gem::Dependency
|
163
|
-
name: httpclient
|
164
162
|
version_requirements: &id010 !ruby/object:Gem::Requirement
|
165
163
|
none: false
|
166
164
|
requirements:
|
@@ -171,11 +169,11 @@ dependencies:
|
|
171
169
|
- 2
|
172
170
|
- 2
|
173
171
|
version: "2.2"
|
174
|
-
type: :development
|
175
172
|
prerelease: false
|
173
|
+
type: :development
|
174
|
+
name: httpclient
|
176
175
|
requirement: *id010
|
177
176
|
- !ruby/object:Gem::Dependency
|
178
|
-
name: excon
|
179
177
|
version_requirements: &id011 !ruby/object:Gem::Requirement
|
180
178
|
none: false
|
181
179
|
requirements:
|
@@ -194,11 +192,11 @@ dependencies:
|
|
194
192
|
- 1
|
195
193
|
- 0
|
196
194
|
version: "1.0"
|
197
|
-
type: :development
|
198
195
|
prerelease: false
|
196
|
+
type: :development
|
197
|
+
name: excon
|
199
198
|
requirement: *id011
|
200
199
|
- !ruby/object:Gem::Dependency
|
201
|
-
name: timecop
|
202
200
|
version_requirements: &id012 !ruby/object:Gem::Requirement
|
203
201
|
none: false
|
204
202
|
requirements:
|
@@ -210,11 +208,11 @@ dependencies:
|
|
210
208
|
- 3
|
211
209
|
- 5
|
212
210
|
version: 0.3.5
|
213
|
-
type: :development
|
214
211
|
prerelease: false
|
212
|
+
type: :development
|
213
|
+
name: timecop
|
215
214
|
requirement: *id012
|
216
215
|
- !ruby/object:Gem::Dependency
|
217
|
-
name: rack
|
218
216
|
version_requirements: &id013 !ruby/object:Gem::Requirement
|
219
217
|
none: false
|
220
218
|
requirements:
|
@@ -226,11 +224,11 @@ dependencies:
|
|
226
224
|
- 3
|
227
225
|
- 6
|
228
226
|
version: 1.3.6
|
229
|
-
type: :development
|
230
227
|
prerelease: false
|
228
|
+
type: :development
|
229
|
+
name: rack
|
231
230
|
requirement: *id013
|
232
231
|
- !ruby/object:Gem::Dependency
|
233
|
-
name: sinatra
|
234
232
|
version_requirements: &id014 !ruby/object:Gem::Requirement
|
235
233
|
none: false
|
236
234
|
requirements:
|
@@ -242,11 +240,11 @@ dependencies:
|
|
242
240
|
- 3
|
243
241
|
- 2
|
244
242
|
version: 1.3.2
|
245
|
-
type: :development
|
246
243
|
prerelease: false
|
244
|
+
type: :development
|
245
|
+
name: sinatra
|
247
246
|
requirement: *id014
|
248
247
|
- !ruby/object:Gem::Dependency
|
249
|
-
name: multi_json
|
250
248
|
version_requirements: &id015 !ruby/object:Gem::Requirement
|
251
249
|
none: false
|
252
250
|
requirements:
|
@@ -258,11 +256,11 @@ dependencies:
|
|
258
256
|
- 0
|
259
257
|
- 3
|
260
258
|
version: 1.0.3
|
261
|
-
type: :development
|
262
259
|
prerelease: false
|
260
|
+
type: :development
|
261
|
+
name: multi_json
|
263
262
|
requirement: *id015
|
264
263
|
- !ruby/object:Gem::Dependency
|
265
|
-
name: json
|
266
264
|
version_requirements: &id016 !ruby/object:Gem::Requirement
|
267
265
|
none: false
|
268
266
|
requirements:
|
@@ -274,11 +272,11 @@ dependencies:
|
|
274
272
|
- 6
|
275
273
|
- 5
|
276
274
|
version: 1.6.5
|
277
|
-
type: :development
|
278
275
|
prerelease: false
|
276
|
+
type: :development
|
277
|
+
name: json
|
279
278
|
requirement: *id016
|
280
279
|
- !ruby/object:Gem::Dependency
|
281
|
-
name: simplecov
|
282
280
|
version_requirements: &id017 !ruby/object:Gem::Requirement
|
283
281
|
none: false
|
284
282
|
requirements:
|
@@ -290,11 +288,11 @@ dependencies:
|
|
290
288
|
- 5
|
291
289
|
- 3
|
292
290
|
version: 0.5.3
|
293
|
-
type: :development
|
294
291
|
prerelease: false
|
292
|
+
type: :development
|
293
|
+
name: simplecov
|
295
294
|
requirement: *id017
|
296
295
|
- !ruby/object:Gem::Dependency
|
297
|
-
name: redis
|
298
296
|
version_requirements: &id018 !ruby/object:Gem::Requirement
|
299
297
|
none: false
|
300
298
|
requirements:
|
@@ -306,83 +304,75 @@ dependencies:
|
|
306
304
|
- 2
|
307
305
|
- 2
|
308
306
|
version: 2.2.2
|
309
|
-
type: :development
|
310
307
|
prerelease: false
|
308
|
+
type: :development
|
309
|
+
name: redis
|
311
310
|
requirement: *id018
|
312
311
|
- !ruby/object:Gem::Dependency
|
313
|
-
name: patron
|
314
312
|
version_requirements: &id019 !ruby/object:Gem::Requirement
|
315
313
|
none: false
|
316
314
|
requirements:
|
317
315
|
- - ~>
|
318
316
|
- !ruby/object:Gem::Version
|
319
|
-
hash:
|
317
|
+
hash: 13
|
320
318
|
segments:
|
321
319
|
- 0
|
322
|
-
-
|
323
|
-
-
|
324
|
-
version: 0.
|
325
|
-
type: :development
|
320
|
+
- 5
|
321
|
+
- 3
|
322
|
+
version: 0.5.3
|
326
323
|
prerelease: false
|
324
|
+
type: :development
|
325
|
+
name: typhoeus
|
327
326
|
requirement: *id019
|
328
327
|
- !ruby/object:Gem::Dependency
|
329
|
-
name: em-http-request
|
330
328
|
version_requirements: &id020 !ruby/object:Gem::Requirement
|
331
329
|
none: false
|
332
330
|
requirements:
|
333
331
|
- - ~>
|
334
332
|
- !ruby/object:Gem::Version
|
335
|
-
hash:
|
333
|
+
hash: 17
|
336
334
|
segments:
|
337
|
-
- 1
|
338
335
|
- 0
|
339
|
-
-
|
340
|
-
|
341
|
-
|
336
|
+
- 4
|
337
|
+
- 15
|
338
|
+
version: 0.4.15
|
342
339
|
prerelease: false
|
340
|
+
type: :development
|
341
|
+
name: patron
|
343
342
|
requirement: *id020
|
344
343
|
- !ruby/object:Gem::Dependency
|
345
|
-
name: curb
|
346
344
|
version_requirements: &id021 !ruby/object:Gem::Requirement
|
347
345
|
none: false
|
348
346
|
requirements:
|
349
347
|
- - ~>
|
350
348
|
- !ruby/object:Gem::Version
|
351
|
-
hash:
|
349
|
+
hash: 19
|
352
350
|
segments:
|
351
|
+
- 1
|
353
352
|
- 0
|
354
|
-
-
|
355
|
-
|
356
|
-
version: 0.8.0
|
357
|
-
type: :development
|
353
|
+
- 2
|
354
|
+
version: 1.0.2
|
358
355
|
prerelease: false
|
356
|
+
type: :development
|
357
|
+
name: em-http-request
|
359
358
|
requirement: *id021
|
360
359
|
- !ruby/object:Gem::Dependency
|
361
|
-
name: typhoeus
|
362
360
|
version_requirements: &id022 !ruby/object:Gem::Requirement
|
363
361
|
none: false
|
364
362
|
requirements:
|
365
|
-
- -
|
366
|
-
- !ruby/object:Gem::Version
|
367
|
-
hash: 21
|
368
|
-
segments:
|
369
|
-
- 0
|
370
|
-
- 3
|
371
|
-
- 3
|
372
|
-
version: 0.3.3
|
373
|
-
- - <
|
363
|
+
- - ~>
|
374
364
|
- !ruby/object:Gem::Version
|
375
|
-
hash:
|
365
|
+
hash: 63
|
376
366
|
segments:
|
377
367
|
- 0
|
378
|
-
-
|
368
|
+
- 8
|
379
369
|
- 0
|
380
|
-
version: 0.
|
381
|
-
type: :development
|
370
|
+
version: 0.8.0
|
382
371
|
prerelease: false
|
372
|
+
type: :development
|
373
|
+
name: curb
|
383
374
|
requirement: *id022
|
384
375
|
- !ruby/object:Gem::Dependency
|
385
|
-
name: yajl-ruby
|
386
376
|
version_requirements: &id023 !ruby/object:Gem::Requirement
|
387
377
|
none: false
|
388
378
|
requirements:
|
@@ -394,8 +384,9 @@ dependencies:
|
|
394
384
|
- 1
|
395
385
|
- 0
|
396
386
|
version: 1.1.0
|
397
|
-
type: :development
|
398
387
|
prerelease: false
|
388
|
+
type: :development
|
389
|
+
name: yajl-ruby
|
399
390
|
requirement: *id023
|
400
391
|
description: VCR provides a simple API to record and replay your test suite's HTTP interactions. It works with a variety of HTTP client libraries, HTTP stubbing libraries and testing frameworks.
|
401
392
|
email: myron.marston@gmail.com
|
@@ -417,6 +408,7 @@ files:
|
|
417
408
|
- CHANGELOG.md
|
418
409
|
- CONTRIBUTING.md
|
419
410
|
- Gemfile
|
411
|
+
- Gemfile.lock
|
420
412
|
- LICENSE
|
421
413
|
- README.md
|
422
414
|
- Rakefile
|
@@ -443,6 +435,7 @@ files:
|
|
443
435
|
- features/configuration/hook_into.feature
|
444
436
|
- features/configuration/ignore_request.feature
|
445
437
|
- features/configuration/preserve_exact_body_bytes.feature
|
438
|
+
- features/configuration/query_parser.feature
|
446
439
|
- features/configuration/uri_parser.feature
|
447
440
|
- features/getting_started.md
|
448
441
|
- features/hooks/after_http_request.feature
|
@@ -467,6 +460,7 @@ files:
|
|
467
460
|
- features/request_matching/method.feature
|
468
461
|
- features/request_matching/path.feature
|
469
462
|
- features/request_matching/playback_repeats.feature
|
463
|
+
- features/request_matching/query.feature
|
470
464
|
- features/request_matching/uri.feature
|
471
465
|
- features/request_matching/uri_without_param.feature
|
472
466
|
- features/step_definitions/cli_steps.rb
|
@@ -478,10 +472,8 @@ files:
|
|
478
472
|
- features/test_frameworks/rspec_metadata.feature
|
479
473
|
- features/test_frameworks/shoulda.feature
|
480
474
|
- features/test_frameworks/test_unit.feature
|
481
|
-
- gemfiles/
|
482
|
-
- gemfiles/
|
483
|
-
- gemfiles/typhoeus-old.gemfile
|
484
|
-
- gemfiles/typhoeus-old.gemfile.lock
|
475
|
+
- gemfiles/typhoeus_old.gemfile
|
476
|
+
- gemfiles/typhoeus_old.gemfile.lock
|
485
477
|
- lib/vcr.rb
|
486
478
|
- lib/vcr/cassette.rb
|
487
479
|
- lib/vcr/cassette/erb_renderer.rb
|
@@ -571,9 +563,9 @@ files:
|
|
571
563
|
- spec/vcr/version_spec.rb
|
572
564
|
- spec/vcr_spec.rb
|
573
565
|
- vcr.gemspec
|
574
|
-
homepage: http://github.com/
|
575
|
-
licenses:
|
576
|
-
|
566
|
+
homepage: http://github.com/vcr/vcr
|
567
|
+
licenses:
|
568
|
+
- MIT
|
577
569
|
post_install_message:
|
578
570
|
rdoc_options: []
|
579
571
|
|
@@ -628,6 +620,7 @@ test_files:
|
|
628
620
|
- features/configuration/hook_into.feature
|
629
621
|
- features/configuration/ignore_request.feature
|
630
622
|
- features/configuration/preserve_exact_body_bytes.feature
|
623
|
+
- features/configuration/query_parser.feature
|
631
624
|
- features/configuration/uri_parser.feature
|
632
625
|
- features/getting_started.md
|
633
626
|
- features/hooks/after_http_request.feature
|
@@ -652,6 +645,7 @@ test_files:
|
|
652
645
|
- features/request_matching/method.feature
|
653
646
|
- features/request_matching/path.feature
|
654
647
|
- features/request_matching/playback_repeats.feature
|
648
|
+
- features/request_matching/query.feature
|
655
649
|
- features/request_matching/uri.feature
|
656
650
|
- features/request_matching/uri_without_param.feature
|
657
651
|
- features/step_definitions/cli_steps.rb
|