Module: PactBroker::Pacts::Metadata
- Extended by:
- Metadata
- Included in:
- Api::Decorators::VerifiablePactDecorator, Api::PactBrokerUrls, Metadata
- Defined in:
- lib/pact_broker/pacts/metadata.rb
Constant Summary collapse
- MAPPINGS =
[ [:consumer_version_tags, "cvt"], [:consumer_version_number, "cvn"], [:wip, "w"], [:consumer_version_selectors, "s"], [:tag, "t"], [:latest, "l"] ]
Instance Method Summary collapse
-
#build_metadata_for_latest_pact(pact, selection_parameters) ⇒ Object
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.
- #build_metadata_for_pact_for_verification(verifiable_pact) ⇒ Object
-
#build_metadata_for_webhook_triggered_by_pact_publication(pact) ⇒ Object
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.
- #parse_hash(hash) ⇒ Object
- #parse_metadata(metadata) ⇒ Object
- #parse_object(object) ⇒ Object
Instance Method Details
#build_metadata_for_latest_pact(pact, selection_parameters) ⇒ Object
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)
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/pact_broker/pacts/metadata.rb', line 20 def (pact, selection_parameters) if selection_parameters[:tag] { "cvt" => [selection_parameters[:tag]], "cvn" => pact.consumer_version_number } else { "cvn" => pact.consumer_version_number } end end |
#build_metadata_for_pact_for_verification(verifiable_pact) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/pact_broker/pacts/metadata.rb', line 47 def (verifiable_pact) # todo put in tags if verifiable_pact.wip { "w" => true } else { "s" => verifiable_pact.selectors.collect do | selector | { "t" => selector.tag, "l" => selector.latest, "cvn" => selector.consumer_version.number }.compact end } end end |
#build_metadata_for_webhook_triggered_by_pact_publication(pact) ⇒ Object
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)
38 39 40 41 42 43 44 45 |
# File 'lib/pact_broker/pacts/metadata.rb', line 38 def (pact) = { "cvn" => pact.consumer_version_number, "cvt" => pact.consumer_version_tag_names } ["w"] = "true" end |
#parse_hash(hash) ⇒ Object
78 79 80 81 82 83 |
# File 'lib/pact_broker/pacts/metadata.rb', line 78 def parse_hash(hash) hash.each_with_object({}) do | (key, value), new_hash | long_key = MAPPINGS.find{ |mapping| mapping.last == key }&.first new_hash[long_key || key] = parse_object(value) end end |
#parse_metadata(metadata) ⇒ Object
66 67 68 |
# File 'lib/pact_broker/pacts/metadata.rb', line 66 def () parse_object() end |
#parse_object(object) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/pact_broker/pacts/metadata.rb', line 70 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 |