johnideal-activemerchant 1.4.4
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/.gitignore +2 -0
- data/CHANGELOG +448 -0
- data/CONTRIBUTERS +106 -0
- data/MIT-LICENSE +20 -0
- data/README +134 -0
- data/Rakefile +167 -0
- data/VERSION +1 -0
- data/activemerchant.gemspec +484 -0
- data/gem-public_cert.pem +20 -0
- data/generators/gateway/USAGE +5 -0
- data/generators/gateway/gateway_generator.rb +61 -0
- data/generators/gateway/templates/gateway.rb +77 -0
- data/generators/gateway/templates/gateway_test.rb +49 -0
- data/generators/gateway/templates/remote_gateway_test.rb +57 -0
- data/generators/integration/USAGE +5 -0
- data/generators/integration/integration_generator.rb +68 -0
- data/generators/integration/templates/helper.rb +34 -0
- data/generators/integration/templates/helper_test.rb +54 -0
- data/generators/integration/templates/integration.rb +18 -0
- data/generators/integration/templates/module_test.rb +9 -0
- data/generators/integration/templates/notification.rb +100 -0
- data/generators/integration/templates/notification_test.rb +41 -0
- data/init.rb +3 -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 +34 -0
- data/lib/active_merchant/billing/gateway.rb +158 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +657 -0
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +703 -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 +277 -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/merchant_ware.rb +283 -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/paymentech_orbital/paymentech_orbital_response.rb +72 -0
- data/lib/active_merchant/billing/gateways/paymentech_orbital.rb +170 -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 +307 -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 +171 -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 +335 -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_merchant_ware_test.rb +113 -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_paymentech_orbital_test.rb +57 -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 +32 -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/merchant_ware_test.rb +188 -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/paymentech_orbital_test.rb +117 -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 +503 -0
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
|
3
|
+
|
|
4
|
+
require 'active_merchant'
|
|
5
|
+
require 'rubygems'
|
|
6
|
+
require 'money'
|
|
7
|
+
require 'test/unit'
|
|
8
|
+
require 'mocha'
|
|
9
|
+
require 'yaml'
|
|
10
|
+
|
|
11
|
+
begin
|
|
12
|
+
gem 'actionpack'
|
|
13
|
+
rescue LoadError
|
|
14
|
+
raise StandardError, "The view tests need ActionPack installed as gem to run"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
require 'action_controller'
|
|
18
|
+
require 'action_controller/test_process'
|
|
19
|
+
require 'active_merchant/billing/integrations/action_view_helper'
|
|
20
|
+
|
|
21
|
+
ActiveMerchant::Billing::Base.mode = :test
|
|
22
|
+
|
|
23
|
+
# Test gateways
|
|
24
|
+
class SimpleTestGateway < ActiveMerchant::Billing::Gateway
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class SubclassGateway < SimpleTestGateway
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
module ActiveMerchant
|
|
32
|
+
module Assertions
|
|
33
|
+
def assert_field(field, value)
|
|
34
|
+
clean_backtrace do
|
|
35
|
+
assert_equal value, @helper.fields[field]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Allows the testing of you to check for negative assertions:
|
|
40
|
+
#
|
|
41
|
+
# # Instead of
|
|
42
|
+
# assert !something_that_is_false
|
|
43
|
+
#
|
|
44
|
+
# # Do this
|
|
45
|
+
# assert_false something_that_should_be_false
|
|
46
|
+
#
|
|
47
|
+
# An optional +msg+ parameter is available to help you debug.
|
|
48
|
+
def assert_false(boolean, message = nil)
|
|
49
|
+
message = build_message message, '<?> is not false or nil.', boolean
|
|
50
|
+
|
|
51
|
+
clean_backtrace do
|
|
52
|
+
assert_block message do
|
|
53
|
+
not boolean
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# A handy little assertion to check for a successful response:
|
|
59
|
+
#
|
|
60
|
+
# # Instead of
|
|
61
|
+
# assert_success response
|
|
62
|
+
#
|
|
63
|
+
# # DRY that up with
|
|
64
|
+
# assert_success response
|
|
65
|
+
#
|
|
66
|
+
# A message will automatically show the inspection of the response
|
|
67
|
+
# object if things go afoul.
|
|
68
|
+
def assert_success(response)
|
|
69
|
+
clean_backtrace do
|
|
70
|
+
assert response.success?, "Response failed: #{response.inspect}"
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# The negative of +assert_success+
|
|
75
|
+
def assert_failure(response)
|
|
76
|
+
clean_backtrace do
|
|
77
|
+
assert_false response.success?, "Response expected to fail: #{response.inspect}"
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def assert_valid(validateable)
|
|
82
|
+
clean_backtrace do
|
|
83
|
+
assert validateable.valid?, "Expected to be valid"
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def assert_not_valid(validateable)
|
|
88
|
+
clean_backtrace do
|
|
89
|
+
assert_false validateable.valid?, "Expected to not be valid"
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
private
|
|
94
|
+
def clean_backtrace(&block)
|
|
95
|
+
yield
|
|
96
|
+
rescue Test::Unit::AssertionFailedError => e
|
|
97
|
+
path = File.expand_path(__FILE__)
|
|
98
|
+
raise Test::Unit::AssertionFailedError, e.message, e.backtrace.reject { |line| File.expand_path(line) =~ /#{path}/ }
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
module Fixtures
|
|
103
|
+
HOME_DIR = RUBY_PLATFORM =~ /mswin32/ ? ENV['HOMEPATH'] : ENV['HOME'] unless defined?(HOME_DIR)
|
|
104
|
+
LOCAL_CREDENTIALS = File.join(HOME_DIR.to_s, '.active_merchant/fixtures.yml') unless defined?(LOCAL_CREDENTIALS)
|
|
105
|
+
DEFAULT_CREDENTIALS = File.join(File.dirname(__FILE__), 'fixtures.yml') unless defined?(DEFAULT_CREDENTIALS)
|
|
106
|
+
|
|
107
|
+
private
|
|
108
|
+
def credit_card(number = '4242424242424242', options = {})
|
|
109
|
+
defaults = {
|
|
110
|
+
:number => number,
|
|
111
|
+
:month => 9,
|
|
112
|
+
:year => Time.now.year + 1,
|
|
113
|
+
:first_name => 'Longbob',
|
|
114
|
+
:last_name => 'Longsen',
|
|
115
|
+
:verification_value => '123',
|
|
116
|
+
:type => 'visa'
|
|
117
|
+
}.update(options)
|
|
118
|
+
|
|
119
|
+
Billing::CreditCard.new(defaults)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def check(options = {})
|
|
123
|
+
defaults = {
|
|
124
|
+
:name => 'Jim Smith',
|
|
125
|
+
:routing_number => '244183602',
|
|
126
|
+
:account_number => '15378535',
|
|
127
|
+
:account_holder_type => 'personal',
|
|
128
|
+
:account_type => 'checking',
|
|
129
|
+
:number => '1'
|
|
130
|
+
}.update(options)
|
|
131
|
+
|
|
132
|
+
Billing::Check.new(defaults)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def address(options = {})
|
|
136
|
+
{
|
|
137
|
+
:name => 'Jim Smith',
|
|
138
|
+
:address1 => '1234 My Street',
|
|
139
|
+
:address2 => 'Apt 1',
|
|
140
|
+
:company => 'Widgets Inc',
|
|
141
|
+
:city => 'Ottawa',
|
|
142
|
+
:state => 'ON',
|
|
143
|
+
:zip => 'K1C2N6',
|
|
144
|
+
:country => 'CA',
|
|
145
|
+
:phone => '(555)555-5555',
|
|
146
|
+
:fax => '(555)555-6666'
|
|
147
|
+
}.update(options)
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def all_fixtures
|
|
151
|
+
@@fixtures ||= load_fixtures
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def fixtures(key)
|
|
155
|
+
data = all_fixtures[key] || raise(StandardError, "No fixture data was found for '#{key}'")
|
|
156
|
+
|
|
157
|
+
data.dup
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def load_fixtures
|
|
161
|
+
file = File.exists?(LOCAL_CREDENTIALS) ? LOCAL_CREDENTIALS : DEFAULT_CREDENTIALS
|
|
162
|
+
yaml_data = YAML.load(File.read(file))
|
|
163
|
+
symbolize_keys(yaml_data)
|
|
164
|
+
|
|
165
|
+
yaml_data
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def symbolize_keys(hash)
|
|
169
|
+
return unless hash.is_a?(Hash)
|
|
170
|
+
|
|
171
|
+
hash.symbolize_keys!
|
|
172
|
+
hash.each{|k,v| symbolize_keys(v)}
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
Test::Unit::TestCase.class_eval do
|
|
178
|
+
include ActiveMerchant::Billing
|
|
179
|
+
include ActiveMerchant::Assertions
|
|
180
|
+
include ActiveMerchant::Utils
|
|
181
|
+
include ActiveMerchant::Fixtures
|
|
182
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class AVSResultTest < Test::Unit::TestCase
|
|
4
|
+
def test_nil
|
|
5
|
+
result = AVSResult.new(nil)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_no_match
|
|
9
|
+
result = AVSResult.new(:code => 'N')
|
|
10
|
+
assert_equal 'N', result.code
|
|
11
|
+
assert_equal 'N', result.street_match
|
|
12
|
+
assert_equal 'N', result.postal_match
|
|
13
|
+
assert_equal AVSResult.messages['N'], result.message
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_only_street_match
|
|
17
|
+
result = AVSResult.new(:code => 'A')
|
|
18
|
+
assert_equal 'A', result.code
|
|
19
|
+
assert_equal 'Y', result.street_match
|
|
20
|
+
assert_equal 'N', result.postal_match
|
|
21
|
+
assert_equal AVSResult.messages['A'], result.message
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_only_postal_match
|
|
25
|
+
result = AVSResult.new(:code => 'W')
|
|
26
|
+
assert_equal 'W', result.code
|
|
27
|
+
assert_equal 'N', result.street_match
|
|
28
|
+
assert_equal 'Y', result.postal_match
|
|
29
|
+
assert_equal AVSResult.messages['W'], result.message
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_nil_data
|
|
33
|
+
result = AVSResult.new(:code => nil)
|
|
34
|
+
assert_nil result.code
|
|
35
|
+
assert_nil result.message
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_empty_data
|
|
39
|
+
result = AVSResult.new(:code => '')
|
|
40
|
+
assert_nil result.code
|
|
41
|
+
assert_nil result.message
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_to_hash
|
|
45
|
+
avs_data = AVSResult.new(:code => 'X').to_hash
|
|
46
|
+
assert_equal 'X', avs_data['code']
|
|
47
|
+
assert_equal AVSResult.messages['X'], avs_data['message']
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_street_match
|
|
51
|
+
avs_data = AVSResult.new(:street_match => 'Y')
|
|
52
|
+
assert_equal 'Y', avs_data.street_match
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_postal_match
|
|
56
|
+
avs_data = AVSResult.new(:postal_match => 'Y')
|
|
57
|
+
assert_equal 'Y', avs_data.postal_match
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class BaseTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
ActiveMerchant::Billing::Base.mode = :test
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def teardown
|
|
9
|
+
ActiveMerchant::Billing::Base.mode = :test
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_should_return_a_new_gateway_specified_by_symbol_name
|
|
13
|
+
assert_equal BogusGateway, Base.gateway(:bogus)
|
|
14
|
+
assert_equal MonerisGateway, Base.gateway(:moneris)
|
|
15
|
+
assert_equal AuthorizeNetGateway, Base.gateway(:authorize_net)
|
|
16
|
+
assert_equal UsaEpayGateway, Base.gateway(:usa_epay)
|
|
17
|
+
assert_equal LinkpointGateway, Base.gateway(:linkpoint)
|
|
18
|
+
assert_equal AuthorizedNetGateway, Base.gateway(:authorized_net)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_should_return_an_integration_by_name
|
|
22
|
+
chronopay = Base.integration(:chronopay)
|
|
23
|
+
|
|
24
|
+
assert_equal Integrations::Chronopay, chronopay
|
|
25
|
+
assert_instance_of Integrations::Chronopay::Notification, chronopay.notification('name=cody')
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_should_set_modes
|
|
29
|
+
Base.mode = :test
|
|
30
|
+
assert_equal :test, Base.mode
|
|
31
|
+
assert_equal :test, Base.gateway_mode
|
|
32
|
+
assert_equal :test, Base.integration_mode
|
|
33
|
+
|
|
34
|
+
Base.mode = :production
|
|
35
|
+
assert_equal :production, Base.mode
|
|
36
|
+
assert_equal :production, Base.gateway_mode
|
|
37
|
+
assert_equal :production, Base.integration_mode
|
|
38
|
+
|
|
39
|
+
Base.mode = :development
|
|
40
|
+
Base.gateway_mode = :test
|
|
41
|
+
Base.integration_mode = :staging
|
|
42
|
+
assert_equal :development, Base.mode
|
|
43
|
+
assert_equal :test, Base.gateway_mode
|
|
44
|
+
assert_equal :staging, Base.integration_mode
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_should_identify_if_test_mode
|
|
48
|
+
Base.gateway_mode = :test
|
|
49
|
+
assert Base.test?
|
|
50
|
+
|
|
51
|
+
Base.gateway_mode = :production
|
|
52
|
+
assert_false Base.test?
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
@@ -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
|