exact4r 0.9.3 → 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +3 -0
- data/README +0 -11
- data/Rakefile +38 -6
- data/VERSION +1 -1
- data/lib/ews/transaction/request.rb +4 -0
- data/lib/ews/transaction/validator.rb +2 -0
- data/lib/ews/transporter.rb +4 -2
- data/test/credentials.rb +62 -0
- data/test/credentials.yml +53 -0
- data/test/exhaustive/batch_query_close_test.rb +193 -0
- data/test/exhaustive/forced_post_test.rb +3 -3
- data/test/exhaustive/online_debit_purchase_test.rb +9 -5
- data/test/exhaustive/online_debit_refund_test.rb +9 -5
- data/test/exhaustive/pre_auth_completion_test.rb +3 -3
- data/test/exhaustive/pre_auth_only_test.rb +9 -3
- data/test/exhaustive/pre_auth_test.rb +3 -3
- data/test/exhaustive/purchase_correction_test.rb +13 -7
- data/test/exhaustive/purchase_test.rb +3 -3
- data/test/exhaustive/recurring_seed_pre_auth_test.rb +3 -3
- data/test/exhaustive/recurring_seed_purchase_test.rb +3 -3
- data/test/exhaustive/refund_correction_test.rb +12 -6
- data/test/exhaustive/refund_test.rb +3 -3
- data/test/exhaustive/secure_storage_test.rb +3 -3
- data/test/exhaustive/tagged_online_debit_refund_test.rb +64 -37
- data/test/exhaustive/tagged_pre_auth_completion_test.rb +8 -8
- data/test/exhaustive/tagged_pre_auth_test.rb +8 -8
- data/test/exhaustive/tagged_purchase_test.rb +8 -8
- data/test/exhaustive/tagged_refund_test.rb +9 -9
- data/test/exhaustive/tagged_void_test.rb +24 -10
- data/test/exhaustive/transaction_details_test.rb +8 -6
- data/test/exhaustive/void_test.rb +9 -3
- data/test/general/avs_test.rb +7 -7
- data/test/general/request_test.rb +20 -37
- data/test/general/transporter_test.rb +6 -6
- data/test/general/validator_test.rb +2 -2
- data/test/test_helper.rb +8 -18
- metadata +5 -27
- data/doc/classes/EWS/Transaction/FakeResponse.html +0 -451
- data/doc/classes/EWS/Transaction/Request.html +0 -469
- data/doc/classes/EWS/Transaction/Response.html +0 -472
- data/doc/classes/EWS/Transaction/Validator.html +0 -182
- data/doc/classes/EWS/Transporter.html +0 -269
- data/doc/classes/REXML/Document.html +0 -176
- data/doc/classes/REXML/Entity.html +0 -150
- data/doc/classes/REXML.html +0 -112
- data/doc/created.rid +0 -1
- data/doc/files/CHANGELOG.html +0 -156
- data/doc/files/LICENCE.html +0 -109
- data/doc/files/README.html +0 -371
- data/doc/files/VERSION.html +0 -107
- data/doc/files/lib/ews/transaction/fake_response_rb.html +0 -101
- data/doc/files/lib/ews/transaction/mapping_rb.html +0 -108
- data/doc/files/lib/ews/transaction/request_rb.html +0 -108
- data/doc/files/lib/ews/transaction/response_rb.html +0 -101
- data/doc/files/lib/ews/transaction/validator_rb.html +0 -101
- data/doc/files/lib/ews/transporter_rb.html +0 -108
- data/doc/files/lib/exact4r_rb.html +0 -117
- data/doc/fr_class_index.html +0 -34
- data/doc/fr_file_index.html +0 -37
- data/doc/fr_method_index.html +0 -48
- data/doc/index.html +0 -24
- data/doc/rdoc-style.css +0 -208
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -184,14 +184,3 @@ The following AVS responses are currently supported:
|
|
184
184
|
|
185
185
|
response.cc_verification_str1.should == "N123BROWNSTREET4902101234"
|
186
186
|
response.avs.should == N
|
187
|
-
|
188
|
-
= Rake tasks
|
189
|
-
|
190
|
-
test
|
191
|
-
Run all tests (default)
|
192
|
-
|
193
|
-
rdoc
|
194
|
-
Generate rdoc html in doc/
|
195
|
-
|
196
|
-
gem
|
197
|
-
Build gem
|
data/Rakefile
CHANGED
@@ -3,13 +3,45 @@ require 'rake/testtask'
|
|
3
3
|
require "rubygems"
|
4
4
|
require "rake/gempackagetask"
|
5
5
|
|
6
|
-
task :default => :test
|
6
|
+
task :default => :'test:chase'
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
namespace :test do
|
9
|
+
|
10
|
+
desc 'Run all tests against all processors. Use LOCATION to specify web service URL.'
|
11
|
+
task :all do
|
12
|
+
%w(chase tsys emergis moneris).each do |processor|
|
13
|
+
3.times { puts }
|
14
|
+
puts "#-----------------------"
|
15
|
+
puts "# Testing: " + processor
|
16
|
+
puts "#-----------------------"
|
17
|
+
|
18
|
+
ENV['PROCESSOR'] = processor
|
19
|
+
begin
|
20
|
+
Rake::Task[:'test:processor'].execute
|
21
|
+
rescue
|
22
|
+
# don't care, just run it again. can examine output later
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'Run all tests against Chase processor and Production web service. Use LOCATION to specify web service URL.'
|
28
|
+
task :chase do
|
29
|
+
ENV['PROCESSOR'] = 'chase'
|
30
|
+
ENV['LOCATION'] = 'PROD'
|
31
|
+
begin
|
32
|
+
Rake::Task[:'test:processor'].execute
|
33
|
+
rescue
|
34
|
+
# don't care, just run it again. can examine output later
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
desc 'Run all the tests against a specific processor. Use LOCATION to specify web service URL.'
|
39
|
+
Rake::TestTask.new(:processor) do |t|
|
40
|
+
t.libs << 'lib'
|
41
|
+
t.pattern = 'test/**/*_test.rb'
|
42
|
+
t.verbose = true
|
43
|
+
end
|
44
|
+
|
13
45
|
end
|
14
46
|
|
15
47
|
desc "Build the RDoc"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0
|
1
|
+
1.0
|
@@ -43,6 +43,8 @@ module EWS # :nodoc:
|
|
43
43
|
# :idebit_refund
|
44
44
|
# :secure_storage
|
45
45
|
# :secure_storage_eft
|
46
|
+
# :batch_query
|
47
|
+
# :batch_close
|
46
48
|
# :transaction_details
|
47
49
|
class Request
|
48
50
|
include Validator
|
@@ -117,6 +119,8 @@ METHOD_EOS
|
|
117
119
|
:idebit_refund => '54',
|
118
120
|
:secure_storage => '60',
|
119
121
|
:secure_storage_eft => '61',
|
122
|
+
:batch_query => '80',
|
123
|
+
:batch_close => '81',
|
120
124
|
:transaction_details => 'CR'
|
121
125
|
}.freeze unless defined?(@@transaction_codes)
|
122
126
|
|
@@ -40,6 +40,8 @@ module EWS # :nodoc:
|
|
40
40
|
|
41
41
|
if self.transaction_type == "CR"
|
42
42
|
append_error(:transaction_tag, "transaction_tag must be supplied") if self.transaction_tag.to_i < 1
|
43
|
+
elsif %w(80 81).include?(self.transaction_type)
|
44
|
+
# do nothing, no validation required
|
43
45
|
elsif %w(50 54).include?(self.transaction_type)
|
44
46
|
validate_for_pan
|
45
47
|
elsif !self.transaction_tag.blank?
|
data/lib/ews/transporter.rb
CHANGED
@@ -15,7 +15,7 @@ module EWS # :nodoc:
|
|
15
15
|
# Once configured to connect to a particular service, it can be used repeatedly
|
16
16
|
# to send as many transactions as required.
|
17
17
|
class Transporter
|
18
|
-
|
18
|
+
|
19
19
|
# Initialize a Transporter.
|
20
20
|
#
|
21
21
|
# You can specify the URL you would like the Transporter to connect to, although it defaults
|
@@ -30,6 +30,8 @@ module EWS # :nodoc:
|
|
30
30
|
def initialize(url = "https://api.e-xact.com", options = {})
|
31
31
|
@url = URI.parse(url.gsub(/\/$/,''))
|
32
32
|
@transport_type = options[:transport_type] || :rest
|
33
|
+
|
34
|
+
debugger
|
33
35
|
|
34
36
|
@@issuer_cert ||= File.dirname(__FILE__)+"/../../certs/equifax_ca.cer"
|
35
37
|
@@server_cert ||= File.new(File.dirname(__FILE__)+"/../../certs/exact.cer").read
|
@@ -52,7 +54,7 @@ module EWS # :nodoc:
|
|
52
54
|
request = build_http_request(transaction, transport_type, transport_details[:suffix])
|
53
55
|
request.basic_auth(transaction.gateway_id, transaction.password)
|
54
56
|
request.add_field "Accept", transport_details[:content_type]
|
55
|
-
request.add_field "User-Agent", "exact4r
|
57
|
+
request.add_field "User-Agent", "exact4r v1.0"
|
56
58
|
request.add_field "Content-type", "#{transport_details[:content_type]}; charset=UTF-8"
|
57
59
|
|
58
60
|
response = get_connection.request(request)
|
data/test/credentials.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
module Exact
|
2
|
+
class Credentials
|
3
|
+
|
4
|
+
attr_accessor :config
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
load_configuration(ENV['LOCATION'])
|
8
|
+
end
|
9
|
+
|
10
|
+
# obtain the credentials for the processor specified by
|
11
|
+
# ENV['PROCESSOR'], defaulting to 'emergis'
|
12
|
+
def current_gateway
|
13
|
+
processor = ENV['PROCESSOR'] || 'emergis'
|
14
|
+
self.config[processor]
|
15
|
+
end
|
16
|
+
|
17
|
+
def chase
|
18
|
+
self.config['chase']
|
19
|
+
end
|
20
|
+
def chase_batch
|
21
|
+
self.config['chase_batch']
|
22
|
+
end
|
23
|
+
def chase?
|
24
|
+
[self.chase[:gateway_id], self.chase_batch[:gateway_id]].include?(current_gateway[:gateway_id])
|
25
|
+
end
|
26
|
+
|
27
|
+
def tsys
|
28
|
+
self.config['tsys']
|
29
|
+
end
|
30
|
+
def tsys?
|
31
|
+
current_gateway[:gateway_id] == self.tsys[:gateway_id]
|
32
|
+
end
|
33
|
+
|
34
|
+
def emergis
|
35
|
+
self.config['emergis']
|
36
|
+
end
|
37
|
+
def emergis?
|
38
|
+
current_gateway[:gateway_id] == self.emergis[:gateway_id]
|
39
|
+
end
|
40
|
+
|
41
|
+
def moneris
|
42
|
+
self.config['moneris']
|
43
|
+
end
|
44
|
+
def moneris?
|
45
|
+
current_gateway[:gateway_id] == self.moneris[:gateway_id]
|
46
|
+
end
|
47
|
+
|
48
|
+
def load_configuration(environment)
|
49
|
+
config_file = File.dirname(__FILE__) + '/credentials.yml'
|
50
|
+
yaml = YAML::load(IO.read(config_file))
|
51
|
+
environment ||= 'DEV'
|
52
|
+
|
53
|
+
self.config = yaml[environment]
|
54
|
+
|
55
|
+
if self.config.nil?
|
56
|
+
abort "No credentials configured. Please create a properly-formatted credentials.yml file in #{File.dirname(__FILE__)}."
|
57
|
+
end
|
58
|
+
end
|
59
|
+
private :load_configuration
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
DEV:
|
2
|
+
location: http://ws.local/
|
3
|
+
tsys:
|
4
|
+
:gateway_id: AD0007-01
|
5
|
+
:password: 3uLi726f
|
6
|
+
emergis:
|
7
|
+
:gateway_id: AD0009-01
|
8
|
+
:password: 8L588rmd
|
9
|
+
moneris:
|
10
|
+
:gateway_id: AD0154-01
|
11
|
+
:password: 77hgy56y
|
12
|
+
chase:
|
13
|
+
:gateway_id: AD0008-01
|
14
|
+
:password: 7nfcpc7n
|
15
|
+
chase_batch:
|
16
|
+
:gateway_id: AD0021-02
|
17
|
+
:password: 22ra7k69
|
18
|
+
|
19
|
+
QA:
|
20
|
+
location: http://api.qa.e-xact.com/
|
21
|
+
tsys:
|
22
|
+
:gateway_id: A04766-01
|
23
|
+
:password: 4apitest
|
24
|
+
emergis:
|
25
|
+
:gateway_id: A04763-01
|
26
|
+
:password: 4apitest
|
27
|
+
moneris:
|
28
|
+
:gateway_id: A04760-01
|
29
|
+
:password: 4apitest
|
30
|
+
chase:
|
31
|
+
:gateway_id: A04757-02
|
32
|
+
:password: 4apitest
|
33
|
+
chase_batch:
|
34
|
+
:gateway_id: A04757-01
|
35
|
+
:password: 4apitest
|
36
|
+
|
37
|
+
PROD:
|
38
|
+
location: https://api.e-xact.com/
|
39
|
+
tsys:
|
40
|
+
:gateway_id: A08741-01
|
41
|
+
:password: 4apitest
|
42
|
+
emergis:
|
43
|
+
:gateway_id: A08738-01
|
44
|
+
:password: 4apitest
|
45
|
+
moneris:
|
46
|
+
:gateway_id: A08735-01
|
47
|
+
:password: 4apitest
|
48
|
+
chase:
|
49
|
+
:gateway_id: A08732-02
|
50
|
+
:password: 4apitest
|
51
|
+
chase_batch:
|
52
|
+
:gateway_id: A08732-01
|
53
|
+
:password: 4apitest
|
@@ -0,0 +1,193 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class BatchQueryCloseTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
# NOTE: DO NOT submit an amount with a cents value of LESS THAN 25 to this host as it will
|
6
|
+
# reply with a bank_resp_code == 200 + cents
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@transporter = EWS::Transporter.new(@@credentials.config['location'])
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_mandatory
|
13
|
+
request = EWS::Transaction::Request.new(:transaction_type => :batch_query)
|
14
|
+
assert !request.valid?
|
15
|
+
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
16
|
+
|
17
|
+
request.gateway_id = @@credentials.chase_batch[:gateway_id]
|
18
|
+
assert !request.valid?
|
19
|
+
assert_equal "password must be supplied", request.errors[:password]
|
20
|
+
|
21
|
+
request.password = @@credentials.chase_batch[:password]
|
22
|
+
assert request.valid?
|
23
|
+
|
24
|
+
# yep, that's it. only gateway_id and password are required
|
25
|
+
|
26
|
+
request = EWS::Transaction::Request.new(:transaction_type => :batch_close)
|
27
|
+
assert !request.valid?
|
28
|
+
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
29
|
+
|
30
|
+
request.gateway_id = @@credentials.chase_batch[:gateway_id]
|
31
|
+
assert !request.valid?
|
32
|
+
assert_equal "password must be supplied", request.errors[:password]
|
33
|
+
|
34
|
+
request.password = @@credentials.chase_batch[:password]
|
35
|
+
assert request.valid?
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_query
|
39
|
+
return unless @@credentials.chase?
|
40
|
+
|
41
|
+
# send a transaction to ensure there is a batch in progress
|
42
|
+
submit_purchase
|
43
|
+
|
44
|
+
request = EWS::Transaction::Request.new(@@credentials.chase_batch.merge(:transaction_type => :batch_query))
|
45
|
+
|
46
|
+
response = @transporter.submit(request, :json)
|
47
|
+
assert_response_approved response
|
48
|
+
assert_equal "BATINQ", response.authorization_num
|
49
|
+
|
50
|
+
response = @transporter.submit(request, :rest)
|
51
|
+
assert_response_approved response
|
52
|
+
assert_equal "BATINQ", response.authorization_num
|
53
|
+
|
54
|
+
response = @transporter.submit(request, :soap)
|
55
|
+
assert_response_approved response
|
56
|
+
assert_equal "BATINQ", response.authorization_num
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_close_json
|
60
|
+
return unless @@credentials.chase?
|
61
|
+
|
62
|
+
# send a transaction to ensure there is a batch in progress
|
63
|
+
submit_purchase
|
64
|
+
|
65
|
+
request = EWS::Transaction::Request.new(@@credentials.chase_batch.merge(:transaction_type => :batch_close))
|
66
|
+
|
67
|
+
response = @transporter.submit(request, :json)
|
68
|
+
assert_response_approved response
|
69
|
+
assert_equal "BATCLS", response.authorization_num
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_close_rest
|
73
|
+
return unless @@credentials.chase?
|
74
|
+
|
75
|
+
# send a transaction to ensure there is a batch in progress
|
76
|
+
submit_purchase
|
77
|
+
|
78
|
+
request = EWS::Transaction::Request.new(@@credentials.chase_batch.merge(:transaction_type => :batch_close))
|
79
|
+
|
80
|
+
response = @transporter.submit(request, :rest)
|
81
|
+
assert_response_approved response
|
82
|
+
assert_equal "BATCLS", response.authorization_num
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_close_soap
|
86
|
+
return unless @@credentials.chase?
|
87
|
+
|
88
|
+
# send a transaction to ensure there is a batch in progress
|
89
|
+
submit_purchase
|
90
|
+
|
91
|
+
request = EWS::Transaction::Request.new(@@credentials.chase_batch.merge(:transaction_type => :batch_close))
|
92
|
+
|
93
|
+
response = @transporter.submit(request, :soap)
|
94
|
+
assert_response_approved response
|
95
|
+
assert_equal "BATCLS", response.authorization_num
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_cant_close_already_closed_batch
|
99
|
+
return unless @@credentials.chase?
|
100
|
+
|
101
|
+
# ensure any existing batch is closed
|
102
|
+
submit_batch_close
|
103
|
+
|
104
|
+
response = submit_batch_close
|
105
|
+
assert !response.approved?
|
106
|
+
assert_nil response.bank_resp_code
|
107
|
+
assert_equal "BAT ALREADY RELS", response.bank_message
|
108
|
+
end
|
109
|
+
|
110
|
+
# test cards
|
111
|
+
# Visa: 4111111111111111
|
112
|
+
# MasterCard: 5500000000000004
|
113
|
+
# American Express: 340000000000009
|
114
|
+
def test_summation
|
115
|
+
return unless @@credentials.chase?
|
116
|
+
|
117
|
+
submit_batch_close # ensure we're starting a new batch
|
118
|
+
|
119
|
+
submit_purchase(:amount => 10.00)
|
120
|
+
submit_purchase(:amount => 15.29)
|
121
|
+
submit_purchase(:amount => 122.75)
|
122
|
+
# 3 transactions, total of 148.04 on VISA
|
123
|
+
|
124
|
+
submit_purchase({:cc_number => "5500000000000004", :amount => 1754.60})
|
125
|
+
submit_purchase({:cc_number => "5500000000000004", :amount => 1544.87})
|
126
|
+
# 2 transactions, total of 3299.47 on Mastercard
|
127
|
+
|
128
|
+
submit_purchase({:cc_number => "340000000000009", :amount => 43.26})
|
129
|
+
submit_purchase({:cc_number => "340000000000009", :amount => 185.75})
|
130
|
+
submit_purchase({:cc_number => "340000000000009", :amount => 877.53})
|
131
|
+
submit_purchase({:cc_number => "340000000000009", :amount => 7.45})
|
132
|
+
# 4 transactions, total of 1113.99 on Amex
|
133
|
+
|
134
|
+
response = submit_batch_query
|
135
|
+
assert_response_approved response
|
136
|
+
assert_equal "BATINQ", response.authorization_num
|
137
|
+
assert_equal "<CR|5|344751><AE|4|111399>", response.bank_message
|
138
|
+
|
139
|
+
# now close the batch
|
140
|
+
response = submit_batch_close
|
141
|
+
assert_response_approved response
|
142
|
+
assert_equal "BATCLS", response.authorization_num
|
143
|
+
assert_equal "<CR|5|344751><AE|4|111399>", response.bank_message
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_large_summation
|
147
|
+
return unless @@credentials.chase?
|
148
|
+
|
149
|
+
submit_batch_close # ensure we're starting a new batch
|
150
|
+
|
151
|
+
10.times { submit_purchase(:amount => 99999.0) }
|
152
|
+
|
153
|
+
response = submit_batch_query
|
154
|
+
assert_response_approved response
|
155
|
+
assert_equal "BATINQ", response.authorization_num
|
156
|
+
assert_equal "<CR|10|99999000>", response.bank_message
|
157
|
+
|
158
|
+
# now close the batch
|
159
|
+
response = submit_batch_close
|
160
|
+
assert_response_approved response
|
161
|
+
assert_equal "BATCLS", response.authorization_num
|
162
|
+
assert_equal "<CR|10|99999000>", response.bank_message
|
163
|
+
end
|
164
|
+
|
165
|
+
private
|
166
|
+
def submit_batch_query
|
167
|
+
request = EWS::Transaction::Request.new(@@credentials.chase_batch.merge(:transaction_type => :batch_query))
|
168
|
+
@transporter.submit(request, :rest)
|
169
|
+
end
|
170
|
+
|
171
|
+
def submit_batch_close
|
172
|
+
request = EWS::Transaction::Request.new(@@credentials.chase_batch.merge(:transaction_type => :batch_close))
|
173
|
+
@transporter.submit(request, :json)
|
174
|
+
end
|
175
|
+
|
176
|
+
def submit_purchase(options = {:amount => 10.0})
|
177
|
+
params = cc_number_params.
|
178
|
+
merge(@@credentials.chase_batch).
|
179
|
+
merge(:transaction_type => :purchase).
|
180
|
+
merge(options)
|
181
|
+
request = EWS::Transaction::Request.new(params)
|
182
|
+
assert request.valid?, request.errors.inspect
|
183
|
+
|
184
|
+
# if this is failing, see note at top of page first!
|
185
|
+
assert @transporter.submit(request, :json).approved?
|
186
|
+
end
|
187
|
+
|
188
|
+
def assert_response_approved(response)
|
189
|
+
assert_not_nil response, "response should not be nil"
|
190
|
+
assert response.approved?, "#{response.error_number} / #{response.error_description} / #{response.exact_message} / #{response.bank_message}"
|
191
|
+
assert_equal "000", response.bank_resp_code
|
192
|
+
end
|
193
|
+
end
|
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/../test_helper"
|
|
3
3
|
class ForcedPostTest < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
-
@transporter = EWS::Transporter.new(
|
6
|
+
@transporter = EWS::Transporter.new(@@credentials.config['location'])
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_mandatory
|
@@ -11,11 +11,11 @@ class ForcedPostTest < Test::Unit::TestCase
|
|
11
11
|
assert !request.valid?
|
12
12
|
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
13
13
|
|
14
|
-
request.gateway_id =
|
14
|
+
request.gateway_id = @@credentials.current_gateway[:gateway_id]
|
15
15
|
assert !request.valid?
|
16
16
|
assert_equal "password must be supplied", request.errors[:password]
|
17
17
|
|
18
|
-
request.password =
|
18
|
+
request.password = @@credentials.current_gateway[:password]
|
19
19
|
assert !request.valid?
|
20
20
|
assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
|
21
21
|
|
@@ -5,7 +5,7 @@ class OnlineDebitPurchaseTest < Test::Unit::TestCase
|
|
5
5
|
# NOTE: INTERAC Online Debit transactions are ONLY supported by Chase merchants
|
6
6
|
|
7
7
|
def setup
|
8
|
-
@transporter = EWS::Transporter.new(
|
8
|
+
@transporter = EWS::Transporter.new(@@credentials.config['location'])
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_mandatory
|
@@ -13,11 +13,11 @@ class OnlineDebitPurchaseTest < Test::Unit::TestCase
|
|
13
13
|
assert !request.valid?
|
14
14
|
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
15
15
|
|
16
|
-
request.gateway_id =
|
16
|
+
request.gateway_id = @@credentials.current_gateway[:gateway_id]
|
17
17
|
assert !request.valid?
|
18
18
|
assert_equal "password must be supplied", request.errors[:password]
|
19
19
|
|
20
|
-
request.password =
|
20
|
+
request.password = @@credentials.current_gateway[:password]
|
21
21
|
assert !request.valid?
|
22
22
|
assert_equal "pan must be supplied", request.errors[:pan]
|
23
23
|
|
@@ -35,12 +35,14 @@ class OnlineDebitPurchaseTest < Test::Unit::TestCase
|
|
35
35
|
|
36
36
|
# PAN may be specificed as a simple account number...
|
37
37
|
def test_by_pan_as_cc_number
|
38
|
+
return unless @@credentials.chase?
|
39
|
+
|
38
40
|
request = EWS::Transaction::Request.new({
|
39
41
|
:transaction_type => :idebit_purchase,
|
40
42
|
:amount => 11.25,
|
41
43
|
:pan => TEST_CARD_NUMBER,
|
42
44
|
:cardholder_name => TEST_CARD_HOLDER
|
43
|
-
}.merge(
|
45
|
+
}.merge(@@credentials.current_gateway))
|
44
46
|
assert request.valid?, request.errors.inspect
|
45
47
|
|
46
48
|
assert_details_correct request, @transporter.submit(request, :json)
|
@@ -50,12 +52,14 @@ class OnlineDebitPurchaseTest < Test::Unit::TestCase
|
|
50
52
|
|
51
53
|
# ...or in track2 format
|
52
54
|
def test_by_pan_as_cc_number
|
55
|
+
return unless @@credentials.chase?
|
56
|
+
|
53
57
|
request = EWS::Transaction::Request.new({
|
54
58
|
:transaction_type => :idebit_purchase,
|
55
59
|
:amount => 11.25,
|
56
60
|
:pan => TEST_TRACK2,
|
57
61
|
:cardholder_name => TEST_CARD_HOLDER
|
58
|
-
}.merge(
|
62
|
+
}.merge(@@credentials.current_gateway))
|
59
63
|
assert request.valid?, request.errors.inspect
|
60
64
|
|
61
65
|
assert_details_correct request, @transporter.submit(request, :json)
|
@@ -5,7 +5,7 @@ class OnlineDebitRefundTest < Test::Unit::TestCase
|
|
5
5
|
# NOTE: INTERAC Online Debit transactions are ONLY supported by Chase merchants
|
6
6
|
|
7
7
|
def setup
|
8
|
-
@transporter = EWS::Transporter.new(
|
8
|
+
@transporter = EWS::Transporter.new(@@credentials.config['location'])
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_mandatory
|
@@ -13,11 +13,11 @@ class OnlineDebitRefundTest < Test::Unit::TestCase
|
|
13
13
|
assert !request.valid?
|
14
14
|
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
15
15
|
|
16
|
-
request.gateway_id =
|
16
|
+
request.gateway_id = @@credentials.current_gateway[:gateway_id]
|
17
17
|
assert !request.valid?
|
18
18
|
assert_equal "password must be supplied", request.errors[:password]
|
19
19
|
|
20
|
-
request.password =
|
20
|
+
request.password = @@credentials.current_gateway[:password]
|
21
21
|
assert !request.valid?
|
22
22
|
assert_equal "pan must be supplied", request.errors[:pan]
|
23
23
|
|
@@ -35,12 +35,14 @@ class OnlineDebitRefundTest < Test::Unit::TestCase
|
|
35
35
|
|
36
36
|
# PAN may be specificed as a simple account number...
|
37
37
|
def test_by_pan_as_cc_number
|
38
|
+
return unless @@credentials.chase?
|
39
|
+
|
38
40
|
request = EWS::Transaction::Request.new({
|
39
41
|
:transaction_type => :idebit_refund,
|
40
42
|
:amount => 11.25,
|
41
43
|
:pan => TEST_CARD_NUMBER,
|
42
44
|
:cardholder_name => TEST_CARD_HOLDER
|
43
|
-
}.merge(
|
45
|
+
}.merge(@@credentials.current_gateway))
|
44
46
|
assert request.valid?, request.errors.inspect
|
45
47
|
|
46
48
|
assert_details_correct request, @transporter.submit(request, :json)
|
@@ -50,12 +52,14 @@ class OnlineDebitRefundTest < Test::Unit::TestCase
|
|
50
52
|
|
51
53
|
# ...or in track2 format
|
52
54
|
def test_by_pan_as_cc_number
|
55
|
+
return unless @@credentials.chase?
|
56
|
+
|
53
57
|
request = EWS::Transaction::Request.new({
|
54
58
|
:transaction_type => :idebit_refund,
|
55
59
|
:amount => 11.25,
|
56
60
|
:pan => TEST_TRACK2,
|
57
61
|
:cardholder_name => TEST_CARD_HOLDER
|
58
|
-
}.merge(
|
62
|
+
}.merge(@@credentials.current_gateway))
|
59
63
|
assert request.valid?, request.errors.inspect
|
60
64
|
|
61
65
|
assert_details_correct request, @transporter.submit(request, :json)
|
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/../test_helper"
|
|
3
3
|
class PreAuthCompletionTest < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
-
@transporter = EWS::Transporter.new(
|
6
|
+
@transporter = EWS::Transporter.new(@@credentials.config['location'])
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_mandatory
|
@@ -11,11 +11,11 @@ class PreAuthCompletionTest < Test::Unit::TestCase
|
|
11
11
|
assert !request.valid?
|
12
12
|
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
13
13
|
|
14
|
-
request.gateway_id =
|
14
|
+
request.gateway_id = @@credentials.current_gateway[:gateway_id]
|
15
15
|
assert !request.valid?
|
16
16
|
assert_equal "password must be supplied", request.errors[:password]
|
17
17
|
|
18
|
-
request.password =
|
18
|
+
request.password = @@credentials.current_gateway[:password]
|
19
19
|
assert !request.valid?
|
20
20
|
assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
|
21
21
|
|
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/../test_helper"
|
|
3
3
|
class PreAuthOnlyTest < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
-
@transporter = EWS::Transporter.new(
|
6
|
+
@transporter = EWS::Transporter.new(@@credentials.config['location'])
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_mandatory
|
@@ -11,11 +11,11 @@ class PreAuthOnlyTest < Test::Unit::TestCase
|
|
11
11
|
assert !request.valid?
|
12
12
|
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
13
13
|
|
14
|
-
request.gateway_id =
|
14
|
+
request.gateway_id = @@credentials.current_gateway[:gateway_id]
|
15
15
|
assert !request.valid?
|
16
16
|
assert_equal "password must be supplied", request.errors[:password]
|
17
17
|
|
18
|
-
request.password =
|
18
|
+
request.password = @@credentials.current_gateway[:password]
|
19
19
|
assert !request.valid?
|
20
20
|
assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
|
21
21
|
|
@@ -36,6 +36,8 @@ class PreAuthOnlyTest < Test::Unit::TestCase
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def test_by_credit_card
|
39
|
+
return unless @@credentials.chase? || @@credentials.emergis?
|
40
|
+
|
39
41
|
request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :pre_auth_only))
|
40
42
|
request.amount = 11.25
|
41
43
|
assert request.valid?, request.errors.inspect
|
@@ -46,6 +48,8 @@ class PreAuthOnlyTest < Test::Unit::TestCase
|
|
46
48
|
end
|
47
49
|
|
48
50
|
def test_by_track1
|
51
|
+
return unless @@credentials.chase? || @@credentials.emergis?
|
52
|
+
|
49
53
|
request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :pre_auth_only))
|
50
54
|
request.amount = 11.25
|
51
55
|
assert request.valid?, request.errors.inspect
|
@@ -56,6 +60,8 @@ class PreAuthOnlyTest < Test::Unit::TestCase
|
|
56
60
|
end
|
57
61
|
|
58
62
|
def test_by_track2
|
63
|
+
return unless @@credentials.chase? || @@credentials.emergis?
|
64
|
+
|
59
65
|
request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :pre_auth_only))
|
60
66
|
request.amount = 11.25
|
61
67
|
assert request.valid?, request.errors.inspect
|
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/../test_helper"
|
|
3
3
|
class PreAuthTest < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
-
@transporter = EWS::Transporter.new(
|
6
|
+
@transporter = EWS::Transporter.new(@@credentials.config['location'])
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_mandatory
|
@@ -11,11 +11,11 @@ class PreAuthTest < Test::Unit::TestCase
|
|
11
11
|
assert !request.valid?
|
12
12
|
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
13
13
|
|
14
|
-
request.gateway_id =
|
14
|
+
request.gateway_id = @@credentials.current_gateway[:gateway_id]
|
15
15
|
assert !request.valid?
|
16
16
|
assert_equal "password must be supplied", request.errors[:password]
|
17
17
|
|
18
|
-
request.password =
|
18
|
+
request.password = @@credentials.current_gateway[:password]
|
19
19
|
assert !request.valid?
|
20
20
|
assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
|
21
21
|
|