class Pactflow::Client::ProviderContracts::Publish

Constants

PUBLISH_RELATION

Attributes

branch_name[R]
build_url[R]
contract[R]
provider_name[R]
provider_version_number[R]
tags[R]
verification_results[R]

Public Class Methods

new(params, options, pact_broker_client_options) click to toggle source
Calls superclass method PactBroker::Client::BaseCommand::new
# File lib/pactflow/client/provider_contracts/publish.rb, line 14
def initialize(params, options, pact_broker_client_options)
  super
  @provider_name = params[:provider_name]
  @provider_version_number = params[:provider_version_number]
  @branch_name = params[:branch_name]
  @tags = params[:tags] || []
  @build_url = params[:build_url]
  @contract = params[:contract]
  @verification_results = params[:verification_results]
end

Private Instance Methods

contract_params() click to toggle source
# File lib/pactflow/client/provider_contracts/publish.rb, line 46
def contract_params
  verification_results_params = {
                                  success: verification_results[:success],
                                  content:  verification_results[:content] ? encode_content(verification_results[:content]) : nil,
                                  contentType: verification_results[:content_type],
                                  format: verification_results[:format],
                                  verifier: verification_results[:verifier],
                                  verifierVersion: verification_results[:verifier_version]
                                }.compact

  contract_params = {
                      content: encode_content(contract[:content]),
                      specification: contract[:specification],
                      contentType: contract[:content_type]
                    }.compact

  if verification_results_params.any?
    contract_params[:selfVerificationResults] = verification_results_params
  end

  {
    pacticipantVersionNumber: provider_version_number,
    tags: tags,
    branch: branch_name,
    buildUrl: build_url,
    contract: contract_params
  }
end
disabled?() click to toggle source
# File lib/pactflow/client/provider_contracts/publish.rb, line 38
def disabled?
  ENV.fetch("PACTFLOW_FEATURES", "").include?("publish_provider_contracts_using_old_api")
end
do_call() click to toggle source
# File lib/pactflow/client/provider_contracts/publish.rb, line 29
def do_call
  if !disabled? && index_resource.assert_success!.can?(PUBLISH_RELATION)
    publish_provider_contracts
    PactBroker::Client::CommandResult.new(success?, message)
  else
    PublishTheOldWay.call(params, options, pact_broker_client_options)
  end
end
encode_content(oas) click to toggle source
# File lib/pactflow/client/provider_contracts/publish.rb, line 75
def encode_content oas
  Base64.strict_encode64(oas)
end
message() click to toggle source
# File lib/pactflow/client/provider_contracts/publish.rb, line 79
def message
  if options[:output] == "json"
    @response_entity.response.raw_body
  else
    text_message
  end
end
publish_provider_contracts() click to toggle source
# File lib/pactflow/client/provider_contracts/publish.rb, line 42
def publish_provider_contracts
  @response_entity = index_resource._link(PUBLISH_RELATION).expand(provider: provider_name).post!(contract_params, { "Accept" => "application/hal+json,application/problem+json" })
end
success?() click to toggle source
# File lib/pactflow/client/provider_contracts/publish.rb, line 87
def success?
  @response_entity.success?
end
text_message() click to toggle source
# File lib/pactflow/client/provider_contracts/publish.rb, line 91
def text_message
  PactBroker::Client::ColorizeNotices.call(@response_entity.notices.collect{ |n| OpenStruct.new(n) } )
end