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,90 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CardStreamTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = CardStreamGateway.new(
|
|
6
|
+
:login => 'LOGIN',
|
|
7
|
+
:password => 'PASSWORD'
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
@amount = 100
|
|
11
|
+
@credit_card = credit_card('4242424242424242')
|
|
12
|
+
@options = { :order_id => '1', :billing_address => address }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_successful_purchase
|
|
16
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
17
|
+
|
|
18
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
19
|
+
assert_instance_of Response, response
|
|
20
|
+
assert_success response
|
|
21
|
+
assert_equal '08010706065208191057', response.authorization
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_failed_purchase
|
|
25
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
26
|
+
|
|
27
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
28
|
+
assert_instance_of Response, response
|
|
29
|
+
assert_failure response
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_successful_avs_result
|
|
33
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
34
|
+
|
|
35
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
36
|
+
assert_equal 'Y', response.avs_result['street_match']
|
|
37
|
+
assert_equal 'Y', response.avs_result['postal_match']
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_failed_avs_result
|
|
41
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_failed_avs_cvv_response)
|
|
42
|
+
|
|
43
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
44
|
+
assert_equal 'N', response.cvv_result['code']
|
|
45
|
+
assert_equal 'N', response.avs_result['street_match']
|
|
46
|
+
assert_equal 'N', response.avs_result['postal_match']
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_cvv_result
|
|
50
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
51
|
+
|
|
52
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
53
|
+
assert_equal 'M', response.cvv_result['code']
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_supported_countries
|
|
57
|
+
assert_equal ['GB'], CardStreamGateway.supported_countries
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_supported_card_types
|
|
61
|
+
assert_equal [:visa, :master, :american_express, :diners_club, :discover, :jcb, :maestro, :solo, :switch], CardStreamGateway.supported_cardtypes
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_default_currency
|
|
65
|
+
params = {}
|
|
66
|
+
|
|
67
|
+
@gateway.send(:add_amount, params, 1000, {})
|
|
68
|
+
assert_equal '826', params[:CurrencyCode]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_override_currency
|
|
72
|
+
params = {}
|
|
73
|
+
|
|
74
|
+
@gateway.send(:add_amount, params, 1000, :currency => 'USD')
|
|
75
|
+
assert_equal '840', params[:CurrencyCode]
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
private
|
|
79
|
+
def successful_purchase_response
|
|
80
|
+
'VPResponseCode=00&VPCrossReference=08010706065208191057&VPMessage=AUTHCODE:08191&VPTransactionUnique=c3871e2d005b924bf81565537caba82d&VPOrderDesc=Store purchase&VPBillingCountry=826&VPCardName=Longbob Longsen&VPBillingPostCode=LE10 2RT&VPAmountRecieved=100&VPAVSCV2ResponseCode=222100&VPCV2ResultMessage=CV2 Matched&VPAVSResultMessage=Postcode Matched&VPAVSAddressMessage=Address Numeric Matched&VPCardType=MC&VPBillingAddress=25 The Larches, Narborough, Leicester&VPReturnPoint=0090'
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def successful_purchase_failed_avs_cvv_response
|
|
84
|
+
'VPResponseCode=00&VPCrossReference=08010706065208191057&VPMessage=AUTHCODE:08191&VPTransactionUnique=c3871e2d005b924bf81565537caba82d&VPOrderDesc=Store purchase&VPBillingCountry=826&VPCardName=Longbob Longsen&VPBillingPostCode=LE10 2RT&VPAmountRecieved=100&VPAVSCV2ResponseCode=444100&VPCV2ResultMessage=CV2 Matched&VPAVSResultMessage=Postcode Matched&VPAVSAddressMessage=Address Numeric Matched&VPCardType=MC&VPBillingAddress=25 The Larches, Narborough, Leicester&VPReturnPoint=0090'
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def failed_purchase_response
|
|
88
|
+
'VPResponseCode=05&VPCrossReference=NoCrossReference&VPMessage=CARD DECLINED&VPTransactionUnique=d966e18a2983faff3715a541983792e0&VPOrderDesc=Store purchase&VPBillingCountry=826&VPCardName=Longbob Longsen&VPBillingPostCode=LE10 2RT&VPAmountRecieved=NA&VPAVSCV2ResponseCode=222100&VPCV2ResultMessage=CV2 Matched&VPAVSResultMessage=Postcode Matched&VPAVSAddressMessage=Address Numeric Matched&VPCardType=MC&VPBillingAddress=25 The Larches, Narborough, Leicester&VPReturnPoint=0090'
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class CyberSourceTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
Base.gateway_mode = :test
|
|
6
|
+
|
|
7
|
+
@gateway = CyberSourceGateway.new(
|
|
8
|
+
:login => 'l',
|
|
9
|
+
:password => 'p'
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
@amount = 100
|
|
13
|
+
@credit_card = credit_card('4111111111111111', :type => 'visa')
|
|
14
|
+
@declined_card = credit_card('801111111111111', :type => 'visa')
|
|
15
|
+
|
|
16
|
+
@options = { :billing_address => {
|
|
17
|
+
:address1 => '1234 My Street',
|
|
18
|
+
:address2 => 'Apt 1',
|
|
19
|
+
:company => 'Widgets Inc',
|
|
20
|
+
:city => 'Ottawa',
|
|
21
|
+
:state => 'ON',
|
|
22
|
+
:zip => 'K1C2N6',
|
|
23
|
+
:country => 'Canada',
|
|
24
|
+
:phone => '(555)555-5555'
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
:email => 'someguy1232@fakeemail.net',
|
|
28
|
+
:order_id => '1000',
|
|
29
|
+
:line_items => [
|
|
30
|
+
{
|
|
31
|
+
:declared_value => @amount,
|
|
32
|
+
:quantity => 2,
|
|
33
|
+
:code => 'default',
|
|
34
|
+
:description => 'Giant Walrus',
|
|
35
|
+
:sku => 'WA323232323232323'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
:declared_value => @amount,
|
|
39
|
+
:quantity => 2,
|
|
40
|
+
:description => 'Marble Snowcone',
|
|
41
|
+
:sku => 'FAKE1232132113123'
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
:currency => 'USD'
|
|
45
|
+
}
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_successful_purchase
|
|
49
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
50
|
+
|
|
51
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
52
|
+
assert_equal 'Successful transaction', response.message
|
|
53
|
+
assert_success response
|
|
54
|
+
assert_equal "#{@options[:order_id]};#{response.params['requestID']};#{response.params['requestToken']}", response.authorization
|
|
55
|
+
assert response.test?
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def test_unsuccessful_authorization
|
|
59
|
+
@gateway.expects(:ssl_post).returns(unsuccessful_authorization_response)
|
|
60
|
+
|
|
61
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
62
|
+
assert_instance_of Response, response
|
|
63
|
+
assert_failure response
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def test_successful_auth_request
|
|
67
|
+
@gateway.stubs(:ssl_post).returns(successful_authorization_response)
|
|
68
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
69
|
+
assert_equal Response, response.class
|
|
70
|
+
assert response.success?
|
|
71
|
+
assert response.test?
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_successful_tax_request
|
|
75
|
+
@gateway.stubs(:ssl_post).returns(successful_tax_response)
|
|
76
|
+
assert response = @gateway.calculate_tax(@credit_card, @options)
|
|
77
|
+
assert_equal Response, response.class
|
|
78
|
+
assert response.success?
|
|
79
|
+
assert response.test?
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def test_successful_capture_request
|
|
83
|
+
@gateway.stubs(:ssl_post).returns(successful_authorization_response, successful_capture_response)
|
|
84
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
85
|
+
assert response.success?
|
|
86
|
+
assert response.test?
|
|
87
|
+
assert response_capture = @gateway.capture(@amount, response.authorization)
|
|
88
|
+
assert response_capture.success?
|
|
89
|
+
assert response_capture.test?
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_successful_purchase_request
|
|
93
|
+
@gateway.stubs(:ssl_post).returns(successful_capture_response)
|
|
94
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
95
|
+
assert response.success?
|
|
96
|
+
assert response.test?
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def test_requires_error_on_purchase_without_order_id
|
|
100
|
+
assert_raise(ArgumentError){ @gateway.purchase(@amount, @credit_card, @options.delete_if{|key, val| key == :order_id}) }
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_requires_error_on_authorization_without_order_id
|
|
104
|
+
assert_raise(ArgumentError){ @gateway.purchase(@amount, @credit_card, @options.delete_if{|key, val| key == :order_id}) }
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def test_requires_error_on_tax_calculation_without_line_items
|
|
108
|
+
assert_raise(ArgumentError){ @gateway.calculate_tax(@credit_card, @options.delete_if{|key, val| key == :line_items})}
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def test_default_currency
|
|
112
|
+
assert_equal 'USD', CyberSourceGateway.default_currency
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def test_avs_result
|
|
116
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
117
|
+
|
|
118
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
119
|
+
assert_equal 'Y', response.avs_result['code']
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def test_cvv_result
|
|
123
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
124
|
+
|
|
125
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
126
|
+
assert_equal 'M', response.cvv_result['code']
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def test_successful_credit_request
|
|
130
|
+
@gateway.stubs(:ssl_post).returns(successful_capture_response, successful_credit_response)
|
|
131
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
132
|
+
assert response.success?
|
|
133
|
+
assert response.test?
|
|
134
|
+
assert response_capture = @gateway.credit(@amount, response.authorization)
|
|
135
|
+
assert response_capture.success?
|
|
136
|
+
assert response_capture.test?
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
private
|
|
140
|
+
|
|
141
|
+
def successful_purchase_response
|
|
142
|
+
<<-XML
|
|
143
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
144
|
+
<soap:Header>
|
|
145
|
+
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-2636690"><wsu:Created>2008-01-15T21:42:03.343Z</wsu:Created></wsu:Timestamp></wsse:Security></soap:Header><soap:Body><c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.26"><c:merchantReferenceCode>b0a6cf9aa07f1a8495f89c364bbd6a9a</c:merchantReferenceCode><c:requestID>2004333231260008401927</c:requestID><c:decision>ACCEPT</c:decision><c:reasonCode>100</c:reasonCode><c:requestToken>Afvvj7Ke2Fmsbq0wHFE2sM6R4GAptYZ0jwPSA+R9PhkyhFTb0KRjoE4+ynthZrG6tMBwjAtT</c:requestToken><c:purchaseTotals><c:currency>USD</c:currency></c:purchaseTotals><c:ccAuthReply><c:reasonCode>100</c:reasonCode><c:amount>1.00</c:amount><c:authorizationCode>123456</c:authorizationCode><c:avsCode>Y</c:avsCode><c:avsCodeRaw>Y</c:avsCodeRaw><c:cvCode>M</c:cvCode><c:cvCodeRaw>M</c:cvCodeRaw><c:authorizedDateTime>2008-01-15T21:42:03Z</c:authorizedDateTime><c:processorResponse>00</c:processorResponse><c:authFactorCode>U</c:authFactorCode></c:ccAuthReply></c:replyMessage></soap:Body></soap:Envelope>
|
|
146
|
+
XML
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def successful_authorization_response
|
|
150
|
+
<<-XML
|
|
151
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
152
|
+
<soap:Header>
|
|
153
|
+
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-32551101"><wsu:Created>2007-07-12T18:31:53.838Z</wsu:Created></wsu:Timestamp></wsse:Security></soap:Header><soap:Body><c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.26"><c:merchantReferenceCode>TEST11111111111</c:merchantReferenceCode><c:requestID>1842651133440156177166</c:requestID><c:decision>ACCEPT</c:decision><c:reasonCode>100</c:reasonCode><c:requestToken>AP4JY+Or4xRonEAOERAyMzQzOTEzMEM0MFZaNUZCBgDH3fgJ8AEGAMfd+AnwAwzRpAAA7RT/</c:requestToken><c:purchaseTotals><c:currency>USD</c:currency></c:purchaseTotals><c:ccAuthReply><c:reasonCode>100</c:reasonCode><c:amount>1.00</c:amount><c:authorizationCode>004542</c:authorizationCode><c:avsCode>A</c:avsCode><c:avsCodeRaw>I7</c:avsCodeRaw><c:authorizedDateTime>2007-07-12T18:31:53Z</c:authorizedDateTime><c:processorResponse>100</c:processorResponse><c:reconciliationID>23439130C40VZ2FB</c:reconciliationID></c:ccAuthReply></c:replyMessage></soap:Body></soap:Envelope>
|
|
154
|
+
XML
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def unsuccessful_authorization_response
|
|
158
|
+
<<-XML
|
|
159
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
160
|
+
<soap:Header>
|
|
161
|
+
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-28121162"><wsu:Created>2008-01-15T21:50:41.580Z</wsu:Created></wsu:Timestamp></wsse:Security></soap:Header><soap:Body><c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.26"><c:merchantReferenceCode>a1efca956703a2a5037178a8a28f7357</c:merchantReferenceCode><c:requestID>2004338415330008402434</c:requestID><c:decision>REJECT</c:decision><c:reasonCode>231</c:reasonCode><c:requestToken>Afvvj7KfIgU12gooCFE2/DanQIApt+G1OgTSA+R9PTnyhFTb0KRjgFY+ynyIFNdoKKAghwgx</c:requestToken><c:ccAuthReply><c:reasonCode>231</c:reasonCode></c:ccAuthReply></c:replyMessage></soap:Body></soap:Envelope>
|
|
162
|
+
XML
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def successful_tax_response
|
|
166
|
+
<<-XML
|
|
167
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
168
|
+
<soap:Header>
|
|
169
|
+
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-21248497"><wsu:Created>2007-07-11T18:27:56.314Z</wsu:Created></wsu:Timestamp></wsse:Security></soap:Header><soap:Body><c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.26"><c:merchantReferenceCode>TEST11111111111</c:merchantReferenceCode><c:requestID>1841784762620176127166</c:requestID><c:decision>ACCEPT</c:decision><c:reasonCode>100</c:reasonCode><c:requestToken>AMYJY9fl62i+vx2OEQYAx9zv/9UBZAAA5h5D</c:requestToken><c:taxReply><c:reasonCode>100</c:reasonCode><c:grandTotalAmount>1.00</c:grandTotalAmount><c:totalCityTaxAmount>0</c:totalCityTaxAmount><c:city>Madison</c:city><c:totalCountyTaxAmount>0</c:totalCountyTaxAmount><c:totalDistrictTaxAmount>0</c:totalDistrictTaxAmount><c:totalStateTaxAmount>0</c:totalStateTaxAmount><c:state>WI</c:state><c:totalTaxAmount>0</c:totalTaxAmount><c:postalCode>53717</c:postalCode><c:item id="0"><c:totalTaxAmount>0</c:totalTaxAmount></c:item></c:taxReply></c:replyMessage></soap:Body></soap:Envelope>
|
|
170
|
+
XML
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def successful_capture_response
|
|
175
|
+
<<-XML
|
|
176
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-6000655"><wsu:Created>2007-07-17T17:15:32.642Z</wsu:Created></wsu:Timestamp></wsse:Security></soap:Header><soap:Body><c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.26"><c:merchantReferenceCode>test1111111111111111</c:merchantReferenceCode><c:requestID>1846925324700976124593</c:requestID><c:decision>ACCEPT</c:decision><c:reasonCode>100</c:reasonCode><c:requestToken>AP4JZB883WKS/34BEZAzMTE1OTI5MVQzWE0wQjEzBTUt3wbOAQUy3D7oDgMMmvQAnQgl</c:requestToken><c:purchaseTotals><c:currency>GBP</c:currency></c:purchaseTotals><c:ccCaptureReply><c:reasonCode>100</c:reasonCode><c:requestDateTime>2007-07-17T17:15:32Z</c:requestDateTime><c:amount>1.00</c:amount><c:reconciliationID>31159291T3XM2B13</c:reconciliationID></c:ccCaptureReply></c:replyMessage></soap:Body></soap:Envelope>
|
|
177
|
+
XML
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def successful_credit_response
|
|
181
|
+
<<-XML
|
|
182
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
183
|
+
<soap:Header>
|
|
184
|
+
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-5589339"><wsu:Created>2008-01-21T16:00:38.927Z</wsu:Created></wsu:Timestamp></wsse:Security></soap:Header><soap:Body><c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.32"><c:merchantReferenceCode>TEST11111111111</c:merchantReferenceCode><c:requestID>2009312387810008401927</c:requestID><c:decision>ACCEPT</c:decision><c:reasonCode>100</c:reasonCode><c:requestToken>Af/vj7OzPmut/eogHFCrBiwYsWTJy1r127CpCn0KdOgyTZnzKwVYCmzPmVgr9ID5H1WGTSTKuj0i30IE4+zsz2d/QNzwBwAACCPA</c:requestToken><c:purchaseTotals><c:currency>USD</c:currency></c:purchaseTotals><c:ccCreditReply><c:reasonCode>100</c:reasonCode><c:requestDateTime>2008-01-21T16:00:38Z</c:requestDateTime><c:amount>1.00</c:amount><c:reconciliationID>010112295WW70TBOPSSP2</c:reconciliationID></c:ccCreditReply></c:replyMessage></soap:Body></soap:Envelope>
|
|
185
|
+
XML
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class DataCashTest < Test::Unit::TestCase
|
|
4
|
+
# 100 Cents
|
|
5
|
+
AMOUNT = 100
|
|
6
|
+
|
|
7
|
+
def setup
|
|
8
|
+
@gateway = DataCashGateway.new(
|
|
9
|
+
:login => 'LOGIN',
|
|
10
|
+
:password => 'PASSWORD'
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
@credit_card = credit_card('4242424242424242')
|
|
14
|
+
|
|
15
|
+
@address = {
|
|
16
|
+
:name => 'Mark McBride',
|
|
17
|
+
:address1 => 'Flat 12/3',
|
|
18
|
+
:address2 => '45 Main Road',
|
|
19
|
+
:city => 'London',
|
|
20
|
+
:state => 'None',
|
|
21
|
+
:country => 'GBR',
|
|
22
|
+
:zip => 'A987AA',
|
|
23
|
+
:phone => '(555)555-5555'
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@options = {
|
|
27
|
+
:order_id => generate_unique_id,
|
|
28
|
+
:billing_address => @address
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_successful_purchase
|
|
33
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
34
|
+
|
|
35
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
36
|
+
assert_instance_of Response, response
|
|
37
|
+
assert_success response
|
|
38
|
+
assert response.test?
|
|
39
|
+
assert_equal 'The transaction was successful', response.message
|
|
40
|
+
assert_equal '4400200050664928;123456789;', response.authorization
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_unsuccessful_purchase
|
|
44
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
45
|
+
|
|
46
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
47
|
+
assert_instance_of Response, response
|
|
48
|
+
assert_failure response
|
|
49
|
+
assert response.test?
|
|
50
|
+
assert_equal 'Invalid reference number', response.message
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_error_response
|
|
54
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
55
|
+
|
|
56
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
57
|
+
assert_instance_of Response, response
|
|
58
|
+
assert_failure response
|
|
59
|
+
assert response.test?
|
|
60
|
+
assert_equal 'Invalid reference number', response.message
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_supported_countries
|
|
64
|
+
assert_equal ['GB'], DataCashGateway.supported_countries
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_supported_card_types
|
|
68
|
+
assert_equal [ :visa, :master, :american_express, :discover, :diners_club, :jcb, :maestro, :switch, :solo, :laser ], DataCashGateway.supported_cardtypes
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_purchase_with_missing_order_id_option
|
|
72
|
+
assert_raise(ArgumentError){ @gateway.purchase(100, @credit_card, {}) }
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_authorize_with_missing_order_id_option
|
|
76
|
+
assert_raise(ArgumentError){ @gateway.authorize(100, @credit_card, {}) }
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_purchase_does_not_raise_exception_with_missing_billing_address
|
|
80
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
81
|
+
assert @gateway.authorize(100, @credit_card, {:order_id => generate_unique_id }).is_a?(ActiveMerchant::Billing::Response)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def test_continuous_authority_purchase_with_missing_continuous_authority_reference
|
|
85
|
+
assert_raise(ArgumentError) do
|
|
86
|
+
@gateway.authorize(100, "a;b;", @options)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def test_successful_continuous_authority_purchase
|
|
91
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
92
|
+
|
|
93
|
+
response = @gateway.purchase(@amount, '4400200050664928;123456789;10000000', @options)
|
|
94
|
+
assert_instance_of Response, response
|
|
95
|
+
assert_success response
|
|
96
|
+
assert response.test?
|
|
97
|
+
assert_equal 'The transaction was successful', response.message
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
private
|
|
101
|
+
def failed_purchase_response
|
|
102
|
+
<<-XML
|
|
103
|
+
<Response>
|
|
104
|
+
<status>22</status>
|
|
105
|
+
<time>1196414665</time>
|
|
106
|
+
<mode>TEST</mode>
|
|
107
|
+
<country>United Kingdom</country>
|
|
108
|
+
<merchantreference>2d24cc91284c1ed5c65d8821f1e752c7</merchantreference>
|
|
109
|
+
<issuer>Clydesdale Bank PLC</issuer>
|
|
110
|
+
<reason>Invalid reference number</reason>
|
|
111
|
+
<card_scheme>Solo</card_scheme>
|
|
112
|
+
<datacash_reference>4400200050664928</datacash_reference>
|
|
113
|
+
</Response>
|
|
114
|
+
XML
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def successful_purchase_response
|
|
118
|
+
<<-XML
|
|
119
|
+
<Response>
|
|
120
|
+
<status>1</status>
|
|
121
|
+
<time>1196414665</time>
|
|
122
|
+
<mode>TEST</mode>
|
|
123
|
+
<country>United Kingdom</country>
|
|
124
|
+
<merchantreference>2d24cc91284c1ed5c65d8821f1e752c7</merchantreference>
|
|
125
|
+
<issuer>Clydesdale Bank PLC</issuer>
|
|
126
|
+
<reason>The transaction was successful</reason>
|
|
127
|
+
<card_scheme>Visa</card_scheme>
|
|
128
|
+
<datacash_reference>4400200050664928</datacash_reference>
|
|
129
|
+
<authcode>123456789</authcode>
|
|
130
|
+
</Response>
|
|
131
|
+
XML
|
|
132
|
+
end
|
|
133
|
+
end
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class EfsnetTest < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@gateway = EfsnetGateway.new(
|
|
7
|
+
:login => 'LOGIN',
|
|
8
|
+
:password => 'PASSWORD'
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
@credit_card = credit_card('4242424242424242')
|
|
12
|
+
@amount = 100
|
|
13
|
+
@options = { :order_id => 1, :billing_address => address }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_successful_purchase
|
|
17
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
18
|
+
|
|
19
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
20
|
+
assert_instance_of Response, response
|
|
21
|
+
assert_success response
|
|
22
|
+
assert response.test?
|
|
23
|
+
assert_equal '100018347764;1.00', response.authorization
|
|
24
|
+
assert_equal 'Approved', response.message
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_unsuccessful_purchase
|
|
29
|
+
@gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
|
|
30
|
+
|
|
31
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
32
|
+
assert_instance_of Response, response
|
|
33
|
+
assert_failure response
|
|
34
|
+
assert response.test?
|
|
35
|
+
assert_equal 'Declined', response.message
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_authorize_is_valid_xml
|
|
39
|
+
params = {
|
|
40
|
+
:order_id => "order1",
|
|
41
|
+
:transaction_amount => "1.01",
|
|
42
|
+
:account_number => "4242424242424242",
|
|
43
|
+
:expiration_month => "12",
|
|
44
|
+
:expiration_year => "2029",
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
assert data = @gateway.send(:post_data, :credit_card_authorize, params)
|
|
48
|
+
assert REXML::Document.new(data)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_settle_is_valid_xml
|
|
52
|
+
params = {
|
|
53
|
+
:order_id => "order1",
|
|
54
|
+
:transaction_amount => "1.01",
|
|
55
|
+
:original_transaction_amount => "1.01",
|
|
56
|
+
:original_transaction_id => "1",
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
assert data = @gateway.send(:post_data, :credit_card_settle, params)
|
|
60
|
+
assert REXML::Document.new(data)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_avs_result
|
|
64
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
65
|
+
|
|
66
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
67
|
+
assert_equal 'N', response.avs_result['code']
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_cvv_result
|
|
71
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
72
|
+
|
|
73
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
74
|
+
assert_equal 'M', response.cvv_result['code']
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
private
|
|
78
|
+
def successful_purchase_response
|
|
79
|
+
<<-XML
|
|
80
|
+
<?xml version="1.0"?>
|
|
81
|
+
<Reply>
|
|
82
|
+
<TransactionReply>
|
|
83
|
+
<ResponseCode>0</ResponseCode>
|
|
84
|
+
<ResultCode>00</ResultCode>
|
|
85
|
+
<ResultMessage>APPROVED</ResultMessage>
|
|
86
|
+
<TransactionID>100018347764</TransactionID>
|
|
87
|
+
<AVSResponseCode>N</AVSResponseCode>
|
|
88
|
+
<CVVResponseCode>M</CVVResponseCode>
|
|
89
|
+
<ApprovalNumber>123456</ApprovalNumber>
|
|
90
|
+
<AuthorizationNumber>123456</AuthorizationNumber>
|
|
91
|
+
<TransactionDate>080117</TransactionDate>
|
|
92
|
+
<TransactionTime>163222</TransactionTime>
|
|
93
|
+
<ReferenceNumber>1</ReferenceNumber>
|
|
94
|
+
<AccountNumber>XXXXXXXXXXXX2224</AccountNumber>
|
|
95
|
+
<TransactionAmount>1.00</TransactionAmount>
|
|
96
|
+
</TransactionReply>
|
|
97
|
+
</Reply>
|
|
98
|
+
XML
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def unsuccessful_purchase_response
|
|
102
|
+
<<-XML
|
|
103
|
+
<?xml version="1.0"?>
|
|
104
|
+
<Reply>
|
|
105
|
+
<TransactionReply>
|
|
106
|
+
<ResponseCode>256</ResponseCode>
|
|
107
|
+
<ResultCode>04</ResultCode>
|
|
108
|
+
<ResultMessage>DECLINED</ResultMessage>
|
|
109
|
+
<TransactionID>100018347784</TransactionID>
|
|
110
|
+
<AVSResponseCode>N</AVSResponseCode>
|
|
111
|
+
<CVVResponseCode/>
|
|
112
|
+
<ApprovalNumber/>
|
|
113
|
+
<AuthorizationNumber/>
|
|
114
|
+
<TransactionDate>080117</TransactionDate>
|
|
115
|
+
<TransactionTime>163946</TransactionTime>
|
|
116
|
+
<ReferenceNumber>1</ReferenceNumber>
|
|
117
|
+
<AccountNumber>XXXXXXXXXXXX2224</AccountNumber>
|
|
118
|
+
<TransactionAmount>1.56</TransactionAmount>
|
|
119
|
+
</TransactionReply>
|
|
120
|
+
</Reply>
|
|
121
|
+
XML
|
|
122
|
+
end
|
|
123
|
+
end
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class EwayTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = EwayGateway.new(
|
|
6
|
+
:login => '87654321'
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
@credit_card = credit_card('4646464646464646')
|
|
10
|
+
|
|
11
|
+
@options = {
|
|
12
|
+
:order_id => '1230123',
|
|
13
|
+
:email => 'bob@testbob.com',
|
|
14
|
+
:billing_address => {
|
|
15
|
+
:address1 => '1234 First St.',
|
|
16
|
+
:address2 => 'Apt. 1',
|
|
17
|
+
:city => 'Melbourne',
|
|
18
|
+
:state => 'ACT',
|
|
19
|
+
:country => 'AU',
|
|
20
|
+
:zip => '12345'
|
|
21
|
+
},
|
|
22
|
+
:description => 'purchased items'
|
|
23
|
+
}
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_successful_purchase
|
|
27
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
28
|
+
|
|
29
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
30
|
+
assert_instance_of Response, response
|
|
31
|
+
assert_success response
|
|
32
|
+
assert_equal '123456', response.authorization
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_failed_purchase
|
|
36
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
37
|
+
|
|
38
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
39
|
+
assert_instance_of Response, response
|
|
40
|
+
assert_failure response
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_amount_style
|
|
44
|
+
assert_equal '1034', @gateway.send(:amount, 1034)
|
|
45
|
+
|
|
46
|
+
assert_raise(ArgumentError) do
|
|
47
|
+
@gateway.send(:amount, '10.34')
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_ensure_does_not_respond_to_authorize
|
|
52
|
+
assert !@gateway.respond_to?(:authorize)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_ensure_does_not_respond_to_capture
|
|
56
|
+
assert !@gateway.respond_to?(:capture)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_test_url_without_cvn
|
|
60
|
+
assert_equal EwayGateway::TEST_URL, @gateway.send(:gateway_url, false, true)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_test_url_with_cvn
|
|
64
|
+
assert_equal EwayGateway::TEST_CVN_URL, @gateway.send(:gateway_url, true, true)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_live_url_without_cvn
|
|
68
|
+
assert_equal EwayGateway::LIVE_URL, @gateway.send(:gateway_url, false, false)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_live_url_with_cvn
|
|
72
|
+
assert_equal EwayGateway::LIVE_CVN_URL, @gateway.send(:gateway_url, true, false)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_add_address
|
|
76
|
+
post = {}
|
|
77
|
+
@gateway.send(:add_address, post, @options)
|
|
78
|
+
assert_equal '1234 First St., Apt. 1, Melbourne, ACT, AU', post[:CustomerAddress]
|
|
79
|
+
assert_equal @options[:billing_address][:zip], post[:CustomerPostcode]
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
private
|
|
83
|
+
def successful_purchase_response
|
|
84
|
+
<<-XML
|
|
85
|
+
<?xml version="1.0"?>
|
|
86
|
+
<ewayResponse>
|
|
87
|
+
<ewayTrxnStatus>True</ewayTrxnStatus>
|
|
88
|
+
<ewayTrxnNumber>11292</ewayTrxnNumber>
|
|
89
|
+
<ewayTrxnReference/>
|
|
90
|
+
<ewayTrxnOption1/>
|
|
91
|
+
<ewayTrxnOption2/>
|
|
92
|
+
<ewayTrxnOption3/>
|
|
93
|
+
<ewayAuthCode>123456</ewayAuthCode>
|
|
94
|
+
<ewayReturnAmount>100</ewayReturnAmount>
|
|
95
|
+
<ewayTrxnError>00,Transaction Approved(Test CVN Gateway)</ewayTrxnError>
|
|
96
|
+
</ewayResponse>
|
|
97
|
+
XML
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def failed_purchase_response
|
|
101
|
+
<<-XML
|
|
102
|
+
<?xml version="1.0"?>
|
|
103
|
+
<ewayResponse>
|
|
104
|
+
<ewayTrxnStatus>False</ewayTrxnStatus>
|
|
105
|
+
<ewayTrxnNumber>11290</ewayTrxnNumber>
|
|
106
|
+
<ewayTrxnReference/>
|
|
107
|
+
<ewayTrxnOption1/>
|
|
108
|
+
<ewayTrxnOption2/>
|
|
109
|
+
<ewayTrxnOption3/>
|
|
110
|
+
<ewayAuthCode/>
|
|
111
|
+
<ewayReturnAmount>100</ewayReturnAmount>
|
|
112
|
+
<ewayTrxnError>eWAY Error: Invalid Expiry Date. Your credit card has not been billed for this transaction.(Test CVN Gateway)</ewayTrxnError>
|
|
113
|
+
</ewayResponse>
|
|
114
|
+
XML
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
|