tomriley-active_merchant 1.4.2.3
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 +442 -0
- data/CONTRIBUTERS +102 -0
- data/MIT-LICENSE +20 -0
- data/README +134 -0
- data/Rakefile +153 -0
- data/active_merchant.gemspec +15 -0
- data/gem-public_cert.pem +20 -0
- data/init.rb +4 -0
- data/lib/active_merchant/billing/avs_result.rb +98 -0
- data/lib/active_merchant/billing/base.rb +57 -0
- data/lib/active_merchant/billing/check.rb +68 -0
- data/lib/active_merchant/billing/credit_card.rb +159 -0
- data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
- data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
- data/lib/active_merchant/billing/cvv_result.rb +38 -0
- data/lib/active_merchant/billing/expiry_date.rb +28 -0
- data/lib/active_merchant/billing/gateway.rb +158 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +646 -0
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +702 -0
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
- data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
- data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
- data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
- data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
- data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
- data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
- data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
- data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
- data/lib/active_merchant/billing/gateways/eway.rb +272 -0
- data/lib/active_merchant/billing/gateways/exact.rb +222 -0
- data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
- data/lib/active_merchant/billing/gateways/linkpoint.rb +396 -0
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
- data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
- data/lib/active_merchant/billing/gateways/moneris.rb +205 -0
- data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
- data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
- data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
- data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
- data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
- data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
- data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
- data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
- data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +325 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
- data/lib/active_merchant/billing/gateways/paypal.rb +108 -0
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
- data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
- data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
- data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
- data/lib/active_merchant/billing/gateways/protx.rb +349 -0
- data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
- data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
- data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
- data/lib/active_merchant/billing/gateways/realex.rb +200 -0
- data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
- data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
- data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
- data/lib/active_merchant/billing/gateways/sage.rb +146 -0
- data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
- data/lib/active_merchant/billing/gateways/skip_jack.rb +442 -0
- data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
- data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
- data/lib/active_merchant/billing/gateways/transax.rb +26 -0
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
- data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
- data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
- data/lib/active_merchant/billing/gateways/viaklix.rb +165 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
- data/lib/active_merchant/billing/gateways.rb +3 -0
- data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
- data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
- data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
- data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
- data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
- data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
- data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
- data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
- data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
- data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
- data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
- data/lib/active_merchant/billing/integrations/helper.rb +93 -0
- data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
- data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
- data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
- data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
- data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
- data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
- data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
- data/lib/active_merchant/billing/integrations/notification.rb +62 -0
- data/lib/active_merchant/billing/integrations/paypal/helper.rb +118 -0
- data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
- data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
- data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
- data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
- data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
- data/lib/active_merchant/billing/integrations/return.rb +35 -0
- data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
- data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
- data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
- data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
- data/lib/active_merchant/billing/integrations.rb +22 -0
- data/lib/active_merchant/billing/response.rb +32 -0
- data/lib/active_merchant/lib/connection.rb +170 -0
- data/lib/active_merchant/lib/country.rb +319 -0
- data/lib/active_merchant/lib/error.rb +4 -0
- data/lib/active_merchant/lib/post_data.rb +22 -0
- data/lib/active_merchant/lib/posts_data.rb +47 -0
- data/lib/active_merchant/lib/requires_parameters.rb +16 -0
- data/lib/active_merchant/lib/utils.rb +18 -0
- data/lib/active_merchant/lib/validateable.rb +76 -0
- data/lib/active_merchant.rb +60 -0
- data/lib/certs/cacert.pem +7815 -0
- data/lib/support/gateway_support.rb +58 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/test/fixtures.yml +330 -0
- data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
- data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
- data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
- data/test/remote/gateways/remote_beanstream_test.rb +150 -0
- data/test/remote/gateways/remote_braintree_test.rb +154 -0
- data/test/remote/gateways/remote_card_stream_test.rb +148 -0
- data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
- data/test/remote/gateways/remote_data_cash_test.rb +357 -0
- data/test/remote/gateways/remote_efsnet_test.rb +81 -0
- data/test/remote/gateways/remote_eway_test.rb +74 -0
- data/test/remote/gateways/remote_exact_test.rb +60 -0
- data/test/remote/gateways/remote_instapay_test.rb +61 -0
- data/test/remote/gateways/remote_linkpoint_test.rb +112 -0
- data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
- data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
- data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
- data/test/remote/gateways/remote_moneris_test.rb +82 -0
- data/test/remote/gateways/remote_net_registry_test.rb +85 -0
- data/test/remote/gateways/remote_netbilling_test.rb +70 -0
- data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
- data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
- data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
- data/test/remote/gateways/remote_payflow_test.rb +237 -0
- data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
- data/test/remote/gateways/remote_payment_express_test.rb +136 -0
- data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
- data/test/remote/gateways/remote_paypal_test.rb +167 -0
- data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
- data/test/remote/gateways/remote_protx_test.rb +219 -0
- data/test/remote/gateways/remote_psigate_test.rb +50 -0
- data/test/remote/gateways/remote_psl_card_test.rb +125 -0
- data/test/remote/gateways/remote_quickpay_test.rb +190 -0
- data/test/remote/gateways/remote_realex_test.rb +224 -0
- data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
- data/test/remote/gateways/remote_sage_test.rb +87 -0
- data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
- data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
- data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
- data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
- data/test/remote/gateways/remote_skipjack_test.rb +105 -0
- data/test/remote/gateways/remote_trans_first_test.rb +34 -0
- data/test/remote/gateways/remote_transax_test.rb +112 -0
- data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
- data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
- data/test/remote/gateways/remote_verifi_test.rb +107 -0
- data/test/remote/gateways/remote_viaklix_test.rb +43 -0
- data/test/remote/gateways/remote_wirecard_test.rb +111 -0
- data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
- data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
- data/test/test_helper.rb +182 -0
- data/test/unit/avs_result_test.rb +59 -0
- data/test/unit/base_test.rb +55 -0
- data/test/unit/check_test.rb +88 -0
- data/test/unit/connection_test.rb +129 -0
- data/test/unit/country_code_test.rb +33 -0
- data/test/unit/country_test.rb +64 -0
- data/test/unit/credit_card_formatting_test.rb +19 -0
- data/test/unit/credit_card_methods_test.rb +170 -0
- data/test/unit/credit_card_test.rb +318 -0
- data/test/unit/cvv_result_test.rb +33 -0
- data/test/unit/expiry_date_test.rb +21 -0
- data/test/unit/gateways/authorize_net_cim_test.rb +638 -0
- data/test/unit/gateways/authorize_net_test.rb +290 -0
- data/test/unit/gateways/beanstream_interac_test.rb +51 -0
- data/test/unit/gateways/beanstream_test.rb +108 -0
- data/test/unit/gateways/bogus_test.rb +46 -0
- data/test/unit/gateways/braintree_test.rb +126 -0
- data/test/unit/gateways/card_stream_test.rb +90 -0
- data/test/unit/gateways/cyber_source_test.rb +188 -0
- data/test/unit/gateways/data_cash_test.rb +133 -0
- data/test/unit/gateways/efsnet_test.rb +123 -0
- data/test/unit/gateways/eway_test.rb +118 -0
- data/test/unit/gateways/exact_test.rb +156 -0
- data/test/unit/gateways/gateway_test.rb +48 -0
- data/test/unit/gateways/instapay_test.rb +102 -0
- data/test/unit/gateways/linkpoint_test.rb +167 -0
- data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
- data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
- data/test/unit/gateways/moneris_test.rb +158 -0
- data/test/unit/gateways/net_registry_test.rb +416 -0
- data/test/unit/gateways/netbilling_test.rb +54 -0
- data/test/unit/gateways/pay_junction_test.rb +123 -0
- data/test/unit/gateways/pay_secure_test.rb +71 -0
- data/test/unit/gateways/payflow_express_test.rb +173 -0
- data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
- data/test/unit/gateways/payflow_test.rb +305 -0
- data/test/unit/gateways/payflow_uk_test.rb +30 -0
- data/test/unit/gateways/payment_express_test.rb +195 -0
- data/test/unit/gateways/paypal_express_test.rb +382 -0
- data/test/unit/gateways/paypal_test.rb +520 -0
- data/test/unit/gateways/plugnpay_test.rb +86 -0
- data/test/unit/gateways/protx_test.rb +139 -0
- data/test/unit/gateways/psigate_test.rb +169 -0
- data/test/unit/gateways/psl_card_test.rb +64 -0
- data/test/unit/gateways/quickpay_test.rb +112 -0
- data/test/unit/gateways/realex_test.rb +151 -0
- data/test/unit/gateways/sage_bankcard_test.rb +162 -0
- data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
- data/test/unit/gateways/secure_pay_au_test.rb +207 -0
- data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
- data/test/unit/gateways/secure_pay_test.rb +87 -0
- data/test/unit/gateways/skip_jack_test.rb +133 -0
- data/test/unit/gateways/trans_first_test.rb +112 -0
- data/test/unit/gateways/trust_commerce_test.rb +90 -0
- data/test/unit/gateways/usa_epay_test.rb +128 -0
- data/test/unit/gateways/verifi_test.rb +96 -0
- data/test/unit/gateways/viaklix_test.rb +78 -0
- data/test/unit/gateways/wirecard_test.rb +250 -0
- data/test/unit/generators/test_gateway_generator.rb +46 -0
- data/test/unit/generators/test_generator_helper.rb +20 -0
- data/test/unit/generators/test_integration_generator.rb +53 -0
- data/test/unit/integrations/action_view_helper_test.rb +50 -0
- data/test/unit/integrations/bogus_module_test.rb +20 -0
- data/test/unit/integrations/chronopay_module_test.rb +13 -0
- data/test/unit/integrations/gestpay_module_test.rb +14 -0
- data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
- data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
- data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
- data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
- data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
- data/test/unit/integrations/helpers/paypal_helper_test.rb +162 -0
- data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
- data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
- data/test/unit/integrations/hi_trust_module_test.rb +13 -0
- data/test/unit/integrations/nochex_module_test.rb +13 -0
- data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
- data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
- data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
- data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
- data/test/unit/integrations/notifications/notification_test.rb +54 -0
- data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
- data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
- data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
- data/test/unit/integrations/paypal_module_test.rb +28 -0
- data/test/unit/integrations/quickpay_module_test.rb +9 -0
- data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
- data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
- data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
- data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
- data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
- data/test/unit/integrations/returns/return_test.rb +11 -0
- data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
- data/test/unit/integrations/two_checkout_module_test.rb +13 -0
- data/test/unit/post_data_test.rb +55 -0
- data/test/unit/posts_data_test.rb +48 -0
- data/test/unit/response_test.rb +28 -0
- data/test/unit/utils_test.rb +7 -0
- data/test/unit/validateable_test.rb +60 -0
- metadata +364 -0
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class AuthorizeNetTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = AuthorizeNetGateway.new(
|
|
6
|
+
:login => 'X',
|
|
7
|
+
:password => 'Y'
|
|
8
|
+
)
|
|
9
|
+
@amount = 100
|
|
10
|
+
@credit_card = credit_card
|
|
11
|
+
@subscription_id = '100748'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_successful_authorization
|
|
15
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
16
|
+
|
|
17
|
+
assert response = @gateway.authorize(@amount, @credit_card)
|
|
18
|
+
assert_instance_of Response, response
|
|
19
|
+
assert_success response
|
|
20
|
+
assert_equal '508141794', response.authorization
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_successful_purchase
|
|
24
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
25
|
+
|
|
26
|
+
assert response = @gateway.purchase(@amount, @credit_card)
|
|
27
|
+
assert_instance_of Response, response
|
|
28
|
+
assert_success response
|
|
29
|
+
assert_equal '508141795', response.authorization
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_failed_authorization
|
|
33
|
+
@gateway.expects(:ssl_post).returns(failed_authorization_response)
|
|
34
|
+
|
|
35
|
+
assert response = @gateway.authorize(@amount, @credit_card)
|
|
36
|
+
assert_instance_of Response, response
|
|
37
|
+
assert_failure response
|
|
38
|
+
assert_equal '508141794', response.authorization
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_add_address_outsite_north_america
|
|
42
|
+
result = {}
|
|
43
|
+
|
|
44
|
+
@gateway.send(:add_address, result, :billing_address => {:address1 => '164 Waverley Street', :country => 'DE', :state => ''} )
|
|
45
|
+
|
|
46
|
+
assert_equal ["address", "city", "company", "country", "phone", "state", "zip"], result.stringify_keys.keys.sort
|
|
47
|
+
assert_equal 'n/a', result[:state]
|
|
48
|
+
assert_equal '164 Waverley Street', result[:address]
|
|
49
|
+
assert_equal 'DE', result[:country]
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_add_address
|
|
53
|
+
result = {}
|
|
54
|
+
|
|
55
|
+
@gateway.send(:add_address, result, :billing_address => {:address1 => '164 Waverley Street', :country => 'US', :state => 'CO'} )
|
|
56
|
+
|
|
57
|
+
assert_equal ["address", "city", "company", "country", "phone", "state", "zip"], result.stringify_keys.keys.sort
|
|
58
|
+
assert_equal 'CO', result[:state]
|
|
59
|
+
assert_equal '164 Waverley Street', result[:address]
|
|
60
|
+
assert_equal 'US', result[:country]
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_add_invoice
|
|
65
|
+
result = {}
|
|
66
|
+
@gateway.send(:add_invoice, result, :order_id => '#1001')
|
|
67
|
+
assert_equal '#1001', result[:invoice_num]
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_add_description
|
|
71
|
+
result = {}
|
|
72
|
+
@gateway.send(:add_invoice, result, :description => 'My Purchase is great')
|
|
73
|
+
assert_equal 'My Purchase is great', result[:description]
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_add_duplicate_window_without_duplicate_window
|
|
77
|
+
result = {}
|
|
78
|
+
ActiveMerchant::Billing::AuthorizeNetGateway.duplicate_window = nil
|
|
79
|
+
@gateway.send(:add_duplicate_window, result)
|
|
80
|
+
assert_nil result[:duplicate_window]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def test_add_duplicate_window_with_duplicate_window
|
|
84
|
+
result = {}
|
|
85
|
+
ActiveMerchant::Billing::AuthorizeNetGateway.duplicate_window = 0
|
|
86
|
+
@gateway.send(:add_duplicate_window, result)
|
|
87
|
+
assert_equal 0, result[:duplicate_window]
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def test_purchase_is_valid_csv
|
|
91
|
+
params = { :amount => '1.01' }
|
|
92
|
+
|
|
93
|
+
@gateway.send(:add_creditcard, params, @credit_card)
|
|
94
|
+
|
|
95
|
+
assert data = @gateway.send(:post_data, 'AUTH_ONLY', params)
|
|
96
|
+
assert_equal post_data_fixture.size, data.size
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def test_purchase_meets_minimum_requirements
|
|
100
|
+
params = {
|
|
101
|
+
:amount => "1.01",
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@gateway.send(:add_creditcard, params, @credit_card)
|
|
105
|
+
|
|
106
|
+
assert data = @gateway.send(:post_data, 'AUTH_ONLY', params)
|
|
107
|
+
minimum_requirements.each do |key|
|
|
108
|
+
assert_not_nil(data =~ /x_#{key}=/)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def test_successful_credit
|
|
113
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
114
|
+
assert response = @gateway.credit(@amount, '123456789', :card_number => @credit_card.number)
|
|
115
|
+
assert_success response
|
|
116
|
+
assert_equal 'This transaction has been approved', response.message
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def test_failed_credit
|
|
120
|
+
@gateway.expects(:ssl_post).returns(failed_credit_response)
|
|
121
|
+
|
|
122
|
+
assert response = @gateway.credit(@amount, '123456789', :card_number => @credit_card.number)
|
|
123
|
+
assert_failure response
|
|
124
|
+
assert_equal 'The referenced transaction does not meet the criteria for issuing a credit', response.message
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def test_supported_countries
|
|
128
|
+
assert_equal ['US'], AuthorizeNetGateway.supported_countries
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def test_supported_card_types
|
|
132
|
+
assert_equal [:visa, :master, :american_express, :discover], AuthorizeNetGateway.supported_cardtypes
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def test_failure_without_response_reason_text
|
|
136
|
+
assert_nothing_raised do
|
|
137
|
+
assert_equal '', @gateway.send(:message_from, {})
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def test_response_under_review_by_fraud_service
|
|
142
|
+
@gateway.expects(:ssl_post).returns(fraud_review_response)
|
|
143
|
+
|
|
144
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
145
|
+
assert_failure response
|
|
146
|
+
assert response.fraud_review?
|
|
147
|
+
assert_equal "Thank you! For security reasons your order is currently being reviewed", response.message
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def test_avs_result
|
|
151
|
+
@gateway.expects(:ssl_post).returns(fraud_review_response)
|
|
152
|
+
|
|
153
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
154
|
+
assert_equal 'X', response.avs_result['code']
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def test_cvv_result
|
|
158
|
+
@gateway.expects(:ssl_post).returns(fraud_review_response)
|
|
159
|
+
|
|
160
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
161
|
+
assert_equal 'M', response.cvv_result['code']
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# ARB Unit Tests
|
|
165
|
+
|
|
166
|
+
def test_successful_recurring
|
|
167
|
+
@gateway.expects(:ssl_post).returns(successful_recurring_response)
|
|
168
|
+
|
|
169
|
+
response = @gateway.recurring(@amount, @credit_card,
|
|
170
|
+
:billing_address => address.merge(:first_name => 'Jim', :last_name => 'Smith'),
|
|
171
|
+
:interval => {
|
|
172
|
+
:length => 10,
|
|
173
|
+
:unit => :days
|
|
174
|
+
},
|
|
175
|
+
:duration => {
|
|
176
|
+
:start_date => Time.now.strftime("%Y-%m-%d"),
|
|
177
|
+
:occurrences => 30
|
|
178
|
+
}
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
assert_instance_of Response, response
|
|
182
|
+
assert response.success?
|
|
183
|
+
assert response.test?
|
|
184
|
+
assert_equal @subscription_id, response.authorization
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def test_successful_update_recurring
|
|
188
|
+
@gateway.expects(:ssl_post).returns(successful_update_recurring_response)
|
|
189
|
+
|
|
190
|
+
response = @gateway.update_recurring(:subscription_id => @subscription_id, :amount => @amount * 2)
|
|
191
|
+
|
|
192
|
+
assert_instance_of Response, response
|
|
193
|
+
assert response.success?
|
|
194
|
+
assert response.test?
|
|
195
|
+
assert_equal @subscription_id, response.authorization
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def test_successful_cancel_recurring
|
|
199
|
+
@gateway.expects(:ssl_post).returns(successful_cancel_recurring_response)
|
|
200
|
+
|
|
201
|
+
response = @gateway.cancel_recurring(@subscription_id)
|
|
202
|
+
|
|
203
|
+
assert_instance_of Response, response
|
|
204
|
+
assert response.success?
|
|
205
|
+
assert response.test?
|
|
206
|
+
assert_equal @subscription_id, response.authorization
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def test_expdate_formatting
|
|
210
|
+
assert_equal '2009-09', @gateway.send(:arb_expdate, credit_card('4111111111111111', :month => "9", :year => "2009"))
|
|
211
|
+
assert_equal '2013-11', @gateway.send(:arb_expdate, credit_card('4111111111111111', :month => "11", :year => "2013"))
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
private
|
|
215
|
+
def post_data_fixture
|
|
216
|
+
'x_encap_char=%24&x_card_num=4242424242424242&x_exp_date=0806&x_card_code=123&x_type=AUTH_ONLY&x_first_name=Longbob&x_version=3.1&x_login=X&x_last_name=Longsen&x_tran_key=Y&x_relay_response=FALSE&x_delim_data=TRUE&x_delim_char=%2C&x_amount=1.01'
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def minimum_requirements
|
|
220
|
+
%w(version delim_data relay_response login tran_key amount card_num exp_date type)
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
def failed_credit_response
|
|
224
|
+
'$3$,$2$,$54$,$The referenced transaction does not meet the criteria for issuing a credit.$,$$,$P$,$0$,$$,$$,$1.00$,$CC$,$credit$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$39265D8BA0CDD4F045B5F4129B2AAA01$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$'
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def successful_authorization_response
|
|
228
|
+
'$1$,$1$,$1$,$This transaction has been approved.$,$advE7f$,$Y$,$508141794$,$5b3fe66005f3da0ebe51$,$$,$1.00$,$CC$,$auth_only$,$$,$Longbob$,$Longsen$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$2860A297E0FE804BCB9EF8738599645C$,$P$,$2$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$'
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
def successful_purchase_response
|
|
232
|
+
'$1$,$1$,$1$,$This transaction has been approved.$,$d1GENk$,$Y$,$508141795$,$32968c18334f16525227$,$Store purchase$,$1.00$,$CC$,$auth_capture$,$$,$Longbob$,$Longsen$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$269862C030129C1173727CC10B1935ED$,$P$,$2$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$'
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def failed_authorization_response
|
|
236
|
+
'$2$,$1$,$1$,$This transaction was declined.$,$advE7f$,$Y$,$508141794$,$5b3fe66005f3da0ebe51$,$$,$1.00$,$CC$,$auth_only$,$$,$Longbob$,$Longsen$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$2860A297E0FE804BCB9EF8738599645C$,$P$,$2$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$'
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
def fraud_review_response
|
|
240
|
+
"$4$,$$,$253$,$Thank you! For security reasons your order is currently being reviewed.$,$$,$X$,$0$,$$,$$,$1.00$,$$,$auth_capture$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$207BCBBF78E85CF174C87AE286B472D2$,$M$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$,$$"
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def successful_recurring_response
|
|
244
|
+
<<-XML
|
|
245
|
+
<ARBCreateSubscriptionResponse xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
|
|
246
|
+
<refId>Sample</refId>
|
|
247
|
+
<messages>
|
|
248
|
+
<resultCode>Ok</resultCode>
|
|
249
|
+
<message>
|
|
250
|
+
<code>I00001</code>
|
|
251
|
+
<text>Successful.</text>
|
|
252
|
+
</message>
|
|
253
|
+
</messages>
|
|
254
|
+
<subscriptionId>#{@subscription_id}</subscriptionId>
|
|
255
|
+
</ARBCreateSubscriptionResponse>
|
|
256
|
+
XML
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def successful_update_recurring_response
|
|
260
|
+
<<-XML
|
|
261
|
+
<ARBUpdateSubscriptionResponse xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
|
|
262
|
+
<refId>Sample</refId>
|
|
263
|
+
<messages>
|
|
264
|
+
<resultCode>Ok</resultCode>
|
|
265
|
+
<message>
|
|
266
|
+
<code>I00001</code>
|
|
267
|
+
<text>Successful.</text>
|
|
268
|
+
</message>
|
|
269
|
+
</messages>
|
|
270
|
+
<subscriptionId>#{@subscription_id}</subscriptionId>
|
|
271
|
+
</ARBUpdateSubscriptionResponse>
|
|
272
|
+
XML
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
def successful_cancel_recurring_response
|
|
276
|
+
<<-XML
|
|
277
|
+
<ARBCancelSubscriptionResponse xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
|
|
278
|
+
<refId>Sample</refId>
|
|
279
|
+
<messages>
|
|
280
|
+
<resultCode>Ok</resultCode>
|
|
281
|
+
<message>
|
|
282
|
+
<code>I00001</code>
|
|
283
|
+
<text>Successful.</text>
|
|
284
|
+
</message>
|
|
285
|
+
</messages>
|
|
286
|
+
<subscriptionId>#{@subscription_id}</subscriptionId>
|
|
287
|
+
</ARBCancelSubscriptionResponse>
|
|
288
|
+
XML
|
|
289
|
+
end
|
|
290
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class BeanstreamInteracTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = BeanstreamInteracGateway.new(
|
|
6
|
+
:login => 'login',
|
|
7
|
+
:password => 'password'
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
@amount = 100
|
|
11
|
+
|
|
12
|
+
@options = {
|
|
13
|
+
:order_id => '1',
|
|
14
|
+
:billing_address => address,
|
|
15
|
+
:description => 'Store Purchase'
|
|
16
|
+
}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_successful_purchase
|
|
20
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
21
|
+
response = @gateway.purchase(@amount, @options)
|
|
22
|
+
|
|
23
|
+
assert_success response
|
|
24
|
+
assert_equal "R", response.params["responseType"]
|
|
25
|
+
assert response.params["pageContents"]
|
|
26
|
+
assert_equal response.params["pageContents"], response.redirect
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_successful_confirmation
|
|
30
|
+
@gateway.expects(:ssl_post).returns(successful_confirmation_response)
|
|
31
|
+
|
|
32
|
+
response = @gateway.confirm(successful_return_from_interac_online)
|
|
33
|
+
assert response.success?
|
|
34
|
+
assert_equal "Approved", response.message
|
|
35
|
+
assert_equal "10000029;5.00;P", response.authorization
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def successful_purchase_response
|
|
41
|
+
"responseType=R&pageContents=%3CHTML%3E%3CHEAD%3E%3C%2FHEAD%3E%3CBODY%3E%3CFORM%20action%3D%22https%3A%2F%2Fpayments%2Ebeanstream%2Ecom%2FiOnlineEmulator%2Fgateway%2Easp%22%20method%3DPOST%20id%3DfrmIOnline%20name%3DfrmIOnline%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22IDEBIT%5FMERCHNUM%22%20%20value%3D%2210010162199999%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22IDEBIT%5FAMOUNT%22%20%20value%3D%221500%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22IDEBIT%5FTERMID%22%20value%3D%2262199999%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22IDEBIT%5FCURRENCY%22%20value%3D%22CAD%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22IDEBIT%5FINVOICE%22%20value%3D%221be7db7a129b07ac5f7e%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22IDEBIT%5FMERCHDATA%22%20value%3D%226CE36AF7%2D5013%2D4B94%2DB740153714A41962%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22IDEBIT%5FFUNDEDURL%22%20value%3D%22https%3A%2F%2Fwww%2Ebeanstream%2Ecom%2Fscripts%2Fprocess%5Ftransaction%5Fauth%2Easp%3F%26funded%3D1%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22IDEBIT%5FNOTFUNDEDURL%22%20value%3D%22https%3A%2F%2Fwww%2Ebeanstream%2Ecom%2Fscripts%2Fprocess%5Ftransaction%5Fauth%2Easp%3F%26funded%3D0%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22merchant%5Fname%22%20value%3D%22Cody%20Fauser%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22referHost%22%20value%3D%22https%3A%2F%2Fwww%2Ebeanstream%2Ecom%2Fscripts%2Fprocess%5Ftransaction%2Easp%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22referHost2%22%20value%3D%22https%3A%2F%2Fwww%2Ecatnrose%2Ecom%2Fioxml%2Easp%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22referHost3%22%20value%3D%22%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22IDEBIT%5FMERCHLANG%22%20value%3D%22en%22%3E%3Cinput%20type%3D%22hidden%22%20name%3D%22IDEBIT%5FVERSION%22%20value%3D%221%22%3E%3C%2FFORM%3E%3CSCRIPT%20language%3D%22JavaScript%22%3Edocument%2EfrmIOnline%2Esubmit%28%29%3B%3C%2FSCRIPT%3E%3C%2FBODY%3E%3C%2FHTML%3E"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def successful_return_from_interac_online
|
|
45
|
+
"bank_choice=1&merchant_name=Billing+Boss+IO+SB&confirmValue=&headerText=&IDEBIT_MERCHDATA=C4B50A48-6E11-4C21-A31EF4A602BC0099&IDEBIT_INVOICE=18face21593b59c7bb7e&IDEBIT_AMOUNT=1500&IDEBIT_FUNDEDURL=http%3A%2F%2Febay.massapparel.com%3A8000%2Finterac%2Ffunded%3Ffunded%3D1&IDEBIT_NOTFUNDEDURL=http%3A%2F%2Febay.massapparel.com%3A8000%2Finterac%2Fnotfunded%3Ffunded%3D0&IDEBIT_ISSLANG=en&IDEBIT_TRACK2=3728024906540591214%3D12010123456789XYZ&IDEBIT_ISSCONF=CONF%23TEST&IDEBIT_ISSNAME=TestBank1&IDEBIT_VERSION=1&accountType=Chequing"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def successful_confirmation_response
|
|
49
|
+
"trnApproved=1&trnId=10000029&messageId=1&messageText=Approved&trnOrderNumber=f29d2406b49b239b6dfb5db1f642b2&authCode=TEST&errorType=N&errorFields=&responseType=T&trnAmount=5%2E00&trnDate=6%2F8%2F2008+3%3A17%3A12+PM&avsProcessed=0&avsId=0&avsResult=0&avsAddrMatch=0&avsPostalMatch=0&avsMessage=Address+Verification+not+performed+for+this+transaction%2E&trnType=P&paymentMethod=IO&ioConfCode=CONF%23TEST&ioInstName=TestBank1&ref1=reference+one&ref2=&ref3=&ref4=&ref5="
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class BeanstreamTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
Base.mode = :test
|
|
6
|
+
|
|
7
|
+
@gateway = BeanstreamGateway.new(
|
|
8
|
+
:login => 'merchant id',
|
|
9
|
+
:user => 'username',
|
|
10
|
+
:password => 'password'
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
@credit_card = credit_card
|
|
14
|
+
|
|
15
|
+
@check = check(
|
|
16
|
+
:institution_number => '001',
|
|
17
|
+
:transit_number => '26729'
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
@amount = 1000
|
|
21
|
+
|
|
22
|
+
@options = {
|
|
23
|
+
:order_id => '1234',
|
|
24
|
+
:billing_address => {
|
|
25
|
+
:name => 'xiaobo zzz',
|
|
26
|
+
:phone => '555-555-5555',
|
|
27
|
+
:address1 => '1234 Levesque St.',
|
|
28
|
+
:address2 => 'Apt B',
|
|
29
|
+
:city => 'Montreal',
|
|
30
|
+
:state => 'QC',
|
|
31
|
+
:country => 'CA',
|
|
32
|
+
:zip => 'H2C1X8'
|
|
33
|
+
},
|
|
34
|
+
:email => 'xiaobozzz@example.com',
|
|
35
|
+
:subtotal => 800,
|
|
36
|
+
:shipping => 100,
|
|
37
|
+
:tax1 => 100,
|
|
38
|
+
:tax2 => 100,
|
|
39
|
+
:custom => 'reference one'
|
|
40
|
+
}
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_successful_purchase
|
|
44
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
45
|
+
|
|
46
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
47
|
+
assert_success response
|
|
48
|
+
assert_equal '10000028;15.00;P', response.authorization
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_successful_test_request_in_production_environment
|
|
52
|
+
Base.mode = :production
|
|
53
|
+
@gateway.expects(:ssl_post).returns(successful_test_purchase_response)
|
|
54
|
+
|
|
55
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
56
|
+
assert_success response
|
|
57
|
+
assert response.test?
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_unsuccessful_request
|
|
61
|
+
@gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
|
|
62
|
+
|
|
63
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
64
|
+
assert_failure response
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_avs_result
|
|
68
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
69
|
+
|
|
70
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
71
|
+
assert_equal 'R', response.avs_result['code']
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_ccv_result
|
|
75
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
76
|
+
|
|
77
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
78
|
+
assert_equal 'M', response.cvv_result['code']
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_successful_check_purchase
|
|
82
|
+
@gateway.expects(:ssl_post).returns(successful_check_purchase_response)
|
|
83
|
+
|
|
84
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
85
|
+
|
|
86
|
+
assert_success response
|
|
87
|
+
assert_equal '10000072;15.00;D', response.authorization
|
|
88
|
+
assert_equal 'Approved', response.message
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
private
|
|
92
|
+
|
|
93
|
+
def successful_purchase_response
|
|
94
|
+
"cvdId=1&trnType=P&trnApproved=1&trnId=10000028&messageId=1&messageText=Approved&trnOrderNumber=df5e88232a61dc1d0058a20d5b5c0e&authCode=TEST&errorType=N&errorFields=&responseType=T&trnAmount=15%2E00&trnDate=6%2F5%2F2008+5%3A26%3A53+AM&avsProcessed=0&avsId=0&avsResult=0&avsAddrMatch=0&avsPostalMatch=0&avsMessage=Address+Verification+not+performed+f"
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def successful_test_purchase_response
|
|
98
|
+
"merchant_id=100200000&trnId=11011067&authCode=TEST&trnApproved=1&avsId=M&cvdId=1&messageId=1&messageText=Approved&trnOrderNumber=1234"
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def unsuccessful_purchase_response
|
|
102
|
+
"merchant_id=100200000&trnId=11011069&authCode=&trnApproved=0&avsId=0&cvdId=6&messageId=16&messageText=Duplicate+transaction&trnOrderNumber=1234"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def successful_check_purchase_response
|
|
106
|
+
"trnApproved=1&trnId=10000072&messageId=1&messageText=Approved&trnOrderNumber=5d9f511363a0f35d37de53b4d74f5b&authCode=&errorType=N&errorFields=&responseType=T&trnAmount=15%2E00&trnDate=6%2F4%2F2008+6%3A33%3A55+PM&avsProcessed=0&avsId=0&avsResult=0&avsAddrMatch=0&avsPostalMatch=0&avsMessage=Address+Verification+not+performed+for+this+transaction%2E&trnType=D&paymentMethod=EFT&ref1=reference+one&ref2=&ref3=&ref4=&ref5="
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class BogusTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = BogusGateway.new(
|
|
6
|
+
:login => 'bogus',
|
|
7
|
+
:password => 'bogus'
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
@creditcard = credit_card('1')
|
|
11
|
+
|
|
12
|
+
@response = ActiveMerchant::Billing::Response.new(true, "Transaction successful", :transid => BogusGateway::AUTHORIZATION)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_authorize
|
|
16
|
+
@gateway.capture(1000, @creditcard)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_purchase
|
|
20
|
+
@gateway.purchase(1000, @creditcard)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_credit
|
|
24
|
+
@gateway.credit(1000, @response.params["transid"])
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_void
|
|
28
|
+
@gateway.void(@response.params["transid"])
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_store
|
|
32
|
+
@gateway.store(@creditcard)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_unstore
|
|
36
|
+
@gateway.unstore('1')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_supported_countries
|
|
40
|
+
assert_equal ['US'], BogusGateway.supported_countries
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_supported_card_types
|
|
44
|
+
assert_equal [:bogus], BogusGateway.supported_cardtypes
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class BraintreeTest < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@gateway = BraintreeGateway.new(
|
|
7
|
+
:login => 'LOGIN',
|
|
8
|
+
:password => 'PASSWORD'
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
@credit_card = credit_card
|
|
12
|
+
@amount = 100
|
|
13
|
+
|
|
14
|
+
@options = { :billing_address => address }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_successful_purchase
|
|
18
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
19
|
+
|
|
20
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
21
|
+
assert_instance_of Response, response
|
|
22
|
+
assert_success response
|
|
23
|
+
assert_equal '510695343', response.authorization
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_failed_purchase
|
|
27
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
28
|
+
|
|
29
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
30
|
+
assert_instance_of Response, response
|
|
31
|
+
assert_failure response
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_add_address
|
|
35
|
+
result = {}
|
|
36
|
+
|
|
37
|
+
@gateway.send(:add_address, result, {:address1 => '164 Waverley Street', :country => 'US', :state => 'CO'} )
|
|
38
|
+
assert_equal ["address1", "city", "company", "country", "phone", "state", "zip"], result.stringify_keys.keys.sort
|
|
39
|
+
assert_equal 'CO', result["state"]
|
|
40
|
+
assert_equal '164 Waverley Street', result["address1"]
|
|
41
|
+
assert_equal 'US', result["country"]
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
def test_add_shipping_address
|
|
45
|
+
result = {}
|
|
46
|
+
|
|
47
|
+
@gateway.send(:add_address, result, {:address1 => '164 Waverley Street', :country => 'US', :state => 'CO'},"shipping" )
|
|
48
|
+
assert_equal ["shipping_address1", "shipping_city", "shipping_company", "shipping_country", "shipping_phone", "shipping_state", "shipping_zip"], result.stringify_keys.keys.sort
|
|
49
|
+
assert_equal 'CO', result["shipping_state"]
|
|
50
|
+
assert_equal '164 Waverley Street', result["shipping_address1"]
|
|
51
|
+
assert_equal 'US', result["shipping_country"]
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_supported_countries
|
|
56
|
+
assert_equal ['US'], BraintreeGateway.supported_countries
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_supported_card_types
|
|
60
|
+
assert_equal [:visa, :master, :american_express, :discover], BraintreeGateway.supported_cardtypes
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_adding_store_adds_vault_id_flag
|
|
64
|
+
result = {}
|
|
65
|
+
|
|
66
|
+
@gateway.send(:add_creditcard, result, @credit_card, :store => true)
|
|
67
|
+
assert_equal ["ccexp", "ccnumber", "customer_vault", "cvv", "firstname", "lastname"], result.stringify_keys.keys.sort
|
|
68
|
+
assert_equal 'add_customer', result[:customer_vault]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_blank_store_doesnt_add_vault_flag
|
|
72
|
+
result = {}
|
|
73
|
+
|
|
74
|
+
@gateway.send(:add_creditcard, result, @credit_card, {} )
|
|
75
|
+
assert_equal ["ccexp", "ccnumber", "cvv", "firstname", "lastname"], result.stringify_keys.keys.sort
|
|
76
|
+
assert_nil result[:customer_vault]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_accept_check
|
|
80
|
+
post = {}
|
|
81
|
+
check = Check.new(:name => 'Fred Bloggs',
|
|
82
|
+
:routing_number => '111000025',
|
|
83
|
+
:account_number => '123456789012',
|
|
84
|
+
:account_holder_type => 'personal',
|
|
85
|
+
:account_type => 'checking')
|
|
86
|
+
@gateway.send(:add_check, post, check, {})
|
|
87
|
+
assert_equal %w[account_holder_type account_type checkaba checkaccount checkname payment], post.stringify_keys.keys.sort
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def test_funding_source
|
|
91
|
+
assert_equal :check, @gateway.send(:determine_funding_source, Check.new)
|
|
92
|
+
assert_equal :credit_card, @gateway.send(:determine_funding_source, @credit_card)
|
|
93
|
+
assert_equal :vault, @gateway.send(:determine_funding_source, '12345')
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def test_avs_result
|
|
97
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
98
|
+
|
|
99
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
100
|
+
assert_equal 'N', response.avs_result['code']
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_cvv_result
|
|
104
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
105
|
+
|
|
106
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
107
|
+
assert_equal 'N', response.cvv_result['code']
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def test_gateway_should_be_available_as_brain_tree
|
|
111
|
+
gateway = BrainTreeGateway.new(:login => 'l', :password => 'p')
|
|
112
|
+
gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
113
|
+
response = gateway.purchase(@amount, @credit_card)
|
|
114
|
+
assert_success response
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
private
|
|
119
|
+
def successful_purchase_response
|
|
120
|
+
'response=1&responsetext=SUCCESS&authcode=123456&transactionid=510695343&avsresponse=N&cvvresponse=N&orderid=ea1e0d50dcc8cfc6e4b55650c592097e&type=sale&response_code=100'
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def failed_purchase_response
|
|
124
|
+
'response=2&responsetext=DECLINE&authcode=&transactionid=510695919&avsresponse=N&cvvresponse=N&orderid=50357660b0b3ef16f72a3d3b83c46983&type=sale&response_code=200'
|
|
125
|
+
end
|
|
126
|
+
end
|