Sha256: 5b775286fbef926a423f0d98f819d0ed466cc5c7409c8c99ce334fedfccf255f
Contents?: true
Size: 1.56 KB
Versions: 4
Compression:
Stored size: 1.56 KB
Contents
# frozen_string_literal: true module Peddler # A custom matcher that can be used to record MWS interactions when # integration-testing class VCRMatcher TRANSIENT_PARAMS = %w[ Signature Timestamp StartDate CreatedAfter QueryStartDateTime ].freeze SELLER_PARAMS = %w[ AWSAccessKeyId SellerId ].freeze class << self def call(*requests) new(*requests).compare end def ignored_params @ignored_params ||= TRANSIENT_PARAMS.dup end def ignore_seller! ignored_params.concat(SELLER_PARAMS) end end attr_reader :requests def initialize(*requests) @requests = requests end def compare compare_uris && compare_bodies end private def compare_uris return false if hosts.reduce(:!=) || paths.reduce(:!=) return true if queries.all?(&:empty?) queries.reduce(:==) end def compare_bodies bodies.reduce(:==) end def extract_params(string) return {} unless string params = ::CGI.parse(string) self.class.ignored_params.each do |k| params.delete(k) end params end def uris requests.map { |r| URI.parse(r.uri) } end def hosts uris.map(&:host) end def paths uris.map(&:path) end def queries uris.map { |uri| extract_params(uri.query) } end def bodies if queries.all?(&:empty?) requests.map { |request| extract_params(request.body) } else requests.map(&:body) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
peddler-1.6.7 | lib/peddler/vcr_matcher.rb |
peddler-1.6.6 | lib/peddler/vcr_matcher.rb |
peddler-1.6.5 | lib/peddler/vcr_matcher.rb |
peddler-1.6.4 | lib/peddler/vcr_matcher.rb |