activemerchant 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGELOG +58 -0
  3. data/CONTRIBUTERS +25 -0
  4. data/MIT-LICENSE +3 -3
  5. data/README +16 -10
  6. data/Rakefile +4 -3
  7. data/lib/active_merchant.rb +7 -1
  8. data/lib/active_merchant/billing/check.rb +16 -9
  9. data/lib/active_merchant/billing/gateway.rb +1 -1
  10. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +702 -0
  11. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  12. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
  13. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  14. data/lib/active_merchant/billing/gateways/braintree.rb +10 -1
  15. data/lib/active_merchant/billing/gateways/cyber_source.rb +26 -2
  16. data/lib/active_merchant/billing/gateways/data_cash.rb +255 -59
  17. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  18. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  19. data/lib/active_merchant/billing/gateways/net_registry.rb +1 -0
  20. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +2 -2
  21. data/lib/active_merchant/billing/gateways/payflow_express.rb +3 -11
  22. data/lib/active_merchant/billing/gateways/payment_express.rb +2 -2
  23. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +39 -21
  24. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  25. data/lib/active_merchant/billing/gateways/paypal_express.rb +3 -12
  26. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  27. data/lib/active_merchant/billing/gateways/protx.rb +25 -25
  28. data/lib/active_merchant/billing/gateways/sage.rb +145 -0
  29. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  30. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
  31. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  32. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +3 -1
  33. data/lib/active_merchant/billing/gateways/skip_jack.rb +2 -0
  34. data/lib/active_merchant/billing/gateways/trust_commerce.rb +1 -1
  35. data/lib/active_merchant/billing/gateways/wirecard.rb +304 -0
  36. data/lib/active_merchant/billing/integrations.rb +8 -2
  37. data/lib/active_merchant/billing/integrations/action_view_helper.rb +18 -4
  38. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +4 -2
  39. data/lib/active_merchant/billing/integrations/notification.rb +10 -1
  40. data/lib/active_merchant/lib/posts_data.rb +12 -3
  41. data/script/destroy +0 -0
  42. data/script/generate +0 -0
  43. data/test/extra/binding_of_caller.rb +0 -0
  44. data/test/extra/breakpoint.rb +0 -0
  45. data/test/fixtures.yml +24 -0
  46. data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
  47. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  48. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  49. data/test/remote/gateways/remote_braintree_test.rb +22 -0
  50. data/test/remote/gateways/remote_cyber_source_test.rb +28 -3
  51. data/test/remote/gateways/remote_data_cash_test.rb +250 -48
  52. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  53. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  54. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  55. data/test/remote/gateways/remote_sage_test.rb +87 -0
  56. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  57. data/test/remote/gateways/remote_wirecard_test.rb +76 -0
  58. data/test/remote/integrations/remote_paypal_integration_test.rb +15 -3
  59. data/test/test_helper.rb +31 -13
  60. data/test/unit/check_test.rb +14 -2
  61. data/test/unit/credit_card_methods_test.rb +18 -0
  62. data/test/unit/gateways/authorize_net_cim_test.rb +641 -0
  63. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  64. data/test/unit/gateways/beanstream_test.rb +108 -0
  65. data/test/unit/gateways/braintree_test.rb +2 -5
  66. data/test/unit/gateways/cyber_source_test.rb +18 -0
  67. data/test/unit/gateways/data_cash_test.rb +32 -4
  68. data/test/unit/gateways/gateway_test.rb +8 -1
  69. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  70. data/test/unit/gateways/net_registry_test.rb +6 -0
  71. data/test/unit/gateways/payflow_express_test.rb +18 -2
  72. data/test/unit/gateways/paypal_express_test.rb +154 -0
  73. data/test/unit/gateways/paypal_test.rb +140 -0
  74. data/test/unit/gateways/sage_bankcard_test.rb +162 -0
  75. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  76. data/test/unit/gateways/secure_pay_au_test.rb +58 -1
  77. data/test/unit/gateways/skip_jack_test.rb +8 -0
  78. data/test/unit/gateways/verifi_test.rb +0 -1
  79. data/test/unit/gateways/wirecard_test.rb +232 -0
  80. data/test/unit/integrations/action_view_helper_test.rb +3 -0
  81. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +23 -2
  82. data/test/unit/integrations/notifications/notification_test.rb +13 -0
  83. data/test/unit/posts_data_test.rb +20 -6
  84. metadata +40 -5
  85. metadata.gz.sig +0 -0
