Module: PayTrace::Debug

Defined in:
lib/paytrace/debug.rb

Overview

Useful helper methods for debugging.

Class Method Summary collapse

Class Method Details

.configure_test(un = "demo123", pw = "demo123", domain = "stage.paytrace.com") ⇒ Object

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



56
57
58
59
60
61
62
# File 'lib/paytrace/debug.rb', line 56

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) ⇒ Object

verify whether two requests match



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/paytrace/debug.rb', line 65

def self.diff_requests(expected_raw, actual_raw, case_sensitive = false)
  whats_wrong = []

  expected = PayTrace::Debug.split_request_string(expected_raw).map {|tuple| case_sensitive ? tuple : [tuple[0].upcase, tuple[1]]}
  actual = PayTrace::Debug.split_request_string(actual_raw).map {|tuple| case_sensitive ? tuple : [tuple[0].upcase, tuple[1]]}

  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_transactionObject

Helper that loops through the response values and dumps them out



10
11
12
13
14
15
16
17
18
19
20
21
22
# 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) ⇒ Object

Formatted output for a text message.



25
26
27
# File 'lib/paytrace/debug.rb', line 25

def self.log(msg)
  puts ">>>>>>           #{msg}"
end

.split_request_string(raw) ⇒ Object

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



30
31
32
# File 'lib/paytrace/debug.rb', line 30

def self.split_request_string(raw)
  raw.split('|').map {|kv_pair| kv_pair.split('~')}
end

.trace(&block) ⇒ Object

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



40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/paytrace/debug.rb', line 40

def self.trace(&block)
  PayTrace::API::Gateway.debug = true

  begin
    yield
  rescue Exception => e
    puts "[REQUEST] #{PayTrace::API::Gateway.last_request}"

    raise
  else
    dump_transaction
  end
end