mattbauer-activemerchant 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +459 -0
- data/CONTRIBUTERS +118 -0
- data/MIT-LICENSE +20 -0
- data/README +134 -0
- data/Rakefile +153 -0
- data/gem-public_cert.pem +20 -0
- data/init.rb +3 -0
- data/lib/active_merchant.rb +60 -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.rb +3 -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.rb +102 -0
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -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/elavon.rb +106 -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/first_pay.rb +172 -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 +295 -0
- data/lib/active_merchant/billing/gateways/moneris_usa.rb +258 -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/ogone.rb +259 -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.rb +236 -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_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.rb +121 -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_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/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.rb +146 -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_pay.rb +308 -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 +189 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
- data/lib/active_merchant/billing/integrations.rb +22 -0
- data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
- data/lib/active_merchant/billing/integrations/bogus.rb +22 -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/chronopay.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/gestpay.rb +26 -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/helper.rb +93 -0
- data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -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/nochex.rb +87 -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/notification.rb +62 -0
- data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
- data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -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/quickpay.rb +18 -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/return.rb +35 -0
- data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -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/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/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 +353 -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_elavon_test.rb +66 -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_first_pay_test.rb +87 -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 +118 -0
- data/test/remote/gateways/remote_moneris_usa_test.rb +115 -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_ogone_test.rb +108 -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 +178 -0
- data/test/remote/gateways/remote_plugnpay_test.rb +72 -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_pay_test.rb +219 -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 +179 -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/elavon_test.rb +139 -0
- data/test/unit/gateways/eway_test.rb +118 -0
- data/test/unit/gateways/exact_test.rb +156 -0
- data/test/unit/gateways/first_pay_test.rb +125 -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 +185 -0
- data/test/unit/gateways/moneris_usa_test.rb +183 -0
- data/test/unit/gateways/net_registry_test.rb +416 -0
- data/test/unit/gateways/netbilling_test.rb +54 -0
- data/test/unit/gateways/ogone_test.rb +256 -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 +569 -0
- data/test/unit/gateways/plugnpay_test.rb +86 -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_pay_test.rb +139 -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 +171 -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 +396 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ExactTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = ExactGateway.new( :login => "A00427-01",
|
|
6
|
+
:password => "testus" )
|
|
7
|
+
|
|
8
|
+
@credit_card = credit_card
|
|
9
|
+
@amount = 100
|
|
10
|
+
@options = {
|
|
11
|
+
:order_id => '1',
|
|
12
|
+
:billing_address => address,
|
|
13
|
+
:description => 'Store Purchase'
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_successful_purchase
|
|
18
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
19
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
20
|
+
assert_success response
|
|
21
|
+
assert_equal 'ET1700;106625152', response.authorization
|
|
22
|
+
assert response.test?
|
|
23
|
+
assert_equal 'Transaction Normal - VER UNAVAILABLE', response.message
|
|
24
|
+
|
|
25
|
+
ExactGateway::SENSITIVE_FIELDS.each{ |f| assert !response.params.has_key?(f.to_s) }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_failed_purchase
|
|
29
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
30
|
+
|
|
31
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
32
|
+
assert_instance_of Response, response
|
|
33
|
+
assert_failure response
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def test_expdate
|
|
38
|
+
assert_equal( "%02d%s" % [ @credit_card.month,
|
|
39
|
+
@credit_card.year.to_s[-2..-1] ],
|
|
40
|
+
@gateway.send(:expdate, @credit_card) )
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_soap_fault
|
|
44
|
+
@gateway.expects(:ssl_post).returns(soap_fault_response)
|
|
45
|
+
assert response = @gateway.purchase(100, @credit_card, {})
|
|
46
|
+
assert_failure response
|
|
47
|
+
assert response.test?
|
|
48
|
+
assert_equal 'Unable to handle request without a valid action parameter. Please supply a valid soap action.', response.message
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_supported_countries
|
|
52
|
+
assert_equal ['CA', 'US'], ExactGateway.supported_countries
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_supported_card_types
|
|
56
|
+
assert_equal [:visa, :master, :american_express, :jcb, :discover], ExactGateway.supported_cardtypes
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_avs_result
|
|
60
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
61
|
+
|
|
62
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
63
|
+
assert_equal 'U', response.avs_result['code']
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def test_cvv_result
|
|
67
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
68
|
+
|
|
69
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
70
|
+
assert_equal 'M', response.cvv_result['code']
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
private
|
|
75
|
+
def successful_purchase_response
|
|
76
|
+
<<-RESPONSE
|
|
77
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/" xmlns:types="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:SendAndCommitResponse xmlns:q1="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/Response"><SendAndCommitResult href="#id1" /></q1:SendAndCommitResponse><types:TransactionResult id="id1" xsi:type="types:TransactionResult"><ExactID xsi:type="xsd:string">A00427-01</ExactID><Password xsi:type="xsd:string">#######</Password><Transaction_Type xsi:type="xsd:string">00</Transaction_Type><DollarAmount xsi:type="xsd:string">1</DollarAmount><SurchargeAmount xsi:type="xsd:string">0</SurchargeAmount><Card_Number xsi:type="xsd:string">4242424242424242</Card_Number><Transaction_Tag xsi:type="xsd:string">106625152</Transaction_Tag><Authorization_Num xsi:type="xsd:string">ET1700</Authorization_Num><Expiry_Date xsi:type="xsd:string">0909</Expiry_Date><CardHoldersName xsi:type="xsd:string">Longbob Longsen</CardHoldersName><VerificationStr2 xsi:type="xsd:string">123</VerificationStr2><CVD_Presence_Ind xsi:type="xsd:string">1</CVD_Presence_Ind><Secure_AuthRequired xsi:type="xsd:string">0</Secure_AuthRequired><Secure_AuthResult xsi:type="xsd:string">0</Secure_AuthResult><Ecommerce_Flag xsi:type="xsd:string">0</Ecommerce_Flag><CAVV_Algorithm xsi:type="xsd:string">0</CAVV_Algorithm><Reference_No xsi:type="xsd:string">1</Reference_No><Reference_3 xsi:type="xsd:string">Store Purchase</Reference_3><Language xsi:type="xsd:string">0</Language><LogonMessage xsi:type="xsd:string">Processed by:
|
|
78
|
+
E-xact Transaction Gateway :- Version 8.4.0 B19b
|
|
79
|
+
Copyright 2006
|
|
80
|
+
{34:2652}</LogonMessage><Error_Number xsi:type="xsd:string">0</Error_Number><Error_Description xsi:type="xsd:string" /><Transaction_Error xsi:type="xsd:boolean">false</Transaction_Error><Transaction_Approved xsi:type="xsd:boolean">true</Transaction_Approved><EXact_Resp_Code xsi:type="xsd:string">00</EXact_Resp_Code><EXact_Message xsi:type="xsd:string">Transaction Normal</EXact_Message><Bank_Resp_Code xsi:type="xsd:string">00</Bank_Resp_Code><Bank_Message xsi:type="xsd:string">VER UNAVAILABLE </Bank_Message><SequenceNo xsi:type="xsd:string">377</SequenceNo><AVS xsi:type="xsd:string">U</AVS><CVV2 xsi:type="xsd:string">M</CVV2><Retrieval_Ref_No xsi:type="xsd:string">200801181700</Retrieval_Ref_No><MerchantName xsi:type="xsd:string">E-xact ConnectionShop</MerchantName><MerchantAddress xsi:type="xsd:string">Suite 400 - 1152 Mainland St.</MerchantAddress><MerchantCity xsi:type="xsd:string">Vancouver</MerchantCity><MerchantProvince xsi:type="xsd:string">BC</MerchantProvince><MerchantCountry xsi:type="xsd:string">Canada</MerchantCountry><MerchantPostal xsi:type="xsd:string">V6B 4X2</MerchantPostal><MerchantURL xsi:type="xsd:string">www.e-xact.com</MerchantURL><CTR xsi:type="xsd:string">========== TRANSACTION RECORD =========
|
|
81
|
+
|
|
82
|
+
E-xact ConnectionShop
|
|
83
|
+
Suite 400 - 1152 Mainland St.
|
|
84
|
+
Vancouver, BC V6B 4X2
|
|
85
|
+
www.e-xact.com
|
|
86
|
+
|
|
87
|
+
TYPE: Purchase
|
|
88
|
+
|
|
89
|
+
ACCT: Visa $1.00 USD
|
|
90
|
+
|
|
91
|
+
CARD NUMBER : ############4242
|
|
92
|
+
TRANS. REF. : 1
|
|
93
|
+
CARD HOLDER : Longbob Longsen
|
|
94
|
+
EXPIRY DATE : xx/xx
|
|
95
|
+
DATE/TIME : 18 Jan 08 14:17:00
|
|
96
|
+
REFERENCE # : 5999 377 M
|
|
97
|
+
AUTHOR.# : ET1700
|
|
98
|
+
|
|
99
|
+
Approved - Thank You 00
|
|
100
|
+
|
|
101
|
+
SIGNATURE
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
_______________________________________
|
|
106
|
+
|
|
107
|
+
</CTR></types:TransactionResult></soap:Body></soap:Envelope>
|
|
108
|
+
RESPONSE
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def failed_purchase_response
|
|
112
|
+
<<-RESPONSE
|
|
113
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/" xmlns:types="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:SendAndCommitResponse xmlns:q1="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/Response"><SendAndCommitResult href="#id1" /></q1:SendAndCommitResponse><types:TransactionResult id="id1" xsi:type="types:TransactionResult"><ExactID xsi:type="xsd:string">A00427-01</ExactID><Password xsi:type="xsd:string">#######</Password><Transaction_Type xsi:type="xsd:string">00</Transaction_Type><DollarAmount xsi:type="xsd:string">5013</DollarAmount><SurchargeAmount xsi:type="xsd:string">0</SurchargeAmount><Card_Number xsi:type="xsd:string">4111111111111111</Card_Number><Transaction_Tag xsi:type="xsd:string">106624668</Transaction_Tag><Expiry_Date xsi:type="xsd:string">0909</Expiry_Date><CardHoldersName xsi:type="xsd:string">Longbob Longsen</CardHoldersName><VerificationStr2 xsi:type="xsd:string">123</VerificationStr2><CVD_Presence_Ind xsi:type="xsd:string">1</CVD_Presence_Ind><Secure_AuthRequired xsi:type="xsd:string">0</Secure_AuthRequired><Secure_AuthResult xsi:type="xsd:string">0</Secure_AuthResult><Ecommerce_Flag xsi:type="xsd:string">0</Ecommerce_Flag><CAVV_Algorithm xsi:type="xsd:string">0</CAVV_Algorithm><Reference_No xsi:type="xsd:string">1</Reference_No><Reference_3 xsi:type="xsd:string">Store Purchase</Reference_3><Language xsi:type="xsd:string">0</Language><LogonMessage xsi:type="xsd:string">Processed by:
|
|
114
|
+
E-xact Transaction Gateway :- Version 8.4.0 B19b
|
|
115
|
+
Copyright 2006
|
|
116
|
+
{34:2652}</LogonMessage><Error_Number xsi:type="xsd:string">0</Error_Number><Error_Description xsi:type="xsd:string" /><Transaction_Error xsi:type="xsd:boolean">false</Transaction_Error><Transaction_Approved xsi:type="xsd:boolean">false</Transaction_Approved><EXact_Resp_Code xsi:type="xsd:string">00</EXact_Resp_Code><EXact_Message xsi:type="xsd:string">Transaction Normal</EXact_Message><Bank_Resp_Code xsi:type="xsd:string">13</Bank_Resp_Code><Bank_Message xsi:type="xsd:string">AMOUNT ERR</Bank_Message><SequenceNo xsi:type="xsd:string">376</SequenceNo><AVS xsi:type="xsd:string">U</AVS><CVV2 xsi:type="xsd:string">M</CVV2><MerchantName xsi:type="xsd:string">E-xact ConnectionShop</MerchantName><MerchantAddress xsi:type="xsd:string">Suite 400 - 1152 Mainland St.</MerchantAddress><MerchantCity xsi:type="xsd:string">Vancouver</MerchantCity><MerchantProvince xsi:type="xsd:string">BC</MerchantProvince><MerchantCountry xsi:type="xsd:string">Canada</MerchantCountry><MerchantPostal xsi:type="xsd:string">V6B 4X2</MerchantPostal><MerchantURL xsi:type="xsd:string">www.e-xact.com</MerchantURL><CTR xsi:type="xsd:string">========== TRANSACTION RECORD =========
|
|
117
|
+
|
|
118
|
+
E-xact ConnectionShop
|
|
119
|
+
Suite 400 - 1152 Mainland St.
|
|
120
|
+
Vancouver, BC V6B 4X2
|
|
121
|
+
www.e-xact.com
|
|
122
|
+
|
|
123
|
+
TYPE: Purchase
|
|
124
|
+
|
|
125
|
+
ACCT: Visa $5,013.00 USD
|
|
126
|
+
|
|
127
|
+
CARD NUMBER : ############1111
|
|
128
|
+
TRANS. REF. : 1
|
|
129
|
+
CARD HOLDER : Longbob Longsen
|
|
130
|
+
EXPIRY DATE : xx/xx
|
|
131
|
+
DATE/TIME : 18 Jan 08 14:11:09
|
|
132
|
+
REFERENCE # : 5999 376 M
|
|
133
|
+
AUTHOR.# :
|
|
134
|
+
|
|
135
|
+
Transaction not Approved 13
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
</CTR></types:TransactionResult></soap:Body></soap:Envelope>
|
|
139
|
+
RESPONSE
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def soap_fault_response
|
|
143
|
+
<<-RESPONSE
|
|
144
|
+
<?xml version='1.0' encoding='UTF-8'?>
|
|
145
|
+
<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
|
|
146
|
+
<soap:Body>
|
|
147
|
+
<soap:Fault>
|
|
148
|
+
<faultcode>soap:Client</faultcode>
|
|
149
|
+
<faultstring>Unable to handle request without a valid action parameter. Please supply a valid soap action.</faultstring>
|
|
150
|
+
<detail/>
|
|
151
|
+
</soap:Fault>
|
|
152
|
+
</soap:Body>
|
|
153
|
+
</soap:Envelope>
|
|
154
|
+
RESPONSE
|
|
155
|
+
end
|
|
156
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class FirstPayTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = FirstPayGateway.new(:login => 'login', :password => 'password')
|
|
6
|
+
|
|
7
|
+
@credit_card = credit_card
|
|
8
|
+
@amount = 100
|
|
9
|
+
|
|
10
|
+
@options = {
|
|
11
|
+
:order_id => '1',
|
|
12
|
+
:billing_address => address,
|
|
13
|
+
:description => 'Store Purchase',
|
|
14
|
+
:ip => '127.0.0.1',
|
|
15
|
+
:email => 'test@test.com'
|
|
16
|
+
}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_successful_purchase
|
|
20
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
21
|
+
|
|
22
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
23
|
+
assert_success response
|
|
24
|
+
|
|
25
|
+
# Replace with authorization number from the successful response
|
|
26
|
+
assert_equal '57097598', response.authorization
|
|
27
|
+
assert response.test?
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_failed_purchase
|
|
31
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
32
|
+
|
|
33
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
34
|
+
assert_failure response
|
|
35
|
+
assert_equal('DECLINE', response.message)
|
|
36
|
+
assert response.test?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_error_on_purchase
|
|
40
|
+
@gateway.expects(:ssl_post).returns(error_response)
|
|
41
|
+
|
|
42
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
43
|
+
assert ! response.success?
|
|
44
|
+
assert_equal('704-MISSING BASIC DATA TYPE:card, exp, zip, addr, member, amount', response.message)
|
|
45
|
+
assert response.test?
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_successful_credit
|
|
49
|
+
@gateway.expects(:ssl_post).returns(successful_credit_response)
|
|
50
|
+
@options[:credit_card] = @credit_card
|
|
51
|
+
|
|
52
|
+
assert response = @gateway.credit(@amount, '123456', @options)
|
|
53
|
+
assert_success response
|
|
54
|
+
|
|
55
|
+
assert_equal '53147613', response.authorization
|
|
56
|
+
assert response.test?
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_failed_credit
|
|
60
|
+
@options[:credit_card] = @credit_card
|
|
61
|
+
@gateway.expects(:ssl_post).returns(failed_credit_response)
|
|
62
|
+
|
|
63
|
+
assert response = @gateway.credit(@amount, '123456', @options)
|
|
64
|
+
assert_failure response
|
|
65
|
+
assert_equal('PARENT TRANSACTION NOT FOUND', response.message)
|
|
66
|
+
assert response.test?
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_failed_unlinked_credit
|
|
70
|
+
assert_raise ArgumentError do
|
|
71
|
+
@gateway.credit(@amount, @credit_card)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_successful_void
|
|
76
|
+
@gateway.expects(:ssl_post).returns(successful_void_response)
|
|
77
|
+
@options[:transactionid] = '123456'
|
|
78
|
+
|
|
79
|
+
assert response = @gateway.void(@amount, @credit_card, @options)
|
|
80
|
+
assert_success response
|
|
81
|
+
|
|
82
|
+
assert_equal '53147623', response.authorization
|
|
83
|
+
assert response.test?
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_failed_void
|
|
87
|
+
@gateway.expects(:ssl_post).returns(failed_void_response)
|
|
88
|
+
|
|
89
|
+
assert response = @gateway.void(@amount, @credit_card, @options)
|
|
90
|
+
assert_failure response
|
|
91
|
+
assert_equal('PARENT TRANSACTION NOT FOUND', response.message)
|
|
92
|
+
assert response.test?
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
private
|
|
97
|
+
|
|
98
|
+
def successful_purchase_response
|
|
99
|
+
"CAPTURED:056708:NA:X:Jun 02 2009:241:NLS:NLS:NLS:57097598:9999:NA:NA:NA:NA:NA:NA:NA"
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def failed_purchase_response
|
|
103
|
+
"NOT CAPTURED:DECLINE:NA:NA:Dec 11 2003:278654:NLS:NLS:NLS:53147611:200312111612:NA:NA:NA:NA:NA:NA"
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def successful_credit_response
|
|
107
|
+
"CAPTURED:945101216:199641568:NA:Dec 11 2003:278655:NLS:NLS:NLS:53147613:200312111613:NA:NA:NA:NA:NA"
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def failed_credit_response
|
|
111
|
+
"NOT CAPTURED:PARENT TRANSACTION NOT FOUND:NA:NA:Dec 11 2003:278614:NLS:NLS:NLS:53147499:200311251526:NA:NA:NA:NA:NA"
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def successful_void_response
|
|
115
|
+
"CAPTURED:000000:NA:Y:Dec 11 2003:278659:NLS:NLS:NLS:53147623:200312111628:NA:NA:NA:NA:NA"
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def failed_void_response
|
|
119
|
+
"NOT CAPTURED:PARENT TRANSACTION NOT FOUND:NA:NA:Dec 11 2003:278644:NLS:NLS:NLS:53147562:200311251526:NA:NA:NA:NA:NA"
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def error_response
|
|
123
|
+
'!ERROR! 704-MISSING BASIC DATA TYPE:card, exp, zip, addr, member, amount'
|
|
124
|
+
end
|
|
125
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class GatewayTest < Test::Unit::TestCase
|
|
4
|
+
def test_should_detect_if_a_card_is_supported
|
|
5
|
+
Gateway.supported_cardtypes = [:visa, :bogus]
|
|
6
|
+
assert [:visa, :bogus].all? { |supported_cardtype| Gateway.supports?(supported_cardtype) }
|
|
7
|
+
|
|
8
|
+
Gateway.supported_cardtypes = []
|
|
9
|
+
assert_false [:visa, :bogus].all? { |invalid_cardtype| Gateway.supports?(invalid_cardtype) }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_should_gateway_uses_ssl_strict_checking_by_default
|
|
13
|
+
assert Gateway.ssl_strict
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_should_be_able_to_look_for_test_mode
|
|
17
|
+
Base.gateway_mode = :test
|
|
18
|
+
assert Gateway.new.test?
|
|
19
|
+
|
|
20
|
+
Base.gateway_mode = :production
|
|
21
|
+
assert_false Gateway.new.test?
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_amount_style
|
|
25
|
+
assert_equal '10.34', Gateway.new.send(:amount, 1034)
|
|
26
|
+
|
|
27
|
+
assert_raise(ArgumentError) do
|
|
28
|
+
Gateway.new.send(:amount, '10.34')
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_invalid_type
|
|
33
|
+
credit_card = stub(:type => "visa")
|
|
34
|
+
assert_equal "visa", Gateway.card_brand(credit_card)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_invalid_type
|
|
38
|
+
credit_card = stub(:type => "String", :brand => "visa")
|
|
39
|
+
assert_equal "visa", Gateway.card_brand(credit_card)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_setting_application_id_outside_the_class_definition
|
|
43
|
+
assert_equal SimpleTestGateway.application_id, SubclassGateway.application_id
|
|
44
|
+
SimpleTestGateway.application_id = "New Application ID"
|
|
45
|
+
|
|
46
|
+
assert_equal SimpleTestGateway.application_id, SubclassGateway.application_id
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class InstapayTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = InstapayGateway.new(:login => 'TEST0')
|
|
6
|
+
@credit_card = credit_card
|
|
7
|
+
@amount = 100
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_successful_purchase
|
|
11
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
12
|
+
|
|
13
|
+
assert response = @gateway.purchase(@amount, @credit_card)
|
|
14
|
+
assert_instance_of Response, response
|
|
15
|
+
assert_success response
|
|
16
|
+
assert_equal "118583850", response.authorization
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_unsuccessful_purchase
|
|
20
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
21
|
+
|
|
22
|
+
assert response = @gateway.purchase(@amount, @credit_card)
|
|
23
|
+
assert_instance_of Response, response
|
|
24
|
+
assert_failure response
|
|
25
|
+
assert_nil response.authorization
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_successful_auth
|
|
29
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
30
|
+
|
|
31
|
+
assert response = @gateway.authorize(@amount, @credit_card)
|
|
32
|
+
assert_instance_of Response, response
|
|
33
|
+
assert_success response
|
|
34
|
+
assert_equal "118583850", response.authorization
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_unsuccessful_auth
|
|
38
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
39
|
+
|
|
40
|
+
assert response = @gateway.authorize(@amount, @credit_card)
|
|
41
|
+
assert_instance_of Response, response
|
|
42
|
+
assert_failure response
|
|
43
|
+
assert_nil response.authorization
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_avs_result
|
|
47
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
48
|
+
|
|
49
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
50
|
+
assert_equal 'X', response.avs_result['code']
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_cvv_result
|
|
54
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
55
|
+
|
|
56
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
57
|
+
assert_equal 'M', response.cvv_result['code']
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_successful_capture
|
|
61
|
+
@gateway.expects(:ssl_post).returns(successful_capture_response)
|
|
62
|
+
|
|
63
|
+
response = @gateway.capture(100, "123456")
|
|
64
|
+
assert_equal InstapayGateway::SUCCESS_MESSAGE, response.message
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_failed_capture
|
|
68
|
+
@gateway.expects(:ssl_post).returns(failed_capture_response)
|
|
69
|
+
|
|
70
|
+
response = @gateway.capture(100, "123456")
|
|
71
|
+
assert_equal "Post amount exceeds Auth amount", response.message
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
private
|
|
75
|
+
|
|
76
|
+
# Place raw successful response from gateway here
|
|
77
|
+
def successful_purchase_response
|
|
78
|
+
"<html><body><plaintext>\r\nAccepted=SALE:TEST:::118583850:X::M\r\nhistoryid=118583850\r\norderid=92886714\r\nAccepted=SALE:TEST:::118583850:::\r\nACCOUNTNUMBER=************5454\r\nauthcode=TEST\r\nAuthNo=SALE:TEST:::118583850:::\r\nhistoryid=118583850\r\norderid=92886714\r\nrecurid=0\r\nrefcode=118583850-TEST\r\nresult=1\r\nStatus=Accepted\r\ntransid=0\r\n"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Place raw failed response from gateway here
|
|
82
|
+
def failed_purchase_response
|
|
83
|
+
"<html><body><plaintext>\r\nDeclined=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nhistoryid=118583848\r\norderid=92886713\r\nACCOUNTNUMBER=************2220\r\nDeclined=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nhistoryid=118583848\r\norderid=92886713\r\nrcode=0720930009\r\nReason=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nrecurid=0\r\nresult=0\r\nStatus=Declined\r\ntransid=80410586\r\n"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def successful_auth_response
|
|
87
|
+
"<html><body><plaintext>\r\nAccepted=AUTH:TEST:::118585994:::\r\nhistoryid=118585994\r\norderid=92888143\r\nAccepted=AUTH:TEST:::118585994:::\r\nACCOUNTNUMBER=************5454\r\nauthcode=TEST\r\nAuthNo=AUTH:TEST:::118585994:::\r\nhistoryid=118585994\r\norderid=92888143\r\nrecurid=0\r\nrefcode=118585994-TEST\r\nresult=1\r\nStatus=Accepted\r\ntransid=0\r\n"
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def failed_auth_response
|
|
91
|
+
"<html><body><plaintext>\r\nDeclined=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nhistoryid=118585991\r\norderid=92888142\r\nACCOUNTNUMBER=************2220\r\nDeclined=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nhistoryid=118585991\r\norderid=92888142\r\nrcode=0720930009\r\nReason=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nrecurid=0\r\nresult=0\r\nStatus=Declined\r\ntransid=80412271\r\n"
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def successful_capture_response
|
|
95
|
+
"<html><body><plaintext>\r\nAccepted=AVSAUTH:TEST:::121609962::::DUPLICATE\r\nhistoryid=121609962\r\norderid=95009583\r\nAccepted=AVSAUTH:TEST:::121609962::::DUPLICATE\r\nACCOUNTNUMBER=************5454\r\nauthcode=TEST\r\nAuthNo=AVSAUTH:TEST:::121609962::::DUPLICATE\r\nDUPLICATE=1\r\nhistoryid=121609962\r\norderid=95009583\r\nrecurid=0\r\nrefcode=121609962-TEST\r\nresult=1\r\nStatus=Accepted\r\ntransid=0\r\n"
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def failed_capture_response
|
|
99
|
+
"<html><body><plaintext>\r\nDeclined=DECLINED:1101450002:Post amount exceeds Auth amount:\r\nhistoryid=\r\norderid=\r\nDeclined=DECLINED:1101450002:Post amount exceeds Auth amount:\r\nrcode=1101450002\r\nReason=DECLINED:1101450002:Post amount exceeds Auth amount:\r\nresult=0\r\nStatus=Declined\r\ntransid=0\r\n"
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class LinkpointTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
Base.mode = :test
|
|
6
|
+
|
|
7
|
+
@gateway = LinkpointGateway.new(
|
|
8
|
+
:login => 123123,
|
|
9
|
+
:pem => 'PEM'
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
@credit_card = credit_card('4111111111111111')
|
|
13
|
+
@options = { :order_id => 1000, :billing_address => address }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_credit_card_formatting
|
|
17
|
+
assert_equal '04', @gateway.send(:format_creditcard_expiry_year, 2004)
|
|
18
|
+
assert_equal '04', @gateway.send(:format_creditcard_expiry_year, '2004')
|
|
19
|
+
assert_equal '04', @gateway.send(:format_creditcard_expiry_year, 4)
|
|
20
|
+
assert_equal '04', @gateway.send(:format_creditcard_expiry_year, '04')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_successful_authorization
|
|
24
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
25
|
+
|
|
26
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
27
|
+
assert_instance_of Response, response
|
|
28
|
+
assert_success response
|
|
29
|
+
assert_equal '1000', response.authorization
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_successful_purchase
|
|
33
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
34
|
+
|
|
35
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
36
|
+
assert_instance_of Response, response
|
|
37
|
+
assert_success response
|
|
38
|
+
assert_equal '1000', response.authorization
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_failed_purchase
|
|
42
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
43
|
+
|
|
44
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
45
|
+
assert_failure response
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_recurring
|
|
49
|
+
@gateway.expects(:ssl_post).returns(successful_recurring_response)
|
|
50
|
+
|
|
51
|
+
assert response = @gateway.recurring(2400, @credit_card, :order_id => 1003, :installments => 12, :startdate => "immediate", :periodicity => :monthly)
|
|
52
|
+
assert_success response
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_amount_style
|
|
56
|
+
assert_equal '10.34', @gateway.send(:amount, 1034)
|
|
57
|
+
|
|
58
|
+
assert_raise(ArgumentError) do
|
|
59
|
+
@gateway.send(:amount, '10.34')
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_purchase_is_valid_xml
|
|
64
|
+
parameters = @gateway.send(:parameters, 1000, @credit_card, :ordertype => "SALE", :order_id => 1004,
|
|
65
|
+
:billing_address => {
|
|
66
|
+
:address1 => '1313 lucky lane',
|
|
67
|
+
:city => 'Lost Angeles',
|
|
68
|
+
:state => 'CA',
|
|
69
|
+
:zip => '90210'
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
assert data = @gateway.send(:post_data, @amount, @credit_card, @options)
|
|
74
|
+
assert REXML::Document.new(data)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def test_recurring_is_valid_xml
|
|
78
|
+
parameters = @gateway.send(:parameters, 1000, @credit_card, :ordertype => "SALE", :action => "SUBMIT", :installments => 12, :startdate => "immediate", :periodicity => "monthly", :order_id => 1006,
|
|
79
|
+
:billing_address => {
|
|
80
|
+
:address1 => '1313 lucky lane',
|
|
81
|
+
:city => 'Lost Angeles',
|
|
82
|
+
:state => 'CA',
|
|
83
|
+
:zip => '90210'
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
assert data = @gateway.send(:post_data, @amount, @credit_card, @options)
|
|
87
|
+
assert REXML::Document.new(data)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def test_declined_purchase_is_valid_xml
|
|
91
|
+
@gateway = LinkpointGateway.new(:login => 123123, :pem => 'PEM')
|
|
92
|
+
|
|
93
|
+
parameters = @gateway.send(:parameters, 1000, @credit_card, :ordertype => "SALE", :order_id => 1005,
|
|
94
|
+
:billing_address => {
|
|
95
|
+
:address1 => '1313 lucky lane',
|
|
96
|
+
:city => 'Lost Angeles',
|
|
97
|
+
:state => 'CA',
|
|
98
|
+
:zip => '90210'
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
assert data = @gateway.send(:post_data, @amount, @credit_card, @options)
|
|
103
|
+
assert REXML::Document.new(data)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def test_overriding_test_mode
|
|
107
|
+
Base.gateway_mode = :production
|
|
108
|
+
|
|
109
|
+
gateway = LinkpointGateway.new(
|
|
110
|
+
:login => 'LOGIN',
|
|
111
|
+
:pem => 'PEM',
|
|
112
|
+
:test => true
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
assert gateway.test?
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def test_using_production_mode
|
|
119
|
+
Base.gateway_mode = :production
|
|
120
|
+
|
|
121
|
+
gateway = LinkpointGateway.new(
|
|
122
|
+
:login => 'LOGIN',
|
|
123
|
+
:pem => 'PEM'
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
assert !gateway.test?
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def test_supported_countries
|
|
130
|
+
assert_equal ['US'], LinkpointGateway.supported_countries
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def test_supported_card_types
|
|
134
|
+
assert_equal [:visa, :master, :american_express, :discover], LinkpointGateway.supported_cardtypes
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def test_avs_result
|
|
138
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
139
|
+
|
|
140
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
141
|
+
assert_equal 'N', response.avs_result['code']
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def test_cvv_result
|
|
145
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
146
|
+
|
|
147
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
148
|
+
assert_equal 'M', response.cvv_result['code']
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
private
|
|
152
|
+
def successful_authorization_response
|
|
153
|
+
'<r_csp>CSI</r_csp><r_time>Sun Jan 6 21:41:31 2008</r_time><r_ref>0004486182</r_ref><r_error/><r_ordernum>1000</r_ordernum><r_message>APPROVED</r_message><r_code>1234560004486182:NNNM:100018312899:</r_code><r_tdate>1199680890</r_tdate><r_score/><r_authresponse/><r_approved>APPROVED</r_approved><r_avs>NNNM</r_avs>'
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def successful_purchase_response
|
|
157
|
+
'<r_csp>CSI</r_csp><r_time>Sun Jan 6 21:45:22 2008</r_time><r_ref>0004486195</r_ref><r_error></r_error><r_ordernum>1000</r_ordernum><r_message>APPROVED</r_message><r_code>1234560004486195:NNNM:100018312912:</r_code><r_tdate>1199681121</r_tdate><r_score></r_score><r_authresponse></r_authresponse><r_approved>APPROVED</r_approved><r_avs>NNNM</r_avs>'
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def failed_purchase_response
|
|
161
|
+
'<r_csp></r_csp><r_time>Sun Jan 6 21:50:51 2008</r_time><r_ref></r_ref><r_error>SGS-002300: Invalid credit card type.</r_error><r_ordernum>2aec6babe076111deb2c94c21181d9fe</r_ordernum><r_message></r_message><r_code></r_code><r_tdate></r_tdate><r_score></r_score><r_authresponse></r_authresponse><r_approved>DECLINED</r_approved><r_avs></r_avs>'
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def successful_recurring_response
|
|
165
|
+
'<r_csp>CSI</r_csp><r_time>Sun Jan 6 21:49:00 2008</r_time><r_ref>0004486198</r_ref><r_error></r_error><r_ordernum>2206b7c9a31de5fb077913134011059d</r_ordernum><r_message>APPROVED</r_message><r_code>1234560004486198:NNNM:100018312915:</r_code><r_tdate>1199681339</r_tdate><r_score></r_score><r_authresponse></r_authresponse><r_approved>APPROVED</r_approved><r_avs>NNN</r_avs>'
|
|
166
|
+
end
|
|
167
|
+
end
|