exact4r 0.9.1 → 0.9.2
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 +6 -1
- data/README +71 -3
- data/Rakefile +8 -7
- data/VERSION +1 -1
- data/doc/classes/EWS/Transaction/FakeResponse.html +451 -0
- data/doc/classes/EWS/Transaction/Request.html +61 -80
- data/doc/classes/EWS/Transaction/Response.html +206 -14
- data/doc/classes/EWS/Transaction/Validator.html +182 -0
- data/doc/classes/EWS/Transporter.html +269 -0
- data/doc/classes/REXML/Document.html +176 -0
- data/doc/classes/REXML/Entity.html +150 -0
- data/doc/classes/REXML.html +112 -0
- data/doc/created.rid +1 -1
- data/doc/files/CHANGELOG.html +156 -0
- data/doc/files/LICENCE.html +109 -0
- data/doc/files/README.html +164 -23
- data/doc/files/VERSION.html +107 -0
- data/doc/files/lib/ews/transaction/fake_response_rb.html +101 -0
- data/doc/files/lib/ews/transaction/mapping_rb.html +1 -1
- data/doc/files/lib/ews/transaction/request_rb.html +8 -1
- data/doc/files/lib/ews/transaction/response_rb.html +1 -1
- data/doc/files/lib/ews/transaction/validator_rb.html +101 -0
- data/doc/files/lib/ews/{transaction/transporter_rb.html → transporter_rb.html} +3 -3
- data/doc/files/lib/exact4r_rb.html +6 -2
- data/doc/fr_class_index.html +6 -1
- data/doc/fr_file_index.html +6 -1
- data/doc/fr_method_index.html +22 -7
- data/lib/ews/transaction/mapping.rb +41 -40
- data/lib/ews/transaction/request.rb +3 -4
- data/lib/ews/transaction/response.rb +5 -0
- data/lib/ews/transaction/validator.rb +44 -34
- data/lib/ews/transporter.rb +3 -3
- data/lib/exact4r.rb +1 -1
- data/test/exhaustive/forced_post_test.rb +75 -0
- data/test/exhaustive/online_debit_purchase_test.rb +66 -0
- data/test/exhaustive/online_debit_refund_test.rb +66 -0
- data/test/exhaustive/pre_auth_completion_test.rb +99 -0
- data/test/exhaustive/pre_auth_only_test.rb +68 -0
- data/test/exhaustive/pre_auth_test.rb +68 -0
- data/test/exhaustive/purchase_correction_test.rb +79 -0
- data/test/exhaustive/purchase_test.rb +68 -0
- data/test/exhaustive/recurring_seed_pre_auth_test.rb +68 -0
- data/test/exhaustive/recurring_seed_purchase_test.rb +68 -0
- data/test/exhaustive/refund_correction_test.rb +79 -0
- data/test/exhaustive/refund_test.rb +68 -0
- data/test/exhaustive/secure_storage_test.rb +75 -0
- data/test/exhaustive/tagged_online_debit_refund_test.rb +168 -0
- data/test/exhaustive/tagged_pre_auth_completion_test.rb +119 -0
- data/test/exhaustive/tagged_pre_auth_test.rb +116 -0
- data/test/exhaustive/tagged_purchase_test.rb +116 -0
- data/test/exhaustive/tagged_refund_test.rb +144 -0
- data/test/exhaustive/transaction_details_test.rb +86 -0
- data/test/exhaustive/void_test.rb +75 -0
- data/{spec/avs_spec.rb → test/general/avs_test.rb} +33 -44
- data/test/general/json_encoding_test.rb +62 -0
- data/test/general/request_test.rb +185 -0
- data/test/general/rest_encoding_test.rb +174 -0
- data/test/general/soap_encoding_test.rb +211 -0
- data/test/general/transporter_test.rb +54 -0
- data/test/general/validator_test.rb +150 -0
- data/test/samples/rest.dodgy.response.xml +60 -0
- data/test/samples/rest.everything.response.xml +67 -0
- data/test/samples/rest.response.xml +60 -0
- data/test/samples/soap.deserialization.fault.xml +10 -0
- data/test/samples/soap.dodgy.response.xml +95 -0
- data/test/samples/soap.everything.response.xml +75 -0
- data/test/samples/soap.generalfailure.fault.xml +13 -0
- data/test/samples/soap.nulltransaction.fault.xml +14 -0
- data/test/samples/soap.response.xml +95 -0
- data/test/test_helper.rb +115 -0
- metadata +52 -12
- data/doc/classes/EWS/Transaction/Transporter.html +0 -251
- data/pkg/exact4r-0.5.gem +0 -0
- data/spec/mapping_spec.rb +0 -126
- data/spec/request_spec.rb +0 -154
- data/spec/spec_helper.rb +0 -55
- data/spec/transporter_spec.rb +0 -43
- data/spec/validator_spec.rb +0 -150
@@ -0,0 +1,75 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class SecureStorageTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@transporter = EWS::Transporter.new(LOCATION)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_mandatory
|
10
|
+
request = EWS::Transaction::Request.new(:transaction_type => :secure_storage)
|
11
|
+
assert !request.valid?
|
12
|
+
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
13
|
+
|
14
|
+
request.gateway_id = EMERGIS_BASIC_AUTH[:gateway_id]
|
15
|
+
assert !request.valid?
|
16
|
+
assert_equal "password must be supplied", request.errors[:password]
|
17
|
+
|
18
|
+
request.password = EMERGIS_BASIC_AUTH[:password]
|
19
|
+
assert !request.valid?
|
20
|
+
assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
|
21
|
+
|
22
|
+
request.cc_number = "4111111111111111"
|
23
|
+
assert !request.valid?
|
24
|
+
assert_equal "cc_expiry must be supplied", request.errors[:cc_expiry]
|
25
|
+
|
26
|
+
request.cc_expiry = "0913"
|
27
|
+
assert !request.valid?
|
28
|
+
assert_equal "cardholder_name must be supplied", request.errors[:cardholder_name]
|
29
|
+
|
30
|
+
request.cardholder_name = "Simon Jones"
|
31
|
+
assert !request.valid?
|
32
|
+
assert_equal "amount must be supplied", request.errors[:amount]
|
33
|
+
|
34
|
+
request.amount = 10
|
35
|
+
assert !request.valid?
|
36
|
+
assert_equal "reference_no must be supplied", request.errors[:reference_no]
|
37
|
+
|
38
|
+
request.reference_no = "5656758"
|
39
|
+
assert request.valid?
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_by_credit_card
|
43
|
+
request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :secure_storage))
|
44
|
+
request.amount = 11.25
|
45
|
+
request.reference_no = "5656758"
|
46
|
+
assert request.valid?, request.errors.inspect
|
47
|
+
|
48
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
49
|
+
assert_details_correct request, @transporter.submit(request, :rest)
|
50
|
+
assert_details_correct request, @transporter.submit(request, :soap)
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_by_track1
|
54
|
+
request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :secure_storage))
|
55
|
+
request.amount = 11.25
|
56
|
+
request.reference_no = "5656758"
|
57
|
+
assert request.valid?, request.errors.inspect
|
58
|
+
|
59
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
60
|
+
assert_details_correct request, @transporter.submit(request, :rest)
|
61
|
+
assert_details_correct request, @transporter.submit(request, :soap)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_by_track2
|
65
|
+
request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :secure_storage))
|
66
|
+
request.amount = 11.25
|
67
|
+
request.reference_no = "5656758"
|
68
|
+
assert request.valid?, request.errors.inspect
|
69
|
+
|
70
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
71
|
+
assert_details_correct request, @transporter.submit(request, :rest)
|
72
|
+
assert_details_correct request, @transporter.submit(request, :soap)
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
@@ -0,0 +1,168 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class TaggedRefundTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@transporter = EWS::Transporter.new(LOCATION)
|
7
|
+
|
8
|
+
# do initial recurring seed
|
9
|
+
request = EWS::Transaction::Request.new({
|
10
|
+
:transaction_type => :idebit_purchase,
|
11
|
+
:amount => 11.25,
|
12
|
+
:pan => TEST_CARD_NUMBER,
|
13
|
+
:cardholder_name => TEST_CARD_HOLDER
|
14
|
+
}.merge(CHASE_BASIC_AUTH))
|
15
|
+
assert request.valid?, request.errors.inspect
|
16
|
+
|
17
|
+
@response = @transporter.submit(request, :json)
|
18
|
+
assert @response.approved?
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_mandatory
|
22
|
+
request = EWS::Transaction::Request.new(:transaction_type => :tagged_online_debit_refund)
|
23
|
+
assert !request.valid?
|
24
|
+
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
25
|
+
|
26
|
+
request.gateway_id = CHASE_BASIC_AUTH[:gateway_id]
|
27
|
+
assert !request.valid?
|
28
|
+
assert_equal "password must be supplied", request.errors[:password]
|
29
|
+
|
30
|
+
request.password = CHASE_BASIC_AUTH[:password]
|
31
|
+
assert !request.valid?
|
32
|
+
assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
|
33
|
+
|
34
|
+
request.transaction_tag = 1234
|
35
|
+
assert !request.valid?
|
36
|
+
assert_equal "authorization_num must be supplied", request.errors[:authorization_num]
|
37
|
+
|
38
|
+
request.authorization_num = "TH6754"
|
39
|
+
assert !request.valid?
|
40
|
+
assert_equal "amount must be supplied", request.errors[:amount]
|
41
|
+
|
42
|
+
request.amount = 11.25
|
43
|
+
assert request.valid?
|
44
|
+
|
45
|
+
request.cc_number = "4111111111111111"
|
46
|
+
assert !request.valid?
|
47
|
+
assert_equal "do not set cc_number for tagged transactions", request.errors[:cc_number]
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_json
|
51
|
+
request = EWS::Transaction::Request.new({
|
52
|
+
:transaction_type => :tagged_online_debit_refund,
|
53
|
+
:amount => 12.50,
|
54
|
+
:transaction_tag => @response.transaction_tag,
|
55
|
+
:authorization_num => @response.authorization_num
|
56
|
+
}.merge(CHASE_BASIC_AUTH))
|
57
|
+
assert request.valid?, request.errors.inspect
|
58
|
+
|
59
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_rest
|
63
|
+
request = EWS::Transaction::Request.new({
|
64
|
+
:transaction_type => :tagged_online_debit_refund,
|
65
|
+
:amount => 12.50,
|
66
|
+
:transaction_tag => @response.transaction_tag,
|
67
|
+
:authorization_num => @response.authorization_num
|
68
|
+
}.merge(CHASE_BASIC_AUTH))
|
69
|
+
assert request.valid?, request.errors.inspect
|
70
|
+
|
71
|
+
assert_details_correct request, @transporter.submit(request, :rest)
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_soap
|
75
|
+
request = EWS::Transaction::Request.new({
|
76
|
+
:transaction_type => :tagged_online_debit_refund,
|
77
|
+
:amount => 12.50,
|
78
|
+
:transaction_tag => @response.transaction_tag,
|
79
|
+
:authorization_num => @response.authorization_num
|
80
|
+
}.merge(CHASE_BASIC_AUTH))
|
81
|
+
assert request.valid?, request.errors.inspect
|
82
|
+
|
83
|
+
assert_details_correct request, @transporter.submit(request, :soap)
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_multiple_refunds_against_one_seed
|
87
|
+
request = EWS::Transaction::Request.new({
|
88
|
+
:transaction_type => :tagged_online_debit_refund,
|
89
|
+
:amount => 3.50,
|
90
|
+
:transaction_tag => @response.transaction_tag,
|
91
|
+
:authorization_num => @response.authorization_num
|
92
|
+
}.merge(CHASE_BASIC_AUTH))
|
93
|
+
assert request.valid?, request.errors.inspect
|
94
|
+
|
95
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
96
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
97
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
98
|
+
|
99
|
+
# can't refund more than original amount
|
100
|
+
response = @transporter.submit(request, :json)
|
101
|
+
assert !response.approved?
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_not_permitted_after_recurring_seed_purchase
|
105
|
+
# do initial recurring seed pre auth
|
106
|
+
pre_request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :recurring_seed_purchase).merge(CHASE_BASIC_AUTH))
|
107
|
+
pre_request.amount = 10.1
|
108
|
+
assert pre_request.valid?, pre_request.errors.inspect
|
109
|
+
|
110
|
+
pre_response = @transporter.submit(pre_request, :json)
|
111
|
+
assert pre_response.approved?
|
112
|
+
|
113
|
+
# now do the tagged refund
|
114
|
+
request = EWS::Transaction::Request.new({
|
115
|
+
:transaction_type => :tagged_online_debit_refund,
|
116
|
+
:amount => 12.50,
|
117
|
+
:transaction_tag => @response.transaction_tag,
|
118
|
+
:authorization_num => @response.authorization_num
|
119
|
+
}.merge(CHASE_BASIC_AUTH))
|
120
|
+
assert request.valid?, request.errors.inspect
|
121
|
+
|
122
|
+
response = @transporter.submit(request, :json)
|
123
|
+
assert !response.approved?
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_not_permitted_after_recurring_seed_pre_auth
|
127
|
+
# do initial recurring seed pre auth
|
128
|
+
pre_request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :recurring_seed_pre_auth).merge(CHASE_BASIC_AUTH))
|
129
|
+
pre_request.amount = 10.1
|
130
|
+
assert pre_request.valid?, pre_request.errors.inspect
|
131
|
+
|
132
|
+
pre_response = @transporter.submit(pre_request, :json)
|
133
|
+
assert pre_response.approved?
|
134
|
+
|
135
|
+
# now do the tagged refund
|
136
|
+
request = EWS::Transaction::Request.new({
|
137
|
+
:transaction_type => :tagged_online_debit_refund,
|
138
|
+
:amount => 12.50,
|
139
|
+
:transaction_tag => @response.transaction_tag,
|
140
|
+
:authorization_num => @response.authorization_num
|
141
|
+
}.merge(CHASE_BASIC_AUTH))
|
142
|
+
assert request.valid?, request.errors.inspect
|
143
|
+
|
144
|
+
response = @transporter.submit(request, :json)
|
145
|
+
assert !response.approved?
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_permitted_after_plain_purchase
|
149
|
+
# do initial purchase
|
150
|
+
pre_request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :purchase).merge(CHASE_BASIC_AUTH))
|
151
|
+
pre_request.amount = 10.1
|
152
|
+
assert pre_request.valid?, pre_request.errors.inspect
|
153
|
+
|
154
|
+
pre_response = @transporter.submit(pre_request, :json)
|
155
|
+
assert pre_response.approved?
|
156
|
+
|
157
|
+
# now do the tagged refund
|
158
|
+
request = EWS::Transaction::Request.new({
|
159
|
+
:transaction_type => :tagged_refund,
|
160
|
+
:amount => 12.50,
|
161
|
+
:transaction_tag => @response.transaction_tag,
|
162
|
+
:authorization_num => @response.authorization_num
|
163
|
+
}.merge(CHASE_BASIC_AUTH))
|
164
|
+
assert request.valid?, request.errors.inspect
|
165
|
+
|
166
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
167
|
+
end
|
168
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class TaggedPreAuthCompletionTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@transporter = EWS::Transporter.new(LOCATION)
|
7
|
+
|
8
|
+
# do initial recurring seed
|
9
|
+
request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :recurring_seed_pre_auth))
|
10
|
+
request.amount = 11.25
|
11
|
+
assert request.valid?, request.errors.inspect
|
12
|
+
|
13
|
+
@response = @transporter.submit(request, :json)
|
14
|
+
assert @response.approved?
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_mandatory
|
18
|
+
request = EWS::Transaction::Request.new(:transaction_type => :tagged_pre_auth_completion)
|
19
|
+
assert !request.valid?
|
20
|
+
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
21
|
+
|
22
|
+
request.gateway_id = EMERGIS_BASIC_AUTH[:gateway_id]
|
23
|
+
assert !request.valid?
|
24
|
+
assert_equal "password must be supplied", request.errors[:password]
|
25
|
+
|
26
|
+
request.password = EMERGIS_BASIC_AUTH[:password]
|
27
|
+
assert !request.valid?
|
28
|
+
assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
|
29
|
+
|
30
|
+
request.transaction_tag = 1234
|
31
|
+
assert !request.valid?
|
32
|
+
assert_equal "authorization_num must be supplied", request.errors[:authorization_num]
|
33
|
+
|
34
|
+
request.authorization_num = "TH6754"
|
35
|
+
assert !request.valid?
|
36
|
+
assert_equal "amount must be supplied", request.errors[:amount]
|
37
|
+
|
38
|
+
request.amount = 11.25
|
39
|
+
assert request.valid?
|
40
|
+
|
41
|
+
request.cc_number = "4111111111111111"
|
42
|
+
assert !request.valid?
|
43
|
+
assert_equal "do not set cc_number for tagged transactions", request.errors[:cc_number]
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_json
|
47
|
+
request = EWS::Transaction::Request.new({
|
48
|
+
:transaction_type => :tagged_pre_auth_completion,
|
49
|
+
:amount => 12.50,
|
50
|
+
:transaction_tag => @response.transaction_tag,
|
51
|
+
:authorization_num => @response.authorization_num
|
52
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
53
|
+
assert request.valid?, request.errors.inspect
|
54
|
+
|
55
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_rest
|
59
|
+
request = EWS::Transaction::Request.new({
|
60
|
+
:transaction_type => :tagged_pre_auth_completion,
|
61
|
+
:amount => 12.50,
|
62
|
+
:transaction_tag => @response.transaction_tag,
|
63
|
+
:authorization_num => @response.authorization_num
|
64
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
65
|
+
assert request.valid?, request.errors.inspect
|
66
|
+
|
67
|
+
assert_details_correct request, @transporter.submit(request, :rest)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_soap
|
71
|
+
request = EWS::Transaction::Request.new({
|
72
|
+
:transaction_type => :tagged_pre_auth_completion,
|
73
|
+
:amount => 12.50,
|
74
|
+
:transaction_tag => @response.transaction_tag,
|
75
|
+
:authorization_num => @response.authorization_num
|
76
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
77
|
+
assert request.valid?, request.errors.inspect
|
78
|
+
|
79
|
+
assert_details_correct request, @transporter.submit(request, :soap)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_multiple_pre_auths_against_one_seed
|
83
|
+
request = EWS::Transaction::Request.new({
|
84
|
+
:transaction_type => :tagged_pre_auth_completion,
|
85
|
+
:amount => 12.50,
|
86
|
+
:transaction_tag => @response.transaction_tag,
|
87
|
+
:authorization_num => @response.authorization_num
|
88
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
89
|
+
assert request.valid?, request.errors.inspect
|
90
|
+
|
91
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
92
|
+
|
93
|
+
# completion completes previous auth, so another attempt should not work
|
94
|
+
response = @transporter.submit(request, :json)
|
95
|
+
assert !response.approved?
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_not_permitted_after_recurring_seed_purchase
|
99
|
+
# do initial recurring seed purchase
|
100
|
+
pre_request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :recurring_seed_purchase))
|
101
|
+
pre_request.amount = 10.1
|
102
|
+
assert pre_request.valid?, pre_request.errors.inspect
|
103
|
+
|
104
|
+
pre_response = @transporter.submit(pre_request, :json)
|
105
|
+
assert pre_response.approved?
|
106
|
+
|
107
|
+
# now do the tagged pre auth completion
|
108
|
+
request = EWS::Transaction::Request.new({
|
109
|
+
:transaction_type => :tagged_pre_auth_completion,
|
110
|
+
:amount => 12.50,
|
111
|
+
:transaction_tag => @response.transaction_tag,
|
112
|
+
:authorization_num => @response.authorization_num
|
113
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
114
|
+
assert request.valid?, request.errors.inspect
|
115
|
+
|
116
|
+
response = @transporter.submit(request, :json)
|
117
|
+
assert !response.approved?
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class TaggedPreAuthTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@transporter = EWS::Transporter.new(LOCATION)
|
7
|
+
|
8
|
+
# do initial recurring seed
|
9
|
+
request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :recurring_seed_pre_auth))
|
10
|
+
request.amount = 11.25
|
11
|
+
assert request.valid?, request.errors.inspect
|
12
|
+
|
13
|
+
@response = @transporter.submit(request, :json)
|
14
|
+
assert @response.approved?
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_mandatory
|
18
|
+
request = EWS::Transaction::Request.new(:transaction_type => :tagged_pre_auth)
|
19
|
+
assert !request.valid?
|
20
|
+
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
21
|
+
|
22
|
+
request.gateway_id = EMERGIS_BASIC_AUTH[:gateway_id]
|
23
|
+
assert !request.valid?
|
24
|
+
assert_equal "password must be supplied", request.errors[:password]
|
25
|
+
|
26
|
+
request.password = EMERGIS_BASIC_AUTH[:password]
|
27
|
+
assert !request.valid?
|
28
|
+
assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
|
29
|
+
|
30
|
+
request.transaction_tag = 1234
|
31
|
+
assert !request.valid?
|
32
|
+
assert_equal "authorization_num must be supplied", request.errors[:authorization_num]
|
33
|
+
|
34
|
+
request.authorization_num = "TH6754"
|
35
|
+
assert !request.valid?
|
36
|
+
assert_equal "amount must be supplied", request.errors[:amount]
|
37
|
+
|
38
|
+
request.amount = 11.25
|
39
|
+
assert request.valid?
|
40
|
+
|
41
|
+
request.cc_number = "4111111111111111"
|
42
|
+
assert !request.valid?
|
43
|
+
assert_equal "do not set cc_number for tagged transactions", request.errors[:cc_number]
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_json
|
47
|
+
request = EWS::Transaction::Request.new({
|
48
|
+
:transaction_type => :tagged_pre_auth,
|
49
|
+
:amount => 12.50,
|
50
|
+
:transaction_tag => @response.transaction_tag,
|
51
|
+
:authorization_num => @response.authorization_num
|
52
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
53
|
+
assert request.valid?, request.errors.inspect
|
54
|
+
|
55
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_rest
|
59
|
+
request = EWS::Transaction::Request.new({
|
60
|
+
:transaction_type => :tagged_pre_auth,
|
61
|
+
:amount => 12.50,
|
62
|
+
:transaction_tag => @response.transaction_tag,
|
63
|
+
:authorization_num => @response.authorization_num
|
64
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
65
|
+
assert request.valid?, request.errors.inspect
|
66
|
+
|
67
|
+
assert_details_correct request, @transporter.submit(request, :rest)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_soap
|
71
|
+
request = EWS::Transaction::Request.new({
|
72
|
+
:transaction_type => :tagged_pre_auth,
|
73
|
+
:amount => 12.50,
|
74
|
+
:transaction_tag => @response.transaction_tag,
|
75
|
+
:authorization_num => @response.authorization_num
|
76
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
77
|
+
assert request.valid?, request.errors.inspect
|
78
|
+
|
79
|
+
assert_details_correct request, @transporter.submit(request, :soap)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_multiple_pre_auths_against_one_seed
|
83
|
+
request = EWS::Transaction::Request.new({
|
84
|
+
:transaction_type => :tagged_pre_auth,
|
85
|
+
:amount => 12.50,
|
86
|
+
:transaction_tag => @response.transaction_tag,
|
87
|
+
:authorization_num => @response.authorization_num
|
88
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
89
|
+
assert request.valid?, request.errors.inspect
|
90
|
+
|
91
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
92
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
93
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_after_recurring_seed_purchase
|
97
|
+
# do initial recurring seed purchase
|
98
|
+
pre_request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :recurring_seed_purchase))
|
99
|
+
pre_request.amount = 10.1
|
100
|
+
assert pre_request.valid?, pre_request.errors.inspect
|
101
|
+
|
102
|
+
pre_response = @transporter.submit(pre_request, :json)
|
103
|
+
assert pre_response.approved?
|
104
|
+
|
105
|
+
# now do the tagged pre auth
|
106
|
+
request = EWS::Transaction::Request.new({
|
107
|
+
:transaction_type => :tagged_pre_auth,
|
108
|
+
:amount => 12.50,
|
109
|
+
:transaction_tag => @response.transaction_tag,
|
110
|
+
:authorization_num => @response.authorization_num
|
111
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
112
|
+
assert request.valid?, request.errors.inspect
|
113
|
+
|
114
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
115
|
+
end
|
116
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class TaggedPurchaseTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@transporter = EWS::Transporter.new(LOCATION)
|
7
|
+
|
8
|
+
# do initial recurring seed
|
9
|
+
request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :recurring_seed_purchase))
|
10
|
+
request.amount = 11.25
|
11
|
+
assert request.valid?, request.errors.inspect
|
12
|
+
|
13
|
+
@response = @transporter.submit(request, :json)
|
14
|
+
assert @response.approved?
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_mandatory
|
18
|
+
request = EWS::Transaction::Request.new(:transaction_type => :tagged_purchase)
|
19
|
+
assert !request.valid?
|
20
|
+
assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
|
21
|
+
|
22
|
+
request.gateway_id = EMERGIS_BASIC_AUTH[:gateway_id]
|
23
|
+
assert !request.valid?
|
24
|
+
assert_equal "password must be supplied", request.errors[:password]
|
25
|
+
|
26
|
+
request.password = EMERGIS_BASIC_AUTH[:password]
|
27
|
+
assert !request.valid?
|
28
|
+
assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
|
29
|
+
|
30
|
+
request.transaction_tag = 1234
|
31
|
+
assert !request.valid?
|
32
|
+
assert_equal "authorization_num must be supplied", request.errors[:authorization_num]
|
33
|
+
|
34
|
+
request.authorization_num = "TH6754"
|
35
|
+
assert !request.valid?
|
36
|
+
assert_equal "amount must be supplied", request.errors[:amount]
|
37
|
+
|
38
|
+
request.amount = 11.25
|
39
|
+
assert request.valid?
|
40
|
+
|
41
|
+
request.cc_number = "4111111111111111"
|
42
|
+
assert !request.valid?
|
43
|
+
assert_equal "do not set cc_number for tagged transactions", request.errors[:cc_number]
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_json
|
47
|
+
request = EWS::Transaction::Request.new({
|
48
|
+
:transaction_type => :tagged_purchase,
|
49
|
+
:amount => 12.50,
|
50
|
+
:transaction_tag => @response.transaction_tag,
|
51
|
+
:authorization_num => @response.authorization_num
|
52
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
53
|
+
assert request.valid?, request.errors.inspect
|
54
|
+
|
55
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_rest
|
59
|
+
request = EWS::Transaction::Request.new({
|
60
|
+
:transaction_type => :tagged_purchase,
|
61
|
+
:amount => 12.50,
|
62
|
+
:transaction_tag => @response.transaction_tag,
|
63
|
+
:authorization_num => @response.authorization_num
|
64
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
65
|
+
assert request.valid?, request.errors.inspect
|
66
|
+
|
67
|
+
assert_details_correct request, @transporter.submit(request, :rest)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_soap
|
71
|
+
request = EWS::Transaction::Request.new({
|
72
|
+
:transaction_type => :tagged_purchase,
|
73
|
+
:amount => 12.50,
|
74
|
+
:transaction_tag => @response.transaction_tag,
|
75
|
+
:authorization_num => @response.authorization_num
|
76
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
77
|
+
assert request.valid?, request.errors.inspect
|
78
|
+
|
79
|
+
assert_details_correct request, @transporter.submit(request, :soap)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_multiple_purchases_against_one_seed
|
83
|
+
request = EWS::Transaction::Request.new({
|
84
|
+
:transaction_type => :tagged_purchase,
|
85
|
+
:amount => 12.50,
|
86
|
+
:transaction_tag => @response.transaction_tag,
|
87
|
+
:authorization_num => @response.authorization_num
|
88
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
89
|
+
assert request.valid?, request.errors.inspect
|
90
|
+
|
91
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
92
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
93
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_after_recurring_seed_pre_auth
|
97
|
+
# do initial recurring seed pre auth
|
98
|
+
pre_request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :recurring_seed_pre_auth))
|
99
|
+
pre_request.amount = 10.1
|
100
|
+
assert pre_request.valid?, pre_request.errors.inspect
|
101
|
+
|
102
|
+
pre_response = @transporter.submit(pre_request, :json)
|
103
|
+
assert pre_response.approved?
|
104
|
+
|
105
|
+
# now do the tagged purchase
|
106
|
+
request = EWS::Transaction::Request.new({
|
107
|
+
:transaction_type => :tagged_purchase,
|
108
|
+
:amount => 12.50,
|
109
|
+
:transaction_tag => @response.transaction_tag,
|
110
|
+
:authorization_num => @response.authorization_num
|
111
|
+
}.merge(EMERGIS_BASIC_AUTH))
|
112
|
+
assert request.valid?, request.errors.inspect
|
113
|
+
|
114
|
+
assert_details_correct request, @transporter.submit(request, :json)
|
115
|
+
end
|
116
|
+
end
|