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.
Files changed (78) hide show
  1. data/CHANGELOG +6 -1
  2. data/README +71 -3
  3. data/Rakefile +8 -7
  4. data/VERSION +1 -1
  5. data/doc/classes/EWS/Transaction/FakeResponse.html +451 -0
  6. data/doc/classes/EWS/Transaction/Request.html +61 -80
  7. data/doc/classes/EWS/Transaction/Response.html +206 -14
  8. data/doc/classes/EWS/Transaction/Validator.html +182 -0
  9. data/doc/classes/EWS/Transporter.html +269 -0
  10. data/doc/classes/REXML/Document.html +176 -0
  11. data/doc/classes/REXML/Entity.html +150 -0
  12. data/doc/classes/REXML.html +112 -0
  13. data/doc/created.rid +1 -1
  14. data/doc/files/CHANGELOG.html +156 -0
  15. data/doc/files/LICENCE.html +109 -0
  16. data/doc/files/README.html +164 -23
  17. data/doc/files/VERSION.html +107 -0
  18. data/doc/files/lib/ews/transaction/fake_response_rb.html +101 -0
  19. data/doc/files/lib/ews/transaction/mapping_rb.html +1 -1
  20. data/doc/files/lib/ews/transaction/request_rb.html +8 -1
  21. data/doc/files/lib/ews/transaction/response_rb.html +1 -1
  22. data/doc/files/lib/ews/transaction/validator_rb.html +101 -0
  23. data/doc/files/lib/ews/{transaction/transporter_rb.html → transporter_rb.html} +3 -3
  24. data/doc/files/lib/exact4r_rb.html +6 -2
  25. data/doc/fr_class_index.html +6 -1
  26. data/doc/fr_file_index.html +6 -1
  27. data/doc/fr_method_index.html +22 -7
  28. data/lib/ews/transaction/mapping.rb +41 -40
  29. data/lib/ews/transaction/request.rb +3 -4
  30. data/lib/ews/transaction/response.rb +5 -0
  31. data/lib/ews/transaction/validator.rb +44 -34
  32. data/lib/ews/transporter.rb +3 -3
  33. data/lib/exact4r.rb +1 -1
  34. data/test/exhaustive/forced_post_test.rb +75 -0
  35. data/test/exhaustive/online_debit_purchase_test.rb +66 -0
  36. data/test/exhaustive/online_debit_refund_test.rb +66 -0
  37. data/test/exhaustive/pre_auth_completion_test.rb +99 -0
  38. data/test/exhaustive/pre_auth_only_test.rb +68 -0
  39. data/test/exhaustive/pre_auth_test.rb +68 -0
  40. data/test/exhaustive/purchase_correction_test.rb +79 -0
  41. data/test/exhaustive/purchase_test.rb +68 -0
  42. data/test/exhaustive/recurring_seed_pre_auth_test.rb +68 -0
  43. data/test/exhaustive/recurring_seed_purchase_test.rb +68 -0
  44. data/test/exhaustive/refund_correction_test.rb +79 -0
  45. data/test/exhaustive/refund_test.rb +68 -0
  46. data/test/exhaustive/secure_storage_test.rb +75 -0
  47. data/test/exhaustive/tagged_online_debit_refund_test.rb +168 -0
  48. data/test/exhaustive/tagged_pre_auth_completion_test.rb +119 -0
  49. data/test/exhaustive/tagged_pre_auth_test.rb +116 -0
  50. data/test/exhaustive/tagged_purchase_test.rb +116 -0
  51. data/test/exhaustive/tagged_refund_test.rb +144 -0
  52. data/test/exhaustive/transaction_details_test.rb +86 -0
  53. data/test/exhaustive/void_test.rb +75 -0
  54. data/{spec/avs_spec.rb → test/general/avs_test.rb} +33 -44
  55. data/test/general/json_encoding_test.rb +62 -0
  56. data/test/general/request_test.rb +185 -0
  57. data/test/general/rest_encoding_test.rb +174 -0
  58. data/test/general/soap_encoding_test.rb +211 -0
  59. data/test/general/transporter_test.rb +54 -0
  60. data/test/general/validator_test.rb +150 -0
  61. data/test/samples/rest.dodgy.response.xml +60 -0
  62. data/test/samples/rest.everything.response.xml +67 -0
  63. data/test/samples/rest.response.xml +60 -0
  64. data/test/samples/soap.deserialization.fault.xml +10 -0
  65. data/test/samples/soap.dodgy.response.xml +95 -0
  66. data/test/samples/soap.everything.response.xml +75 -0
  67. data/test/samples/soap.generalfailure.fault.xml +13 -0
  68. data/test/samples/soap.nulltransaction.fault.xml +14 -0
  69. data/test/samples/soap.response.xml +95 -0
  70. data/test/test_helper.rb +115 -0
  71. metadata +52 -12
  72. data/doc/classes/EWS/Transaction/Transporter.html +0 -251
  73. data/pkg/exact4r-0.5.gem +0 -0
  74. data/spec/mapping_spec.rb +0 -126
  75. data/spec/request_spec.rb +0 -154
  76. data/spec/spec_helper.rb +0 -55
  77. data/spec/transporter_spec.rb +0 -43
  78. 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