Sha256: e7ef9dfcacdc639e7ba2a5b43bde230df70d64e2170aef69daad1b6a26be238f

Contents?: true

Size: 1.49 KB

Versions: 24

Compression:

Stored size: 1.49 KB

Contents

require 'pact/specification_version'

module Pact
  class HttpConsumerContractParser
    include SymbolizeKeys

    def call(hash)
      hash = symbolize_keys(hash)
      v = pact_specification_version(hash)
      options = { pact_specification_version: v }

      if v.after? 3
        Pact.configuration.error_stream.puts "WARN: This code only knows how to parse v3 pacts, attempting to parse v#{options[:pact_specification_version]} pact using v3 code."
      end

      interactions = hash[:interactions].collect { |hash| Interaction.from_hash(hash, options) }
      ConsumerContract.new(
        :consumer => ServiceConsumer.from_hash(hash[:consumer]),
        :provider => ServiceProvider.from_hash(hash[:provider]),
        :interactions => interactions
      )
    end

    def pact_specification_version hash
      # TODO handle all 3 ways of defining this...
      # metadata.pactSpecificationVersion
      maybe_pact_specification_version_1 = hash[:metadata] && hash[:metadata]['pactSpecification'] && hash[:metadata]['pactSpecification']['version']
      maybe_pact_specification_version_2 = hash[:metadata] && hash[:metadata]['pactSpecificationVersion']
      pact_specification_version = maybe_pact_specification_version_1 || maybe_pact_specification_version_2
      pact_specification_version ? Pact::SpecificationVersion.new(pact_specification_version) : Pact::SpecificationVersion::NIL_VERSION
    end

    def can_parse?(hash)
      hash.key?('interactions') || hash.key?(:interactions)
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
pact-support-1.12.1 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.12.0 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.11.0 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.10.3 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.10.2 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.10.1 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.10.0 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.9.0 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.8.1 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.8.0 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.7.2 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.7.1 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.7.0 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.6.6 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.6.5 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.7.0.alpha.1 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.6.4 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.6.3 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.6.2 lib/pact/consumer_contract/http_consumer_contract_parser.rb
pact-support-1.6.1 lib/pact/consumer_contract/http_consumer_contract_parser.rb