module PayTrace::Debug

Useful helper methods for debugging.

Public Class Methods

configure_test(un = "demo123", pw = "demo123", domain = "stage.paytrace.com") click to toggle source

Helper method to configure a default test environment. Accepts username, password, and domain parameters. domain defaults to “stage.paytrace.com” and the username/password default to the credentials for the sandbox account

# File lib/paytrace/debug.rb, line 57
def self.configure_test(un = "demo123", pw = "demo123", domain = "stage.paytrace.com")
  PayTrace.configure do |config|
    config.user_name = un
    config.password = pw
    config.domain = domain
  end
end
diff_requests(expected_raw, actual_raw, case_sensitive = false) click to toggle source

verify whether two requests match

# File lib/paytrace/debug.rb, line 71
def self.diff_requests(expected_raw, actual_raw, case_sensitive = false)
  whats_wrong = []

  expected = PayTrace::Debug.split_tuples(expected_raw, case_sensitive)
  actual = PayTrace::Debug.split_tuples(actual_raw, case_sensitive)

  expected_remaining = []
  actual_extra = actual.dup

  expected.each do |tuple|
    idx = actual_extra.find_index(tuple)
    if idx.nil?
      expected_remaining << tuple
    else
      actual_extra.delete_at(idx)
    end
  end

  expected_remaining.each do |tuple|
    whats_wrong << "Missing expected property #{tuple[0]}~#{tuple[1]}"
  end

  actual_extra.each do |tuple|
    whats_wrong << "Extra unexpected property #{tuple[0]}~#{tuple[1]}"
  end

  whats_wrong
end
dump_transaction() click to toggle source

Helper that loops through the response values and dumps them out

# File lib/paytrace/debug.rb, line 10
def self.dump_transaction
  puts "[REQUEST] #{PayTrace::API::Gateway.last_request}"
  response = PayTrace::API::Gateway.last_response_object
  if(response.has_errors?)
    response.errors.each do |key, value|
      puts "[RESPONSE] ERROR: #{key.ljust(20)}#{value}"
    end
  else
    response.values.each do |key, value|
      puts "[RESPONSE] #{key.ljust(20)}#{value}"
    end
  end
end
log(msg) click to toggle source

Formatted output for a text message.

# File lib/paytrace/debug.rb, line 25
def self.log(msg)
  puts ">>>>>>           #{msg}"
end
split_request_string(raw) click to toggle source

split a raw request string into an array of name-value tuples

# File lib/paytrace/debug.rb, line 30
def self.split_request_string(raw)
  raw.split('|').map {|kv_pair| kv_pair.split('~')}
end
split_tuples(raw, case_sensitive = false) click to toggle source

helper method to make CodeClimate happy

# File lib/paytrace/debug.rb, line 66
def self.split_tuples(raw, case_sensitive = false)
  PayTrace::Debug.split_request_string(raw).map {|tuple| case_sensitive ? tuple : [tuple[0].upcase, tuple[1]]}
end
trace() { || ... } click to toggle source

Helper method to dump a request response pair. Usage: Usage:

PayTrace::Debug.trace do
# code the intiates a request/response pair
end

Note: also includes exception handling to ensure responses are dumped even if an exception occurs

# File lib/paytrace/debug.rb, line 40
def self.trace(&block)
  PayTrace::API::Gateway.debug = true

  begin
    yield
  rescue PayTrace::Exceptions::ErrorResponse => e
    puts "[REQUEST] #{PayTrace::API::Gateway.last_request}"
    puts "[RESPONSE] #{PayTrace::API::Gateway.last_response}"
    
    raise
  else
    dump_transaction
  end
end