@@ -0,0 +1,71 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
+
3
+ class SageVirtualCheckTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = SageVirtualCheckGateway.new(
6
+ :login => 'login',
7
+ :password => 'password'
8
+ )
9
+
10
+ @check = check
11
+
12
+ @options = {
13
+ :order_id => generate_unique_id,
14
+ :billing_address => address,
15
+ :shipping_address => address,
16
+ :email => 'longbob@example.com',
17
+ :drivers_license_state => 'CA',
18
+ :drivers_license_number => '12345689',
19
+ :date_of_birth => Date.new(1978, 8, 11),
20
+ :ssn => '078051120'
21
+ }
22
+ end
23
+
24
+ def test_successful_purchase
25
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
26
+
27
+ assert response = @gateway.purchase(@amount, @check, @options)
28
+ assert_instance_of Response, response
29
+ assert_success response
30
+
31
+ assert_equal "ACCEPTED", response.message
32
+ assert_equal "C5O8NUdNt0;virtual_check", response.authorization
33
+
34
+ assert_equal "A", response.params["success"]
35
+ assert_equal "", response.params["code"]
36
+ assert_equal "ACCEPTED", response.params["message"]
37
+ assert_equal "00", response.params["risk"]
38
+ assert_equal "C5O8NUdNt0", response.params["reference"]
39
+ assert_equal "89be635e663b05eca587", response.params["order_number"]
40
+ assert_equal "0", response.params["authentication_indicator"]
41
+ assert_equal "NONE", response.params["authentication_disclosure"]
42
+ end
43
+
44
+ def test_declined_purchase
45
+ @gateway.expects(:ssl_post).returns(declined_purchase_response)
46
+
47
+ assert response = @gateway.purchase(@amount, @check, @options)
48
+ assert_failure response
49
+ assert response.test?
50
+ assert_equal "INVALID C_RTE", response.message
51
+ assert_equal "C5O8NR6Nr0;virtual_check", response.authorization
52
+
53
+ assert_equal "X", response.params["success"]
54
+ assert_equal "900016", response.params["code"]
55
+ assert_equal "INVALID C_RTE", response.params["message"]
56
+ assert_equal "00", response.params["risk"]
57
+ assert_equal "C5O8NR6Nr0", response.params["reference"]
58
+ assert_equal "d98cf50f7a2430fe04ad", response.params["order_number"]
59
+ assert_equal "0", response.params["authentication_indicator"]
60
+ assert_equal nil, response.params["authentication_disclosure"]
61
+ end
62
+
63
+ private
64
+ def successful_purchase_response
65
+ "\002A ACCEPTED 00C5O8NUdNt0\03489be635e663b05eca587\0340\034NONE\034\003"
66
+ end
67
+
68
+ def declined_purchase_response
69
+ "\002X900016INVALID C_RTE 00C5O8NR6Nr0\034d98cf50f7a2430fe04ad\0340\034\034\003"
70
+ end
71
+ end
@@ -17,6 +17,17 @@ class SecurePayAuTest < Test::Unit::TestCase
17
17
  }
18
18
  end
19
19
 
20
+ def test_successful_purchase_with_live_data
21
+ @gateway.expects(:ssl_post).returns(successful_live_purchase_response)
22
+
23
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
24
+ assert_instance_of Response, response
25
+ assert_success response
26
+
27
+ assert_equal '000000', response.authorization
28
+ assert response.test?
29
+ end
30
+
20
31
  def test_successful_purchase
21
32
  @gateway.expects(:ssl_post).returns(successful_purchase_response)
22
33
 
@@ -97,7 +108,6 @@ class SecurePayAuTest < Test::Unit::TestCase
97
108
  </TxnList>
