Skip to content

Instantly share code, notes, and snippets.

@nauman
Created July 16, 2012 01:59
Show Gist options
  • Save nauman/3119829 to your computer and use it in GitHub Desktop.
Save nauman/3119829 to your computer and use it in GitHub Desktop.
Common VCR testing
require 'vcr'
require 'addressable/uri'
require 'net/http'
require 'uri'
VCR.configure do |configure|
configure.cassette_library_dir = File.join(File.dirname(__FILE__), 'fixtures')
configure.hook_into :webmock
#1. Change request before http request
configure.before_http_request do |request|
request.uri = "https://api.globalcloud.fujitsu.com.au/ovissapi/endpoint?AccessKeyId=test&Action=GetVSYSConfiguration&Locale=en&Signature=test&Version=2011-01-31&vsysId="
end
configure.default_cassette_options = { :record => :new_episodes }
configure.debug_logger = File.open(File.join('log', 'vcr.log'), 'w')
#2. Ignore request parameters for credentials to match recorded requests
c.default_cassette_options = {
:match_requests_on => [:method,
VCR.request_matchers.uri_without_param(:Signature, :AccessKeyId, :Version)]
}
#3. Change url parameters here and in file
configure.register_request_matcher(:uri) do |r1, r2|
uri = Addressable::URI.parse r1.uri
uri.query_values = uri.query_values.merge("AccessKeyId" => "test", "Signature" => "test1")
r1.uri = uri.to_s
WebMock::Util::URI.normalize_uri(r1.uri) == WebMock::Util::URI.normalize_uri(r2.uri)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment