class PactBroker::Client::Deployments::RecordRelease
def action
def action "release" end
def action_relation_name
def action_relation_name "pb:record-release" end
def check_if_command_supported
def check_if_command_supported unless index_resource.can?("pb:environments") raise PactBroker::Client::Error.new(not_supported_message) end end
def do_call
def do_call record_action PactBroker::Client::CommandResult.new(true, result_message) end
def environment_exists?
def environment_exists? index_resource ._link!("pb:environments") .get! ._links("pb:environments") .find(environment_name) end
def environment_relation_not_found_error_message
def environment_relation_not_found_error_message if environment_exists? "Environment '#{environment_name}' is not an available option for recording a deployment of #{pacticipant_name}." else if is_pactflow? "Environment '#{environment_name}' is not an available option for recording a deployment of #{pacticipant_name}. The environment may not exist, or you may not have the required permissions or team associations to view it." else "No environment found with name '#{environment_name}'." end end end
def get_pacticipant_version
def get_pacticipant_version index_resource ._link!("pb:pacticipant-version") .expand(pacticipant: pacticipant_name, version: version_number) .get .assert_success!(404 => "#{pacticipant_name} version #{version_number} not found") end
def get_record_action_relation
def get_record_action_relation record_action_links.find(environment_name) or record_action_links.find!(environment_name, environment_relation_not_found_error_message) end
def initialize(params, options, pact_broker_client_options)
def initialize(params, options, pact_broker_client_options) super @pacticipant_name = params.fetch(:pacticipant_name) @version_number = params.fetch(:version_number) @environment_name = params.fetch(:environment_name) end
def not_supported_message
def not_supported_message if is_pactflow? "This version of PactFlow does not support recording #{action}s, or you do not have the required permission to read environments. Please upgrade to the latest version if using PactFlow On-Premises, and ensure the user has the environment read permission." else "This version of the Pact Broker does not support recording #{action}s. Please upgrade to version 2.80.0 or later." end end
def record_action
def record_action @deployed_version_resource = get_record_action_relation .post(record_action_request_body) .assert_success! end
def record_action_links
def record_action_links get_pacticipant_version._links(action_relation_name) or raise PactBroker::Client::Error.new(not_supported_message) end
def record_action_request_body
def record_action_request_body {} end
def result_message
def result_message if json_output? deployed_version_resource.response.raw_body else green("#{result_text_message} in #{pact_broker_name}.") end end
def result_text_message
def result_text_message "Recorded #{action} of #{pacticipant_name} version #{version_number} to #{environment_name} environment" end