98
109
  </Payment>
99
110
  </SecurePayMessage>
100
-
101
111
  XML
102
112
  end
103
113
 
@@ -147,4 +157,51 @@ class SecurePayAuTest < Test::Unit::TestCase
147
157
  </SecurePayMessage>
148
158
  XML
149
159
  end
160
+
161
+ def successful_live_purchase_response
162
+ <<-XML
163
+ <?xml version="1.0" encoding="UTF-8"?>
164
+ <SecurePayMessage>
165
+ <MessageInfo>
166
+ <messageID>8af793f9af34bea0cf40f5fb5c630c</messageID>
167
+ <messageTimestamp>20080802041625665000+660</messageTimestamp>
168
+ <apiVersion>xml-4.2</apiVersion>
169
+ </MessageInfo>
170
+ <RequestType>Payment</RequestType>
171
+ <MerchantInfo>
172
+ <merchantID>XYZ0001</merchantID>
173
+ </MerchantInfo>
174
+ <Status>
175
+ <statusCode>000</statusCode>
176
+ <statusDescription>Normal</statusDescription>
177
+ </Status>
178
+ <Payment>
179
+ <TxnList count="1">
180
+ <Txn ID="1">
181
+ <txnType>0</txnType>
182
+ <txnSource>23</txnSource>
183
+ <amount>211700</amount>
184
+ <currency>AUD</currency>
185
+ <purchaseOrderNo>#1047.5</purchaseOrderNo>
186
+ <approved>Yes</approved>
187
+ <responseCode>77</responseCode>
188
+ <responseText>Approved</responseText>
189
+ <thinlinkResponseCode>100</thinlinkResponseCode>
190
+ <thinlinkResponseText>000</thinlinkResponseText>
191
+ <thinlinkEventStatusCode>000</thinlinkEventStatusCode>
192
+ <thinlinkEventStatusText>Normal</thinlinkEventStatusText>
193
+ <settlementDate>20080525</settlementDate>
194
+ <txnID>000000</txnID>
195
+ <CreditCardInfo>
196
+ <pan>424242...242</pan>
197
+ <expiryDate>07/11</expiryDate>
198
+ <cardType>6</cardType>
199
+ <cardDescription>Visa</cardDescription>
200
+ </CreditCardInfo>
201
+ </Txn>
202
+ </TxnList>
203
+ </Payment>
204
+ </SecurePayMessage>
205
+ XML
206
+ end
150
207
  end
@@ -62,6 +62,14 @@ class SkipJackTest < Test::Unit::TestCase
62
62
  assert_success response
63
63
  assert_equal "9802853155172.022", response.authorization
64
64
  end
65
+
66
+ def test_purchase_failure
67
+ @gateway.expects(:ssl_post).returns(unsuccessful_authorization_response)
68
+
69
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
70
+ assert_instance_of Response, response
71
+ assert_failure response
72
+ end
65
73
 
66
74
  def test_split_line
67
75
  keys = @gateway.send(:split_line, '"AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsApproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileName","szCAVVResponseCode"')
@@ -38,7 +38,6 @@ class VerifiTest < Test::Unit::TestCase
38
38
  end
39
39
 
40
40
  def test_amount_style
41
- assert_equal '10.34', @gateway.send(:amount, Money.new(1034))
42
41
  assert_equal '10.34', @gateway.send(:amount, 1034)
43
42
 
44
43
  assert_raise(ArgumentError) do
