class Pact::PactBroker::FetchPactURIsForVerification

Constants

EMBEDDED
HREF
PACTS
PACTS_FOR_VERIFICATION_RELATION
PACTS_FOR_VERIFICATION_RELATION_BETA
SELF

Attributes

broker_base_url[R]
consumer_version_selectors[R]
http_client[R]
http_client_options[R]
options[R]
provider[R]
provider_version_branch[R]
provider_version_tags[R]

Public Class Methods

call(provider, consumer_version_selectors, provider_version_branch, provider_version_tags, broker_base_url, http_client_options, options = {}) click to toggle source
# File lib/pact/pact_broker/fetch_pact_uris_for_verification.rb, line 34
def self.call(provider, consumer_version_selectors, provider_version_branch, provider_version_tags, broker_base_url, http_client_options, options = {})
  new(provider, consumer_version_selectors, provider_version_branch, provider_version_tags, broker_base_url, http_client_options, options).call
end
new(provider, consumer_version_selectors, provider_version_branch, provider_version_tags, broker_base_url, http_client_options, options = {}) click to toggle source
# File lib/pact/pact_broker/fetch_pact_uris_for_verification.rb, line 23
def initialize(provider, consumer_version_selectors, provider_version_branch, provider_version_tags, broker_base_url, http_client_options, options = {})
  @provider = provider
  @consumer_version_selectors = consumer_version_selectors || []
  @provider_version_branch = provider_version_branch
  @provider_version_tags = [*provider_version_tags]
  @http_client_options = http_client_options
  @broker_base_url = broker_base_url
  @http_client = Pact::Hal::HttpClient.new(http_client_options)
  @options = options
end

Public Instance Methods

call() click to toggle source
# File lib/pact/pact_broker/fetch_pact_uris_for_verification.rb, line 38
def call
  if index.can?(PACTS_FOR_VERIFICATION_RELATION) || index.can?(PACTS_FOR_VERIFICATION_RELATION_BETA)
    log_message
    pacts_for_verification
  else
    old_selectors = consumer_version_selectors.collect do | selector |
      { name: selector[:tag], all: !selector[:latest], fallback: selector[:fallbackTag]}
    end
    # Fall back to old method of fetching pacts
    FetchPacts.call(provider, old_selectors, broker_base_url, http_client_options)
  end
end

Private Instance Methods

extract_notices(pact) click to toggle source
# File lib/pact/pact_broker/fetch_pact_uris_for_verification.rb, line 85
def extract_notices(pact)
  Notices.new((pact["verificationProperties"]["notices"] || []).collect{ |notice| symbolize_keys(notice) })
end
index() click to toggle source
# File lib/pact/pact_broker/fetch_pact_uris_for_verification.rb, line 53
def index
  @index_entity ||= Pact::Hal::Link.new({ "href" => broker_base_url }, http_client).get.assert_success!
end
log_message() click to toggle source
# File lib/pact/pact_broker/fetch_pact_uris_for_verification.rb, line 93
def log_message
  Pact.configuration.output_stream.puts "INFO: #{pact_selection_description(provider, consumer_version_selectors, options, broker_base_url)}"
end
pacts_for_verification() click to toggle source
# File lib/pact/pact_broker/fetch_pact_uris_for_verification.rb, line 57
def pacts_for_verification
  pacts_for_verification_entity.response.body[EMBEDDED][PACTS].collect do | pact |
    metadata = {
      pending: pact["verificationProperties"]["pending"],
      notices: extract_notices(pact),
      short_description: pact["shortDescription"]
    }
    Pact::Provider::PactURI.new(pact[LINKS][SELF][HREF], http_client_options, metadata)
  end
end
pacts_for_verification_entity() click to toggle source
# File lib/pact/pact_broker/fetch_pact_uris_for_verification.rb, line 68
def pacts_for_verification_entity
  index
    ._link(PACTS_FOR_VERIFICATION_RELATION, PACTS_FOR_VERIFICATION_RELATION_BETA)
    .expand(provider: provider)
    .post!(query)
end
query() click to toggle source
# File lib/pact/pact_broker/fetch_pact_uris_for_verification.rb, line 75
def query
  q = {}
  q["includePendingStatus"] = true if options[:include_pending_status]
  q["consumerVersionSelectors"] = consumer_version_selectors if consumer_version_selectors.any?
  q["providerVersionTags"] = provider_version_tags if provider_version_tags.any?
  q["providerVersionBranch"] = provider_version_branch if provider_version_branch
  q["includeWipPactsSince"] = options[:include_wip_pacts_since] if options[:include_wip_pacts_since]
  q
end
symbolize_keys(hash) click to toggle source
# File lib/pact/pact_broker/fetch_pact_uris_for_verification.rb, line 89
def symbolize_keys(hash)
  hash.each_with_object({}){ |(k,v), h| h[k.to_sym] = v }
end