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,88 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CheckTest < Test::Unit::TestCase
|
|
4
|
+
VALID_ABA = '111000025'
|
|
5
|
+
INVALID_ABA = '999999999'
|
|
6
|
+
MALFORMED_ABA = 'I like fish'
|
|
7
|
+
|
|
8
|
+
ACCOUNT_NUMBER = '123456789012'
|
|
9
|
+
|
|
10
|
+
def test_validation
|
|
11
|
+
c = Check.new
|
|
12
|
+
assert !c.valid?
|
|
13
|
+
assert !c.errors.empty?
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_first_name_last_name
|
|
17
|
+
check = Check.new(:name => 'Fred Bloggs')
|
|
18
|
+
assert_equal 'Fred', check.first_name
|
|
19
|
+
assert_equal 'Bloggs', check.last_name
|
|
20
|
+
assert_equal 'Fred Bloggs', check.name
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_nil_name
|
|
24
|
+
check = Check.new(:name => nil)
|
|
25
|
+
assert_nil check.first_name
|
|
26
|
+
assert_nil check.last_name
|
|
27
|
+
assert_equal "", check.name
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_valid
|
|
31
|
+
c = Check.new(:name => 'Fred Bloggs',
|
|
32
|
+
:routing_number => VALID_ABA,
|
|
33
|
+
:account_number => ACCOUNT_NUMBER,
|
|
34
|
+
:account_holder_type => 'personal',
|
|
35
|
+
:account_type => 'checking')
|
|
36
|
+
assert c.valid?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_invalid_routing_number
|
|
40
|
+
c = Check.new(:routing_number => INVALID_ABA)
|
|
41
|
+
assert !c.valid?
|
|
42
|
+
assert_equal c.errors.on(:routing_number), "is invalid"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_malformed_routing_number
|
|
46
|
+
c = Check.new(:routing_number => MALFORMED_ABA)
|
|
47
|
+
assert !c.valid?
|
|
48
|
+
assert_equal c.errors.on(:routing_number), "is invalid"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_account_holder_type
|
|
52
|
+
c = Check.new
|
|
53
|
+
c.account_holder_type = 'business'
|
|
54
|
+
c.valid?
|
|
55
|
+
assert !c.errors.on(:account_holder_type)
|
|
56
|
+
|
|
57
|
+
c.account_holder_type = 'personal'
|
|
58
|
+
c.valid?
|
|
59
|
+
assert !c.errors.on(:account_holder_type)
|
|
60
|
+
|
|
61
|
+
c.account_holder_type = 'pleasure'
|
|
62
|
+
c.valid?
|
|
63
|
+
assert_equal c.errors.on(:account_holder_type), 'must be personal or business'
|
|
64
|
+
|
|
65
|
+
c.account_holder_type = nil
|
|
66
|
+
c.valid?
|
|
67
|
+
assert !c.errors.on(:account_holder_type)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_account_type
|
|
71
|
+
c = Check.new
|
|
72
|
+
c.account_type = 'checking'
|
|
73
|
+
c.valid?
|
|
74
|
+
assert !c.errors.on(:account_type)
|
|
75
|
+
|
|
76
|
+
c.account_type = 'savings'
|
|
77
|
+
c.valid?
|
|
78
|
+
assert !c.errors.on(:account_type)
|
|
79
|
+
|
|
80
|
+
c.account_type = 'moo'
|
|
81
|
+
c.valid?
|
|
82
|
+
assert_equal c.errors.on(:account_type), "must be checking or savings"
|
|
83
|
+
|
|
84
|
+
c.account_type = nil
|
|
85
|
+
c.valid?
|
|
86
|
+
assert !c.errors.on(:account_type)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ConnectionTest < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@ok = stub(:code => 200, :message => 'OK', :body => 'success')
|
|
7
|
+
@internal_server_error = stub(:code => 500, :message => 'Internal Server Error', :body => 'failure')
|
|
8
|
+
|
|
9
|
+
@endpoint = 'https://example.com/tx.php'
|
|
10
|
+
@connection = ActiveMerchant::Connection.new(@endpoint)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_connection_endpoint_parses_string_to_uri
|
|
14
|
+
assert_equal URI.parse(@endpoint), @connection.endpoint
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_connection_endpoint_accepts_uri
|
|
18
|
+
endpoint = URI.parse(@endpoint)
|
|
19
|
+
connection = ActiveMerchant::Connection.new(endpoint)
|
|
20
|
+
assert_equal endpoint, connection.endpoint
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_connection_endpoint_raises_uri_error
|
|
24
|
+
assert_raises URI::InvalidURIError do
|
|
25
|
+
ActiveMerchant::Connection.new("not a URI")
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_successful_get_request
|
|
30
|
+
Net::HTTP.any_instance.expects(:get).with('/tx.php', {}).returns(@ok)
|
|
31
|
+
response = @connection.request(:get, nil, {})
|
|
32
|
+
assert_equal 'success', response
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_successful_post_request
|
|
36
|
+
Net::HTTP.any_instance.expects(:post).with('/tx.php', 'data', ActiveMerchant::Connection::RUBY_184_POST_HEADERS).returns(@ok)
|
|
37
|
+
response = @connection.request(:post, 'data', {})
|
|
38
|
+
assert_equal 'success', response
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_get_raises_argument_error_if_passed_data
|
|
42
|
+
assert_raise(ArgumentError) do
|
|
43
|
+
@connection.request(:get, 'data', {})
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_request_raises_when_request_method_not_supported
|
|
48
|
+
assert_raise(ArgumentError) do
|
|
49
|
+
@connection.request(:delete, nil, {})
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_500_response_during_request_raises_client_error
|
|
54
|
+
Net::HTTP.any_instance.stubs(:post).returns(@internal_server_error)
|
|
55
|
+
assert_raises(ActiveMerchant::ResponseError) do
|
|
56
|
+
@connection.request(:post, '', {})
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_default_read_timeout
|
|
61
|
+
assert_equal ActiveMerchant::Connection::READ_TIMEOUT, @connection.read_timeout
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_override_read_timeout
|
|
65
|
+
@connection.read_timeout = 20
|
|
66
|
+
assert_equal 20, @connection.read_timeout
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_default_open_timeout
|
|
70
|
+
@connection.open_timeout = 20
|
|
71
|
+
assert_equal 20, @connection.open_timeout
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_default_verify_peer
|
|
75
|
+
assert_equal ActiveMerchant::Connection::VERIFY_PEER, @connection.verify_peer
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def test_override_verify_peer
|
|
79
|
+
@connection.verify_peer = false
|
|
80
|
+
assert_equal false, @connection.verify_peer
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def test_unrecoverable_exception
|
|
84
|
+
Net::HTTP.any_instance.expects(:post).raises(EOFError)
|
|
85
|
+
|
|
86
|
+
assert_raises(ActiveMerchant::ConnectionError) do
|
|
87
|
+
@connection.request(:post, '')
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_failure_then_success_with_recoverable_exception
|
|
92
|
+
Net::HTTP.any_instance.expects(:post).times(2).raises(Errno::ECONNREFUSED).then.returns(@ok)
|
|
93
|
+
|
|
94
|
+
assert_nothing_raised do
|
|
95
|
+
@connection.request(:post, '')
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def test_failure_limit_reached
|
|
100
|
+
Net::HTTP.any_instance.expects(:post).times(ActiveMerchant::Connection::MAX_RETRIES).raises(Errno::ECONNREFUSED)
|
|
101
|
+
|
|
102
|
+
assert_raises(ActiveMerchant::ConnectionError) do
|
|
103
|
+
@connection.request(:post, '')
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def test_failure_then_success_with_retry_safe_enabled
|
|
108
|
+
Net::HTTP.any_instance.expects(:post).times(2).raises(EOFError).then.returns(@ok)
|
|
109
|
+
|
|
110
|
+
@connection.retry_safe = true
|
|
111
|
+
|
|
112
|
+
assert_nothing_raised do
|
|
113
|
+
@connection.request(:post, '')
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_mixture_of_failures_with_retry_safe_enabled
|
|
118
|
+
Net::HTTP.any_instance.expects(:post).times(3).raises(Errno::ECONNRESET).
|
|
119
|
+
raises(Errno::ECONNREFUSED).
|
|
120
|
+
raises(EOFError)
|
|
121
|
+
|
|
122
|
+
@connection.retry_safe = true
|
|
123
|
+
|
|
124
|
+
assert_raises(ActiveMerchant::ConnectionError) do
|
|
125
|
+
@connection.request(:post, '')
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CountryCodeTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant
|
|
5
|
+
|
|
6
|
+
def test_alpha2_country_code
|
|
7
|
+
code = CountryCode.new('CA')
|
|
8
|
+
assert_equal 'CA', code.value
|
|
9
|
+
assert_equal 'CA', code.to_s
|
|
10
|
+
assert_equal :alpha2, code.format
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_lower_alpha2_country_code
|
|
14
|
+
code = CountryCode.new('ca')
|
|
15
|
+
assert_equal 'CA', code.value
|
|
16
|
+
assert_equal 'CA', code.to_s
|
|
17
|
+
assert_equal :alpha2, code.format
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_alpha2_country_code
|
|
21
|
+
code = CountryCode.new('CAN')
|
|
22
|
+
assert_equal :alpha3, code.format
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_numeric_code
|
|
26
|
+
code = CountryCode.new('004')
|
|
27
|
+
assert_equal :numeric, code.format
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_invalid_code_format
|
|
31
|
+
assert_raise(CountryCodeFormatError){ CountryCode.new('Canada') }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CountryTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant
|
|
5
|
+
|
|
6
|
+
def test_country_from_hash
|
|
7
|
+
country = Country.new(:name => 'Canada', :alpha2 => 'CA', :alpha3 => 'CAN', :numeric => '124')
|
|
8
|
+
assert_equal 'CA', country.code(:alpha2).to_s
|
|
9
|
+
assert_equal 'CAN', country.code(:alpha3).to_s
|
|
10
|
+
assert_equal '124', country.code(:numeric).to_s
|
|
11
|
+
assert_equal 'Canada', country.to_s
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_country_for_alpha2_code
|
|
15
|
+
country = Country.find('CA')
|
|
16
|
+
assert_equal 'CA', country.code(:alpha2).to_s
|
|
17
|
+
assert_equal 'CAN', country.code(:alpha3).to_s
|
|
18
|
+
assert_equal '124', country.code(:numeric).to_s
|
|
19
|
+
assert_equal 'Canada', country.to_s
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_country_for_alpha3_code
|
|
23
|
+
country = Country.find('CAN')
|
|
24
|
+
assert_equal 'Canada', country.to_s
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_country_for_numeric_code
|
|
28
|
+
country = Country.find('124')
|
|
29
|
+
assert_equal 'Canada', country.to_s
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_find_country_by_name
|
|
33
|
+
country = Country.find('Canada')
|
|
34
|
+
assert_equal 'Canada', country.to_s
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_find_unknown_country_name
|
|
38
|
+
assert_raise(InvalidCountryCodeError) do
|
|
39
|
+
Country.find('Asskickistan')
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_find_australia
|
|
44
|
+
country = Country.find('AU')
|
|
45
|
+
assert_equal 'AU', country.code(:alpha2).to_s
|
|
46
|
+
|
|
47
|
+
country = Country.find('Australia')
|
|
48
|
+
assert_equal 'AU', country.code(:alpha2).to_s
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_find_united_kingdom
|
|
52
|
+
country = Country.find('GB')
|
|
53
|
+
assert_equal 'GB', country.code(:alpha2).to_s
|
|
54
|
+
|
|
55
|
+
country = Country.find('United Kingdom')
|
|
56
|
+
assert_equal 'GB', country.code(:alpha2).to_s
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_raise_on_nil_name
|
|
60
|
+
assert_raise(InvalidCountryCodeError) do
|
|
61
|
+
Country.find(nil)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CreditCardFormattingTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant::Billing::CreditCardFormatting
|
|
5
|
+
|
|
6
|
+
def test_should_format_number_by_rule
|
|
7
|
+
assert_equal 2005, format(2005, :steven_colbert)
|
|
8
|
+
|
|
9
|
+
assert_equal '0005', format(05, :four_digits)
|
|
10
|
+
assert_equal '2005', format(2005, :four_digits)
|
|
11
|
+
|
|
12
|
+
assert_equal '05', format(2005, :two_digits)
|
|
13
|
+
assert_equal '05', format(05, :two_digits)
|
|
14
|
+
assert_equal '08', format(8, :two_digits)
|
|
15
|
+
|
|
16
|
+
assert format(nil, :two_digits).blank?
|
|
17
|
+
assert format('', :two_digits).blank?
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CreditCardMethodsTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant::Billing::CreditCardMethods
|
|
5
|
+
|
|
6
|
+
class CreditCard
|
|
7
|
+
include ActiveMerchant::Billing::CreditCardMethods
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def maestro_card_numbers
|
|
11
|
+
%w[
|
|
12
|
+
5000000000000000 5099999999999999 5600000000000000
|
|
13
|
+
5899999999999999 6000000000000000 6999999999999999
|
|
14
|
+
]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def non_maestro_card_numbers
|
|
18
|
+
%w[
|
|
19
|
+
4999999999999999 5100000000000000 5599999999999999
|
|
20
|
+
5900000000000000 5999999999999999 7000000000000000
|
|
21
|
+
]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_should_be_able_to_identify_valid_expiry_months
|
|
25
|
+
assert_false valid_month?(-1)
|
|
26
|
+
assert_false valid_month?(13)
|
|
27
|
+
assert_false valid_month?(nil)
|
|
28
|
+
assert_false valid_month?('')
|
|
29
|
+
|
|
30
|
+
1.upto(12) { |m| assert valid_month?(m) }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_should_be_able_to_identify_valid_expiry_years
|
|
34
|
+
assert_false valid_expiry_year?(-1)
|
|
35
|
+
assert_false valid_expiry_year?(Time.now.year + 21)
|
|
36
|
+
|
|
37
|
+
0.upto(20) { |n| assert valid_expiry_year?(Time.now.year + n) }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_should_be_able_to_identify_valid_start_years
|
|
41
|
+
assert valid_start_year?(1988)
|
|
42
|
+
assert valid_start_year?(2007)
|
|
43
|
+
assert valid_start_year?(3000)
|
|
44
|
+
|
|
45
|
+
assert_false valid_start_year?(1987)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_should_be_able_to_identify_valid_issue_numbers
|
|
49
|
+
assert valid_issue_number?(1)
|
|
50
|
+
assert valid_issue_number?(10)
|
|
51
|
+
assert valid_issue_number?('12')
|
|
52
|
+
assert valid_issue_number?(0)
|
|
53
|
+
|
|
54
|
+
assert_false valid_issue_number?(-1)
|
|
55
|
+
assert_false valid_issue_number?(123)
|
|
56
|
+
assert_false valid_issue_number?('CAT')
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_should_ensure_type_from_credit_card_class_is_not_frozen
|
|
60
|
+
assert_false CreditCard.type?('4242424242424242').frozen?
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_should_be_dankort_card_type
|
|
64
|
+
assert_equal 'dankort', CreditCard.type?('5019717010103742')
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_should_detect_visa_dankort_as_visa
|
|
68
|
+
assert_equal 'visa', CreditCard.type?('4571100000000000')
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_should_detect_electron_dk_as_visa
|
|
72
|
+
assert_equal 'visa', CreditCard.type?('4175001000000000')
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_should_detect_diners_club
|
|
76
|
+
assert_equal 'diners_club', CreditCard.type?('36148010000000')
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_should_detect_diners_club_dk
|
|
80
|
+
assert_equal 'diners_club', CreditCard.type?('30401000000000')
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def test_should_detect_maestro_dk_as_maestro
|
|
84
|
+
assert_equal 'maestro', CreditCard.type?('6769271000000000')
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def test_should_detect_maestro_cards
|
|
88
|
+
assert_equal 'maestro', CreditCard.type?('5020100000000000')
|
|
89
|
+
|
|
90
|
+
maestro_card_numbers.each { |number| assert_equal 'maestro', CreditCard.type?(number) }
|
|
91
|
+
non_maestro_card_numbers.each { |number| assert_not_equal 'maestro', CreditCard.type?(number) }
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def test_should_detect_mastercard
|
|
95
|
+
assert_equal 'master', CreditCard.type?('6771890000000000')
|
|
96
|
+
assert_equal 'master', CreditCard.type?('5413031000000000')
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def test_should_detect_forbrugsforeningen
|
|
100
|
+
assert_equal 'forbrugsforeningen', CreditCard.type?('6007221000000000')
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_should_detect_laser_card
|
|
104
|
+
# 16 digits
|
|
105
|
+
assert_equal 'laser', CreditCard.type?('6304985028090561')
|
|
106
|
+
|
|
107
|
+
# 18 digits
|
|
108
|
+
assert_equal 'laser', CreditCard.type?('630498502809056151')
|
|
109
|
+
|
|
110
|
+
# 19 digits
|
|
111
|
+
assert_equal 'laser', CreditCard.type?('6304985028090561515')
|
|
112
|
+
|
|
113
|
+
# 17 digits
|
|
114
|
+
assert_not_equal 'laser', CreditCard.type?('63049850280905615')
|
|
115
|
+
|
|
116
|
+
# 15 digits
|
|
117
|
+
assert_not_equal 'laser', CreditCard.type?('630498502809056')
|
|
118
|
+
|
|
119
|
+
# Alternate format
|
|
120
|
+
assert_equal 'laser', CreditCard.type?('6706950000000000000')
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def test_should_detect_when_an_argument_type_does_not_match_calculated_type
|
|
124
|
+
assert CreditCard.matching_type?('4175001000000000', 'visa')
|
|
125
|
+
assert_false CreditCard.matching_type?('4175001000000000', 'master')
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def test_detecting_full_range_of_maestro_card_numbers
|
|
129
|
+
maestro = '50000000000'
|
|
130
|
+
|
|
131
|
+
assert_equal 11, maestro.length
|
|
132
|
+
assert_not_equal 'maestro', CreditCard.type?(maestro)
|
|
133
|
+
|
|
134
|
+
while maestro.length < 19
|
|
135
|
+
maestro << '0'
|
|
136
|
+
assert_equal 'maestro', CreditCard.type?(maestro)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
assert_equal 19, maestro.length
|
|
140
|
+
|
|
141
|
+
maestro << '0'
|
|
142
|
+
assert_not_equal 'maestro', CreditCard.type?(maestro)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def test_matching_discover_card
|
|
146
|
+
assert CreditCard.matching_type?('6011000000000000', 'discover')
|
|
147
|
+
assert CreditCard.matching_type?('6500000000000000', 'discover')
|
|
148
|
+
|
|
149
|
+
assert_false CreditCard.matching_type?('6010000000000000', 'discover')
|
|
150
|
+
assert_false CreditCard.matching_type?('6600000000000000', 'discover')
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def test_16_digit_maestro_uk
|
|
154
|
+
number = '6759000000000000'
|
|
155
|
+
assert_equal 16, number.length
|
|
156
|
+
assert_equal 'switch', CreditCard.type?(number)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def test_18_digit_maestro_uk
|
|
160
|
+
number = '675900000000000000'
|
|
161
|
+
assert_equal 18, number.length
|
|
162
|
+
assert_equal 'switch', CreditCard.type?(number)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def test_19_digit_maestro_uk
|
|
166
|
+
number = '6759000000000000000'
|
|
167
|
+
assert_equal 19, number.length
|
|
168
|
+
assert_equal 'switch', CreditCard.type?(number)
|
|
169
|
+
end
|
|
170
|
+
end
|