@@ -0,0 +1,232 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
+
3
+ class WirecardTest < Test::Unit::TestCase
4
+ TEST_AUTHORIZATION_GUWID = 'C822580121385121429927'
5
+
6
+ def setup
7
+ @gateway = WirecardGateway.new(:login => '', :password => '', :signature => '')
8
+ @credit_card = credit_card('4200000000000000')
9
+ @declined_card = credit_card('4000300011112220')
10
+ @unsupported_card = credit_card('4200000000000000', :type => :maestro)
11
+
12
+ @amount = 111
13
+
14
+ @options = {
15
+ :order_id => '1',
16
+ :billing_address => address,
17
+ :description => 'Wirecard Purchase',
18
+ :email => 'soleone@example.com'
19
+ }
20
+ end
21
+
22
+ def test_successful_authorization
23
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
24
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
25
+ assert_instance_of Response, response
26
+
27
+ assert_success response
28
+ assert response.test?
29
+ assert_equal TEST_AUTHORIZATION_GUWID, response.authorization
30
+ end
31
+
32
+ def test_wrong_credit_card_authorization
33
+ @gateway.expects(:ssl_post).returns(wrong_creditcard_authorization_response)
34
+ assert response = @gateway.authorize(@amount, @declined_card, @options)
35
+ assert_instance_of Response, response
36
+
37
+ assert_failure response
38
+ assert response.test?
39
+ assert_false response.authorization
40
+ assert response.message[/credit card number not allowed in demo mode/i]
41
+ end
42
+
43
+ def test_successful_authorization_and_capture
44
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
45
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
46
+ assert_success response
47
+ assert_equal TEST_AUTHORIZATION_GUWID, response.authorization
48
+
49
+ @gateway.expects(:ssl_post).returns(successful_capture_response)
50
+ assert response = @gateway.capture(@amount, response.authorization, @options)
51
+ assert_success response
52
+ assert response.test?
53
+ assert response.message[/this is a demo/i]
54
+ end
55
+
56
+ def test_unauthorized_capture
57
+ @gateway.expects(:ssl_post).returns(unauthorized_capture_response)
58
+ assert response = @gateway.capture(@amount, "1234567890123456789012", @options)
59
+
60
+ assert_failure response
61
+ assert response.message["Could not find referenced transaction for GuWID 1234567890123456789012."]
62
+ end
63
+
64
+ private
65
+
66
+ # Authorization success
67
+ def successful_authorization_response
68
+ <<-XML
69
+ <?xml version="1.0" encoding="UTF-8"?>
70
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
71
+ <W_RESPONSE>
72
+ <W_JOB>
73
+ <JobID>test dummy data</JobID>
74
+ <FNC_CC_AUTHORIZATION>
75
+ <FunctionID>Wirecard remote test purchase</FunctionID>
76
+ <CC_TRANSACTION>
77
+ <TransactionID>1</TransactionID>
78
+ <PROCESSING_STATUS>
79
+ <GuWID>C822580121385121429927</GuWID>
80
+ <AuthorizationCode>709678</AuthorizationCode>
81
+ <Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
82
+ <StatusType>INFO</StatusType>
83
+ <FunctionResult>ACK</FunctionResult>
84
+ <TimeStamp>2008-06-19 06:53:33</TimeStamp>
85
+ </PROCESSING_STATUS>
86
+ </CC_TRANSACTION>
87
+ </FNC_CC_AUTHORIZATION>
88
+ </W_JOB>
89
+ </W_RESPONSE>
90
+ </WIRECARD_BXML>
91
+ XML
92
+ end
93
+
94
+ # Authorization failure
95
+ # TODO: replace with real xml string here (current way seems to complicated)
96
+ def wrong_creditcard_authorization_response
97
+ error = <<-XML
98
+ <ERROR>
99
+ <Type>DATA_ERROR</Type>
100
+ <Number>24997</Number>
101
+ <Message>Credit card number not allowed in demo mode.</Message>
102
+ <Advice>Only demo card number '4200000000000000' is allowed for VISA in demo mode.</Advice>
103
+ </ERROR>
104
+ XML
105
+ result_node = '</FunctionResult>'
106
+ auth = 'AuthorizationCode'
107
+ successful_authorization_response.gsub('ACK', 'NOK') \
108
+ .gsub(result_node, result_node + error) \
109
+ .gsub(/<#{auth}>\w+<\/#{auth}>/, "<#{auth}><\/#{auth}>") \
110
+ .gsub(/<Info>.+<\/Info>/, '')
111
+ end
112
+
113
+ # Capture success
114
+ def successful_capture_response
115
+ <<-XML
116
+ <?xml version="1.0" encoding="UTF-8"?>
117
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
118
+ <W_RESPONSE>
119
+ <W_JOB>
120
+ <JobID>test dummy data</JobID>
121
+ <FNC_CC_CAPTURE_AUTHORIZATION>
122
+ <FunctionID>Wirecard remote test purchase</FunctionID>
123
+ <CC_TRANSACTION>
124
+ <TransactionID>1</TransactionID>
125
+ <PROCESSING_STATUS>
126
+ <GuWID>C833707121385268439116</GuWID>
127
+ <AuthorizationCode>915025</AuthorizationCode>
128
+ <Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
129
+ <StatusType>INFO</StatusType>
130
+ <FunctionResult>ACK</FunctionResult>
131
+ <TimeStamp>2008-06-19 07:18:04</TimeStamp>
132
+ </PROCESSING_STATUS>
133
+ </CC_TRANSACTION>
134
+ </FNC_CC_CAPTURE_AUTHORIZATION>
135
+ </W_JOB>
136
+ </W_RESPONSE>
137
+ </WIRECARD_BXML>
138
+ XML
139
+ end
140
+
141
+ # Capture failure
142
+ def unauthorized_capture_response
143
+ <<-XML
144
+ <?xml version="1.0" encoding="UTF-8"?>
145
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
146
+ <W_RESPONSE>
147
+ <W_JOB>
148
+ <JobID>test dummy data</JobID>
149
+ <FNC_CC_CAPTURE_AUTHORIZATION>
150
+ <FunctionID>Test dummy FunctionID</FunctionID>
151
+ <CC_TRANSACTION>
152
+ <TransactionID>a2783d471ccc98825b8c498f1a62ce8f</TransactionID>
153
+ <PROCESSING_STATUS>
154
+ <GuWID>C865683121385576058270</GuWID>
155
+ <AuthorizationCode></AuthorizationCode>
156
+ <StatusType>INFO</StatusType>
157
+ <FunctionResult>NOK</FunctionResult>
158
+ <ERROR>
159
+ <Type>DATA_ERROR</Type>
160
+ <Number>20080</Number>
161
+ <Message>Could not find referenced transaction for GuWID 1234567890123456789012.</Message>
162
+ </ERROR>
163
+ <TimeStamp>2008-06-19 08:09:20</TimeStamp>
164
+ </PROCESSING_STATUS>
165
+ </CC_TRANSACTION>
166
+ </FNC_CC_CAPTURE_AUTHORIZATION>
167
+ </W_JOB>
168
+ </W_RESPONSE>
169
+ </WIRECARD_BXML>
170
+ XML
171
+ end
172
+
173
+ # Purchase success
174
+ def successful_purchase_response
175
+ <<-XML
176
+ <?xml version="1.0" encoding="UTF-8"?>
177
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
178
+ <W_RESPONSE>
179
+ <W_JOB>
180
+ <JobID>test dummy data</JobID>
181
+ <FNC_CC_PURCHASE>
182
+ <FunctionID>Wirecard remote test purchase</FunctionID>
183
+ <CC_TRANSACTION>
184
+ <TransactionID>1</TransactionID>
185
+ <PROCESSING_STATUS>
186
+ <GuWID>C865402121385575982910</GuWID>
187
+ <AuthorizationCode>531750</AuthorizationCode>
188
+ <Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
189
+ <StatusType>INFO</StatusType>
190
+ <FunctionResult>ACK</FunctionResult>
191
+ <TimeStamp>2008-06-19 08:09:19</TimeStamp>
192
+ </PROCESSING_STATUS>
193
+ </CC_TRANSACTION>
194
+ </FNC_CC_PURCHASE>
195
+ </W_JOB>
196
+ </W_RESPONSE>
197
+ </WIRECARD_BXML>
198
+ XML
199
+ end
200
+
201
+ # Purchase failure
202
+ def wrong_creditcard_purchase_response
203
+ <<-XML
204
+ <?xml version="1.0" encoding="UTF-8"?>
205
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
206
+ <W_RESPONSE>
207
+ <W_JOB>
208
+ <JobID>test dummy data</JobID>
209
+ <FNC_CC_PURCHASE>
210
+ <FunctionID>Wirecard remote test purchase</FunctionID>
211
+ <CC_TRANSACTION>
212
+ <TransactionID>1</TransactionID>
213
+ <PROCESSING_STATUS>
214
+ <GuWID>C824697121385153203112</GuWID>
215
+ <AuthorizationCode></AuthorizationCode>
216
+ <StatusType>INFO</StatusType>
217
+ <FunctionResult>NOK</FunctionResult>
218
+ <ERROR>
219
+ <Type>DATA_ERROR</Type> <Number>24997</Number>
220
+ <Message>Credit card number not allowed in demo mode.</Message>
221
+ <Advice>Only demo card number '4200000000000000' is allowed for VISA in demo mode.</Advice>
222
+ </ERROR>
223
+ <TimeStamp>2008-06-19 06:58:51</TimeStamp>
224
+ </PROCESSING_STATUS>
225
+ </CC_TRANSACTION>
226
+ </FNC_CC_PURCHASE>
227
+ </W_JOB>
228
+ </W_RESPONSE>
229
+ </WIRECARD_BXML>
230
+ XML
231
+ end
232
+ end
@@ -8,6 +8,8 @@ class ActionViewHelperTest < Test::Unit::TestCase
8
8
  include ActionView::Helpers::TagHelper
9
9
  include ActionView::Helpers::TextHelper
10
10
 
11
+ attr_accessor :output_buffer
12
+
11
13
  def setup
12
14
  @controller = Class.new do
13
15
  attr_reader :url_for_options
@@ -16,6 +18,7 @@ class ActionViewHelperTest < Test::Unit::TestCase
16
18
  end
17
19
  end
18
20
  @controller = @controller.new
21
+ @output_buffer = ''
19
22
  end
20
23
 
21
24
 
@@ -6,14 +6,18 @@ class HiTrustNotificationTest < Test::Unit::TestCase
6
6
  def setup
7
7
  @notification = HiTrust::Notification.new(successful_response)
8
8
  end
9
-
9
+
10
+ def teardown
11
+ ActiveMerchant::Billing::Base.integration_mode = :test
12
+ end
13
+
10
14
  def test_accessors
11
15
  assert @notification.complete?
12
16
  assert_equal "Completed", @notification.status
13
17
  assert_equal "012345678901", @notification.transaction_id
14
18
  assert_equal "1000", @notification.item_id
15
19
  assert_equal "101010", @notification.account
16
- assert_equal "500", @notification.gross
20
+ assert_equal "5.00", @notification.gross
17
21
  assert_equal "USD", @notification.currency
18
22
  assert_equal Time.parse("2007-12-01.12.35.40.123456"), @notification.received_at
19
23
  assert @notification.test?
@@ -31,6 +35,23 @@ class HiTrustNotificationTest < Test::Unit::TestCase
31
35
  assert @notification.respond_to?(:acknowledge)
32
36
  end
33
37
 
38
+ def test_valid_sender_in_testmode_always_true
39
+ assert @notification.test?
40
+ assert @notification.valid_sender?('127.0.0.1')
41
+ assert @notification.valid_sender?(nil)
42
+ end
43
+
44
+ def test_valid_sender
45
+ ActiveMerchant::Billing::Base.integration_mode = :production
46
+ assert @notification.valid_sender?('203.75.242.8')
47
+ end
48
+
49
+ def test_invalid_sender
50
+ ActiveMerchant::Billing::Base.integration_mode = :production
51
+ assert_false @notification.valid_sender?('127.0.0.1')
52
+ assert_false @notification.valid_sender?(nil)
53
+ end
54
+
34
55
  private
35
56
  def successful_response
36
57
  'retcode=00&ordernumber=1000&orderstatus=02&authCode=123456&eci=VISA3D&authRRN=012345678901&storeid=101010&approveamount=500&currency=USD&orderdate=2007-12-01.12.35.40.123456'