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