module PactBroker::Pacts::Metadata
Constants
- MAPPINGS
Public Instance Methods
build_metadata_for_consumer_version_number(consumer_version_number)
click to toggle source
# File lib/pact_broker/pacts/metadata.rb, line 37 def build_metadata_for_consumer_version_number(consumer_version_number) { "cvn" => consumer_version_number } end
build_metadata_for_latest_pact(pact, selection_parameters)
click to toggle source
When verifying a pact at /…/latest/TAG, this stores the tag and the current consumer version number in the metadata parameter of the URL for publishing the verification results. This is part of ensuring that verification results webhooks go back to the correct consumer version number (eg for git statuses)
# File lib/pact_broker/pacts/metadata.rb, line 24 def build_metadata_for_latest_pact(pact, selection_parameters) if selection_parameters[:tag] { "cvt" => [selection_parameters[:tag]], "cv" => pact.consumer_version.id } else { "cv" => pact.consumer_version.id } end end
build_metadata_for_pact_for_verification(verifiable_pact)
click to toggle source
# File lib/pact_broker/pacts/metadata.rb, line 58 def build_metadata_for_pact_for_verification(verifiable_pact) # todo put in tags if verifiable_pact.wip { "w" => true } else { "s" => verifiable_pact.selectors.collect do | selector | { "b" => selector.branch, "t" => selector.tag, "l" => selector.latest, "e" => selector.environment_name, "cv" => selector.consumer_version.id }.compact end, "p" => verifiable_pact.pending? }.compact end end
build_metadata_for_webhook_triggered_by_pact_publication(pact)
click to toggle source
When a pact is published, and a webhook is triggered, this stores the current tags and consumer version number in the metadata parameter of the pact version URL that is made available in the webhook template parameters. This is part of ensuring that verification results webhooks go back to the correct consumer version number (eg for git statuses)
# File lib/pact_broker/pacts/metadata.rb, line 48 def build_metadata_for_webhook_triggered_by_pact_publication(pact) # Should probably put the branch in here, but I don't think the tags are used for anything metadata = { "cvn" => pact.consumer_version_number, "cvt" => pact.consumer_version_tag_names } metadata["w"] = "true" metadata end
parse_hash(hash)
click to toggle source
# File lib/pact_broker/pacts/metadata.rb, line 92 def parse_hash(hash) require "pact_broker/domain/version" # can't load this before the db models hash.each_with_object({}) do | (key, value), new_hash | long_key = MAPPINGS.find{ |mapping| mapping.last == key }&.first if long_key == :consumer_version_id new_hash[:consumer_version_number] = PactBroker::Domain::Version.find(id: value.to_i)&.number else new_hash[long_key || key] = parse_object(value) end end end
parse_metadata(metadata)
click to toggle source
# File lib/pact_broker/pacts/metadata.rb, line 80 def parse_metadata(metadata) parse_object(metadata) end
parse_object(object)
click to toggle source
# File lib/pact_broker/pacts/metadata.rb, line 84 def parse_object(object) case object when Hash then parse_hash(object) when Array then object.collect{|i| parse_object(i) } else object end end