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,99 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ class PreAuthCompletionTest < 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 => :pre_auth_completion)
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 "authorization_num must be supplied", request.errors[:authorization_num]
37
+
38
+ request.authorization_num = "TH6754"
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 => :pre_auth_completion))
44
+ request.amount = 11.25
45
+ request.authorization_num = send_pre_auth.authorization_num
46
+ assert request.valid?, request.errors.inspect
47
+
48
+ assert_details_correct request, @transporter.submit(request, :json)
49
+
50
+ request.authorization_num = send_pre_auth.authorization_num
51
+ assert_details_correct request, @transporter.submit(request, :rest)
52
+
53
+ request.authorization_num = send_pre_auth.authorization_num
54
+ assert_details_correct request, @transporter.submit(request, :soap)
55
+ end
56
+
57
+ def test_by_track1
58
+ request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :pre_auth_completion))
59
+ request.amount = 11.25
60
+ request.authorization_num = send_pre_auth.authorization_num
61
+ assert request.valid?, request.errors.inspect
62
+
63
+ assert_details_correct request, @transporter.submit(request, :json)
64
+
65
+ request.authorization_num = send_pre_auth.authorization_num
66
+ assert_details_correct request, @transporter.submit(request, :rest)
67
+
68
+ request.authorization_num = send_pre_auth.authorization_num
69
+ assert_details_correct request, @transporter.submit(request, :soap)
70
+ end
71
+
72
+ def test_by_track2
73
+ request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :pre_auth_completion))
74
+ request.amount = 11.25
75
+ request.authorization_num = send_pre_auth.authorization_num
76
+ assert request.valid?, request.errors.inspect
77
+
78
+ assert_details_correct request, @transporter.submit(request, :json)
79
+
80
+ request.authorization_num = send_pre_auth.authorization_num
81
+ assert_details_correct request, @transporter.submit(request, :rest)
82
+
83
+ request.authorization_num = send_pre_auth.authorization_num
84
+ assert_details_correct request, @transporter.submit(request, :soap)
85
+ end
86
+
87
+ # A PreAuthCompletion requires a PreAuth request to have been sent previously.
88
+ def send_pre_auth
89
+ request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :pre_auth))
90
+ request.amount = 11.25
91
+ assert request.valid?, request.errors.inspect
92
+
93
+ response = @transporter.submit(request, :json)
94
+ assert response.approved?
95
+
96
+ response
97
+ end
98
+ private :send_pre_auth
99
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ class PreAuthOnlyTest < 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 => :pre_auth_only)
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
+ end
37
+
38
+ def test_by_credit_card
39
+ request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :pre_auth_only))
40
+ request.amount = 11.25
41
+ assert request.valid?, request.errors.inspect
42
+
43
+ assert_details_correct request, @transporter.submit(request, :json)
44
+ assert_details_correct request, @transporter.submit(request, :rest)
45
+ assert_details_correct request, @transporter.submit(request, :soap)
46
+ end
47
+
48
+ def test_by_track1
49
+ request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :pre_auth_only))
50
+ request.amount = 11.25
51
+ assert request.valid?, request.errors.inspect
52
+
53
+ assert_details_correct request, @transporter.submit(request, :json)
54
+ assert_details_correct request, @transporter.submit(request, :rest)
55
+ assert_details_correct request, @transporter.submit(request, :soap)
56
+ end
57
+
58
+ def test_by_track2
59
+ request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :pre_auth_only))
60
+ request.amount = 11.25
61
+ assert request.valid?, request.errors.inspect
62
+
63
+ assert_details_correct request, @transporter.submit(request, :json)
64
+ assert_details_correct request, @transporter.submit(request, :rest)
65
+ assert_details_correct request, @transporter.submit(request, :soap)
66
+ end
67
+
68
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ class PreAuthTest < 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 => :pre_auth)
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
+ end
37
+
38
+ def test_by_credit_card
39
+ request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :pre_auth))
40
+ request.amount = 11.25
41
+ assert request.valid?, request.errors.inspect
42
+
43
+ assert_details_correct request, @transporter.submit(request, :json)
44
+ assert_details_correct request, @transporter.submit(request, :rest)
45
+ assert_details_correct request, @transporter.submit(request, :soap)
46
+ end
47
+
48
+ def test_by_track1
49
+ request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :pre_auth))
50
+ request.amount = 11.25
51
+ assert request.valid?, request.errors.inspect
52
+
53
+ assert_details_correct request, @transporter.submit(request, :json)
54
+ assert_details_correct request, @transporter.submit(request, :rest)
55
+ assert_details_correct request, @transporter.submit(request, :soap)
56
+ end
57
+
58
+ def test_by_track2
59
+ request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :pre_auth))
60
+ request.amount = 11.25
61
+ assert request.valid?, request.errors.inspect
62
+
63
+ assert_details_correct request, @transporter.submit(request, :json)
64
+ assert_details_correct request, @transporter.submit(request, :rest)
65
+ assert_details_correct request, @transporter.submit(request, :soap)
66
+ end
67
+
68
+ end
@@ -0,0 +1,79 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ class PurchaseCorrectionTest < Test::Unit::TestCase
4
+
5
+ # NOTE: ONLY supported bu Moneris processors
6
+ # This is used to VOID a previous Purchase transaction. However, we strongly recommend
7
+ # using a normal Void transaction instead of a Purchase Correction.
8
+
9
+ def setup
10
+ @transporter = EWS::Transporter.new(LOCATION)
11
+ end
12
+
13
+ def test_mandatory
14
+ request = EWS::Transaction::Request.new(:transaction_type => :purchase_correction)
15
+ assert !request.valid?
16
+ assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
17
+
18
+ request.gateway_id = MONERIS_BASIC_AUTH[:gateway_id]
19
+ assert !request.valid?
20
+ assert_equal "password must be supplied", request.errors[:password]
21
+
22
+ request.password = MONERIS_BASIC_AUTH[:password]
23
+ assert !request.valid?
24
+ assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
25
+
26
+ request.cc_number = "4111111111111111"
27
+ assert !request.valid?
28
+ assert_equal "cc_expiry must be supplied", request.errors[:cc_expiry]
29
+
30
+ request.cc_expiry = "0913"
31
+ assert !request.valid?
32
+ assert_equal "cardholder_name must be supplied", request.errors[:cardholder_name]
33
+
34
+ request.cardholder_name = "Simon Jones"
35
+ assert !request.valid?
36
+ assert_equal "amount must be supplied", request.errors[:amount]
37
+
38
+ request.amount = 10
39
+ assert !request.valid?
40
+ assert_equal "authorization_num must be supplied", request.errors[:authorization_num]
41
+
42
+ request.authorization_num = "TH6754"
43
+ assert request.valid?
44
+ end
45
+
46
+ def test_by_credit_card
47
+ request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :purchase_correction).merge(MONERIS_BASIC_AUTH))
48
+ request.amount = 11.25
49
+ request.authorization_num = "1234"
50
+ assert request.valid?, request.errors.inspect
51
+
52
+ assert_details_correct request, @transporter.submit(request, :json)
53
+ assert_details_correct request, @transporter.submit(request, :rest)
54
+ assert_details_correct request, @transporter.submit(request, :soap)
55
+ end
56
+
57
+ def test_by_track1
58
+ request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :purchase_correction).merge(MONERIS_BASIC_AUTH))
59
+ request.amount = 11.25
60
+ request.authorization_num = "1234"
61
+ assert request.valid?, request.errors.inspect
62
+
63
+ assert_details_correct request, @transporter.submit(request, :json)
64
+ assert_details_correct request, @transporter.submit(request, :rest)
65
+ assert_details_correct request, @transporter.submit(request, :soap)
66
+ end
67
+
68
+ def test_by_track2
69
+ request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :purchase_correction).merge(MONERIS_BASIC_AUTH))
70
+ request.amount = 11.25
71
+ request.authorization_num = "1234"
72
+ assert request.valid?, request.errors.inspect
73
+
74
+ assert_details_correct request, @transporter.submit(request, :json)
75
+ assert_details_correct request, @transporter.submit(request, :rest)
76
+ assert_details_correct request, @transporter.submit(request, :soap)
77
+ end
78
+
79
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ class PurchaseTest < 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 => :purchase)
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
+ end
37
+
38
+ def test_by_credit_card
39
+ request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :purchase))
40
+ request.amount = 11.25
41
+ assert request.valid?, request.errors.inspect
42
+
43
+ assert_details_correct request, @transporter.submit(request, :json)
44
+ assert_details_correct request, @transporter.submit(request, :rest)
45
+ assert_details_correct request, @transporter.submit(request, :soap)
46
+ end
47
+
48
+ def test_by_track1
49
+ request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :purchase))
50
+ request.amount = 11.25
51
+ assert request.valid?, request.errors.inspect
52
+
53
+ assert_details_correct request, @transporter.submit(request, :json)
54
+ assert_details_correct request, @transporter.submit(request, :rest)
55
+ assert_details_correct request, @transporter.submit(request, :soap)
56
+ end
57
+
58
+ def test_by_track2
59
+ request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :purchase))
60
+ request.amount = 11.25
61
+ assert request.valid?, request.errors.inspect
62
+
63
+ assert_details_correct request, @transporter.submit(request, :json)
64
+ assert_details_correct request, @transporter.submit(request, :rest)
65
+ assert_details_correct request, @transporter.submit(request, :soap)
66
+ end
67
+
68
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ class RecurrringSeedPreAuthTest < 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 => :recurring_seed_pre_auth)
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
+ end
37
+
38
+ def test_by_credit_card
39
+ request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :recurring_seed_pre_auth))
40
+ request.amount = 11.25
41
+ assert request.valid?, request.errors.inspect
42
+
43
+ assert_details_correct request, @transporter.submit(request, :json)
44
+ assert_details_correct request, @transporter.submit(request, :rest)
45
+ assert_details_correct request, @transporter.submit(request, :soap)
46
+ end
47
+
48
+ def test_by_track1
49
+ request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :recurring_seed_pre_auth))
50
+ request.amount = 11.25
51
+ assert request.valid?, request.errors.inspect
52
+
53
+ assert_details_correct request, @transporter.submit(request, :json)
54
+ assert_details_correct request, @transporter.submit(request, :rest)
55
+ assert_details_correct request, @transporter.submit(request, :soap)
56
+ end
57
+
58
+ def test_by_track2
59
+ request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :recurring_seed_pre_auth))
60
+ request.amount = 11.25
61
+ assert request.valid?, request.errors.inspect
62
+
63
+ assert_details_correct request, @transporter.submit(request, :json)
64
+ assert_details_correct request, @transporter.submit(request, :rest)
65
+ assert_details_correct request, @transporter.submit(request, :soap)
66
+ end
67
+
68
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ class RecurringSeedPurchaseTest < 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 => :recurring_seed_purchase)
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
+ end
37
+
38
+ def test_by_credit_card
39
+ request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :recurring_seed_purchase))
40
+ request.amount = 11.25
41
+ assert request.valid?, request.errors.inspect
42
+
43
+ assert_details_correct request, @transporter.submit(request, :json)
44
+ assert_details_correct request, @transporter.submit(request, :rest)
45
+ assert_details_correct request, @transporter.submit(request, :soap)
46
+ end
47
+
48
+ def test_by_track1
49
+ request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :recurring_seed_purchase))
50
+ request.amount = 11.25
51
+ assert request.valid?, request.errors.inspect
52
+
53
+ assert_details_correct request, @transporter.submit(request, :json)
54
+ assert_details_correct request, @transporter.submit(request, :rest)
55
+ assert_details_correct request, @transporter.submit(request, :soap)
56
+ end
57
+
58
+ def test_by_track2
59
+ request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :recurring_seed_purchase))
60
+ request.amount = 11.25
61
+ assert request.valid?, request.errors.inspect
62
+
63
+ assert_details_correct request, @transporter.submit(request, :json)
64
+ assert_details_correct request, @transporter.submit(request, :rest)
65
+ assert_details_correct request, @transporter.submit(request, :soap)
66
+ end
67
+
68
+ end
@@ -0,0 +1,79 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ class RefundCorrectionTest < Test::Unit::TestCase
4
+
5
+ # NOTE: ONLY supported by Moneris processors
6
+ # This is used to VOID a previous Refund transaction. However, we strongly recommend
7
+ # using a normal Void transaction instead of a Refund Correction.
8
+
9
+ def setup
10
+ @transporter = EWS::Transporter.new(LOCATION)
11
+ end
12
+
13
+ def test_mandatory
14
+ request = EWS::Transaction::Request.new(:transaction_type => :refund_correction)
15
+ assert !request.valid?
16
+ assert_equal "gateway_id must be supplied", request.errors[:gateway_id]
17
+
18
+ request.gateway_id = MONERIS_BASIC_AUTH[:gateway_id]
19
+ assert !request.valid?
20
+ assert_equal "password must be supplied", request.errors[:password]
21
+
22
+ request.password = MONERIS_BASIC_AUTH[:password]
23
+ assert !request.valid?
24
+ assert_equal "One of the following must be supplied: cc_number, track1, track2 or transaction_tag.", request.errors[:base]
25
+
26
+ request.cc_number = "4111111111111111"
27
+ assert !request.valid?
28
+ assert_equal "cc_expiry must be supplied", request.errors[:cc_expiry]
29
+
30
+ request.cc_expiry = "0913"
31
+ assert !request.valid?
32
+ assert_equal "cardholder_name must be supplied", request.errors[:cardholder_name]
33
+
34
+ request.cardholder_name = "Simon Jones"
35
+ assert !request.valid?
36
+ assert_equal "amount must be supplied", request.errors[:amount]
37
+
38
+ request.amount = 10
39
+ assert !request.valid?
40
+ assert_equal "authorization_num must be supplied", request.errors[:authorization_num]
41
+
42
+ request.authorization_num = "TH6754"
43
+ assert request.valid?
44
+ end
45
+
46
+ def test_by_credit_card
47
+ request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :refund_correction).merge(MONERIS_BASIC_AUTH))
48
+ request.amount = 11.25
49
+ request.authorization_num = "1234"
50
+ assert request.valid?, request.errors.inspect
51
+
52
+ assert_details_correct request, @transporter.submit(request, :json)
53
+ assert_details_correct request, @transporter.submit(request, :rest)
54
+ assert_details_correct request, @transporter.submit(request, :soap)
55
+ end
56
+
57
+ def test_by_track1
58
+ request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :refund_correction).merge(MONERIS_BASIC_AUTH))
59
+ request.amount = 11.25
60
+ request.authorization_num = "1234"
61
+ assert request.valid?, request.errors.inspect
62
+
63
+ assert_details_correct request, @transporter.submit(request, :json)
64
+ assert_details_correct request, @transporter.submit(request, :rest)
65
+ assert_details_correct request, @transporter.submit(request, :soap)
66
+ end
67
+
68
+ def test_by_track2
69
+ request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :refund_correction).merge(MONERIS_BASIC_AUTH))
70
+ request.amount = 11.25
71
+ request.authorization_num = "1234"
72
+ assert request.valid?, request.errors.inspect
73
+
74
+ assert_details_correct request, @transporter.submit(request, :json)
75
+ assert_details_correct request, @transporter.submit(request, :rest)
76
+ assert_details_correct request, @transporter.submit(request, :soap)
77
+ end
78
+
79
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ class RefundTest < 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 => :refund)
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
+ end
37
+
38
+ def test_by_credit_card
39
+ request = EWS::Transaction::Request.new(cc_number_params.merge(:transaction_type => :refund))
40
+ request.amount = 11.25
41
+ assert request.valid?, request.errors.inspect
42
+
43
+ assert_details_correct request, @transporter.submit(request, :json)
44
+ assert_details_correct request, @transporter.submit(request, :rest)
45
+ assert_details_correct request, @transporter.submit(request, :soap)
46
+ end
47
+
48
+ def test_by_track1
49
+ request = EWS::Transaction::Request.new(track1_params.merge(:transaction_type => :refund))
50
+ request.amount = 11.25
51
+ assert request.valid?, request.errors.inspect
52
+
53
+ assert_details_correct request, @transporter.submit(request, :json)
54
+ assert_details_correct request, @transporter.submit(request, :rest)
55
+ assert_details_correct request, @transporter.submit(request, :soap)
56
+ end
57
+
58
+ def test_by_track2
59
+ request = EWS::Transaction::Request.new(track2_params.merge(:transaction_type => :refund))
60
+ request.amount = 11.25
61
+ assert request.valid?, request.errors.inspect
62
+
63
+ assert_details_correct request, @transporter.submit(request, :json)
64
+ assert_details_correct request, @transporter.submit(request, :rest)
65
+ assert_details_correct request, @transporter.submit(request, :soap)
66
+ end
67
+
68
+ end