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,250 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class WirecardTest < Test::Unit::TestCase
|
|
4
|
+
TEST_AUTHORIZATION_GUWID = 'C822580121385121429927'
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
@gateway = WirecardGateway.new(:login => '', :password => '', :signature => '')
|
|
8
|
+
@credit_card = credit_card('4200000000000000')
|
|
9
|
+
@declined_card = credit_card('4000300011112220')
|
|
10
|
+
@unsupported_card = credit_card('4200000000000000', :type => :maestro)
|
|
11
|
+
|
|
12
|
+
@amount = 111
|
|
13
|
+
|
|
14
|
+
@options = {
|
|
15
|
+
:order_id => '1',
|
|
16
|
+
:billing_address => address,
|
|
17
|
+
:description => 'Wirecard Purchase',
|
|
18
|
+
:email => 'soleone@example.com'
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@address_without_state = {
|
|
22
|
+
:name => 'Jim Smith',
|
|
23
|
+
:address1 => '1234 My Street',
|
|
24
|
+
:company => 'Widgets Inc',
|
|
25
|
+
:city => 'Ottawa',
|
|
26
|
+
:zip => 'K12 P2A',
|
|
27
|
+
:country => 'CA',
|
|
28
|
+
:state => nil,
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_successful_authorization
|
|
33
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
34
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
35
|
+
assert_instance_of Response, response
|
|
36
|
+
|
|
37
|
+
assert_success response
|
|
38
|
+
assert response.test?
|
|
39
|
+
assert_equal TEST_AUTHORIZATION_GUWID, response.authorization
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_wrong_credit_card_authorization
|
|
43
|
+
@gateway.expects(:ssl_post).returns(wrong_creditcard_authorization_response)
|
|
44
|
+
assert response = @gateway.authorize(@amount, @declined_card, @options)
|
|
45
|
+
assert_instance_of Response, response
|
|
46
|
+
|
|
47
|
+
assert_failure response
|
|
48
|
+
assert response.test?
|
|
49
|
+
assert_false response.authorization
|
|
50
|
+
assert response.message[/credit card number not allowed in demo mode/i]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_successful_authorization_and_capture
|
|
54
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
55
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
56
|
+
assert_success response
|
|
57
|
+
assert_equal TEST_AUTHORIZATION_GUWID, response.authorization
|
|
58
|
+
|
|
59
|
+
@gateway.expects(:ssl_post).returns(successful_capture_response)
|
|
60
|
+
assert response = @gateway.capture(@amount, response.authorization, @options)
|
|
61
|
+
assert_success response
|
|
62
|
+
assert response.test?
|
|
63
|
+
assert response.message[/this is a demo/i]
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def test_unauthorized_capture
|
|
67
|
+
@gateway.expects(:ssl_post).returns(unauthorized_capture_response)
|
|
68
|
+
assert response = @gateway.capture(@amount, "1234567890123456789012", @options)
|
|
69
|
+
|
|
70
|
+
assert_failure response
|
|
71
|
+
assert response.message["Could not find referenced transaction for GuWID 1234567890123456789012."]
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_doesnt_raise_an_error_if_no_state_is_provided_in_address
|
|
75
|
+
options = @options.merge(:billing_address => @address_without_state)
|
|
76
|
+
@gateway.expects(:ssl_post).returns(unauthorized_capture_response)
|
|
77
|
+
assert_nothing_raised do
|
|
78
|
+
@gateway.authorize(@amount, @credit_card, options)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
private
|
|
83
|
+
|
|
84
|
+
# Authorization success
|
|
85
|
+
def successful_authorization_response
|
|
86
|
+
<<-XML
|
|
87
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
88
|
+
<WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
|
|
89
|
+
<W_RESPONSE>
|
|
90
|
+
<W_JOB>
|
|
91
|
+
<JobID>test dummy data</JobID>
|
|
92
|
+
<FNC_CC_AUTHORIZATION>
|
|
93
|
+
<FunctionID>Wirecard remote test purchase</FunctionID>
|
|
94
|
+
<CC_TRANSACTION>
|
|
95
|
+
<TransactionID>1</TransactionID>
|
|
96
|
+
<PROCESSING_STATUS>
|
|
97
|
+
<GuWID>C822580121385121429927</GuWID>
|
|
98
|
+
<AuthorizationCode>709678</AuthorizationCode>
|
|
99
|
+
<Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
|
|
100
|
+
<StatusType>INFO</StatusType>
|
|
101
|
+
<FunctionResult>ACK</FunctionResult>
|
|
102
|
+
<TimeStamp>2008-06-19 06:53:33</TimeStamp>
|
|
103
|
+
</PROCESSING_STATUS>
|
|
104
|
+
</CC_TRANSACTION>
|
|
105
|
+
</FNC_CC_AUTHORIZATION>
|
|
106
|
+
</W_JOB>
|
|
107
|
+
</W_RESPONSE>
|
|
108
|
+
</WIRECARD_BXML>
|
|
109
|
+
XML
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Authorization failure
|
|
113
|
+
# TODO: replace with real xml string here (current way seems to complicated)
|
|
114
|
+
def wrong_creditcard_authorization_response
|
|
115
|
+
error = <<-XML
|
|
116
|
+
<ERROR>
|
|
117
|
+
<Type>DATA_ERROR</Type>
|
|
118
|
+
<Number>24997</Number>
|
|
119
|
+
<Message>Credit card number not allowed in demo mode.</Message>
|
|
120
|
+
<Advice>Only demo card number '4200000000000000' is allowed for VISA in demo mode.</Advice>
|
|
121
|
+
</ERROR>
|
|
122
|
+
XML
|
|
123
|
+
result_node = '</FunctionResult>'
|
|
124
|
+
auth = 'AuthorizationCode'
|
|
125
|
+
successful_authorization_response.gsub('ACK', 'NOK') \
|
|
126
|
+
.gsub(result_node, result_node + error) \
|
|
127
|
+
.gsub(/<#{auth}>\w+<\/#{auth}>/, "<#{auth}><\/#{auth}>") \
|
|
128
|
+
.gsub(/<Info>.+<\/Info>/, '')
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Capture success
|
|
132
|
+
def successful_capture_response
|
|
133
|
+
<<-XML
|
|
134
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
135
|
+
<WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
|
|
136
|
+
<W_RESPONSE>
|
|
137
|
+
<W_JOB>
|
|
138
|
+
<JobID>test dummy data</JobID>
|
|
139
|
+
<FNC_CC_CAPTURE_AUTHORIZATION>
|
|
140
|
+
<FunctionID>Wirecard remote test purchase</FunctionID>
|
|
141
|
+
<CC_TRANSACTION>
|
|
142
|
+
<TransactionID>1</TransactionID>
|
|
143
|
+
<PROCESSING_STATUS>
|
|
144
|
+
<GuWID>C833707121385268439116</GuWID>
|
|
145
|
+
<AuthorizationCode>915025</AuthorizationCode>
|
|
146
|
+
<Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
|
|
147
|
+
<StatusType>INFO</StatusType>
|
|
148
|
+
<FunctionResult>ACK</FunctionResult>
|
|
149
|
+
<TimeStamp>2008-06-19 07:18:04</TimeStamp>
|
|
150
|
+
</PROCESSING_STATUS>
|
|
151
|
+
</CC_TRANSACTION>
|
|
152
|
+
</FNC_CC_CAPTURE_AUTHORIZATION>
|
|
153
|
+
</W_JOB>
|
|
154
|
+
</W_RESPONSE>
|
|
155
|
+
</WIRECARD_BXML>
|
|
156
|
+
XML
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# Capture failure
|
|
160
|
+
def unauthorized_capture_response
|
|
161
|
+
<<-XML
|
|
162
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
163
|
+
<WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
|
|
164
|
+
<W_RESPONSE>
|
|
165
|
+
<W_JOB>
|
|
166
|
+
<JobID>test dummy data</JobID>
|
|
167
|
+
<FNC_CC_CAPTURE_AUTHORIZATION>
|
|
168
|
+
<FunctionID>Test dummy FunctionID</FunctionID>
|
|
169
|
+
<CC_TRANSACTION>
|
|
170
|
+
<TransactionID>a2783d471ccc98825b8c498f1a62ce8f</TransactionID>
|
|
171
|
+
<PROCESSING_STATUS>
|
|
172
|
+
<GuWID>C865683121385576058270</GuWID>
|
|
173
|
+
<AuthorizationCode></AuthorizationCode>
|
|
174
|
+
<StatusType>INFO</StatusType>
|
|
175
|
+
<FunctionResult>NOK</FunctionResult>
|
|
176
|
+
<ERROR>
|
|
177
|
+
<Type>DATA_ERROR</Type>
|
|
178
|
+
<Number>20080</Number>
|
|
179
|
+
<Message>Could not find referenced transaction for GuWID 1234567890123456789012.</Message>
|
|
180
|
+
</ERROR>
|
|
181
|
+
<TimeStamp>2008-06-19 08:09:20</TimeStamp>
|
|
182
|
+
</PROCESSING_STATUS>
|
|
183
|
+
</CC_TRANSACTION>
|
|
184
|
+
</FNC_CC_CAPTURE_AUTHORIZATION>
|
|
185
|
+
</W_JOB>
|
|
186
|
+
</W_RESPONSE>
|
|
187
|
+
</WIRECARD_BXML>
|
|
188
|
+
XML
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# Purchase success
|
|
192
|
+
def successful_purchase_response
|
|
193
|
+
<<-XML
|
|
194
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
195
|
+
<WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
|
|
196
|
+
<W_RESPONSE>
|
|
197
|
+
<W_JOB>
|
|
198
|
+
<JobID>test dummy data</JobID>
|
|
199
|
+
<FNC_CC_PURCHASE>
|
|
200
|
+
<FunctionID>Wirecard remote test purchase</FunctionID>
|
|
201
|
+
<CC_TRANSACTION>
|
|
202
|
+
<TransactionID>1</TransactionID>
|
|
203
|
+
<PROCESSING_STATUS>
|
|
204
|
+
<GuWID>C865402121385575982910</GuWID>
|
|
205
|
+
<AuthorizationCode>531750</AuthorizationCode>
|
|
206
|
+
<Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
|
|
207
|
+
<StatusType>INFO</StatusType>
|
|
208
|
+
<FunctionResult>ACK</FunctionResult>
|
|
209
|
+
<TimeStamp>2008-06-19 08:09:19</TimeStamp>
|
|
210
|
+
</PROCESSING_STATUS>
|
|
211
|
+
</CC_TRANSACTION>
|
|
212
|
+
</FNC_CC_PURCHASE>
|
|
213
|
+
</W_JOB>
|
|
214
|
+
</W_RESPONSE>
|
|
215
|
+
</WIRECARD_BXML>
|
|
216
|
+
XML
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Purchase failure
|
|
220
|
+
def wrong_creditcard_purchase_response
|
|
221
|
+
<<-XML
|
|
222
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
223
|
+
<WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
|
|
224
|
+
<W_RESPONSE>
|
|
225
|
+
<W_JOB>
|
|
226
|
+
<JobID>test dummy data</JobID>
|
|
227
|
+
<FNC_CC_PURCHASE>
|
|
228
|
+
<FunctionID>Wirecard remote test purchase</FunctionID>
|
|
229
|
+
<CC_TRANSACTION>
|
|
230
|
+
<TransactionID>1</TransactionID>
|
|
231
|
+
<PROCESSING_STATUS>
|
|
232
|
+
<GuWID>C824697121385153203112</GuWID>
|
|
233
|
+
<AuthorizationCode></AuthorizationCode>
|
|
234
|
+
<StatusType>INFO</StatusType>
|
|
235
|
+
<FunctionResult>NOK</FunctionResult>
|
|
236
|
+
<ERROR>
|
|
237
|
+
<Type>DATA_ERROR</Type> <Number>24997</Number>
|
|
238
|
+
<Message>Credit card number not allowed in demo mode.</Message>
|
|
239
|
+
<Advice>Only demo card number '4200000000000000' is allowed for VISA in demo mode.</Advice>
|
|
240
|
+
</ERROR>
|
|
241
|
+
<TimeStamp>2008-06-19 06:58:51</TimeStamp>
|
|
242
|
+
</PROCESSING_STATUS>
|
|
243
|
+
</CC_TRANSACTION>
|
|
244
|
+
</FNC_CC_PURCHASE>
|
|
245
|
+
</W_JOB>
|
|
246
|
+
</W_RESPONSE>
|
|
247
|
+
</WIRECARD_BXML>
|
|
248
|
+
XML
|
|
249
|
+
end
|
|
250
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
|
2
|
+
|
|
3
|
+
class TestGatewayGenerator < Test::Unit::TestCase
|
|
4
|
+
include RubiGen::GeneratorTestHelper
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
bare_setup
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def teardown
|
|
11
|
+
bare_teardown
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Some generator-related assertions:
|
|
15
|
+
# assert_generated_file(name, &block) # block passed the file contents
|
|
16
|
+
# assert_directory_exists(name)
|
|
17
|
+
# assert_generated_class(name, &block)
|
|
18
|
+
# assert_generated_module(name, &block)
|
|
19
|
+
# assert_generated_test_for(name, &block)
|
|
20
|
+
# The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
|
|
21
|
+
# assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
|
|
22
|
+
#
|
|
23
|
+
# Other helper methods are:
|
|
24
|
+
# app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
|
|
25
|
+
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
|
26
|
+
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
|
27
|
+
|
|
28
|
+
def test_generator_without_options
|
|
29
|
+
name = 'miracle'
|
|
30
|
+
|
|
31
|
+
run_generator('gateway', [ name ], sources)
|
|
32
|
+
assert_generated_file(GatewayGenerator::LIB_DIR + "#{name}.rb")
|
|
33
|
+
assert_generated_file(GatewayGenerator::UNIT_TEST_DIR + "#{name}_test.rb")
|
|
34
|
+
assert_generated_file(GatewayGenerator::REMOTE_TEST_DIR + "remote_#{name}_test.rb")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
def sources
|
|
39
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
|
40
|
+
]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def generator_path
|
|
44
|
+
"generators"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
|
|
4
|
+
# Must set before requiring generator libs.
|
|
5
|
+
TMP_ROOT = File.dirname(__FILE__) + "/tmp" unless defined?(TMP_ROOT)
|
|
6
|
+
PROJECT_NAME = "myproject" unless defined?(PROJECT_NAME)
|
|
7
|
+
app_root = File.join(TMP_ROOT, PROJECT_NAME)
|
|
8
|
+
if defined?(APP_ROOT)
|
|
9
|
+
APP_ROOT.replace(app_root)
|
|
10
|
+
else
|
|
11
|
+
APP_ROOT = app_root
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
begin
|
|
15
|
+
require 'rubigen'
|
|
16
|
+
rescue LoadError
|
|
17
|
+
require 'rubygems'
|
|
18
|
+
require 'rubigen'
|
|
19
|
+
end
|
|
20
|
+
require 'rubigen/helpers/generator_test_helper'
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
|
2
|
+
|
|
3
|
+
class TestIntegrationGenerator < Test::Unit::TestCase
|
|
4
|
+
include RubiGen::GeneratorTestHelper
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
bare_setup
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def teardown
|
|
11
|
+
bare_teardown
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Some generator-related assertions:
|
|
15
|
+
# assert_generated_file(name, &block) # block passed the file contents
|
|
16
|
+
# assert_directory_exists(name)
|
|
17
|
+
# assert_generated_class(name, &block)
|
|
18
|
+
# assert_generated_module(name, &block)
|
|
19
|
+
# assert_generated_test_for(name, &block)
|
|
20
|
+
# The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
|
|
21
|
+
# assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
|
|
22
|
+
#
|
|
23
|
+
# Other helper methods are:
|
|
24
|
+
# app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
|
|
25
|
+
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
|
26
|
+
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
|
27
|
+
|
|
28
|
+
def test_generator_without_options
|
|
29
|
+
name = 'miracle'
|
|
30
|
+
|
|
31
|
+
run_generator('integration', [ name ], sources)
|
|
32
|
+
|
|
33
|
+
lib_dir = IntegrationGenerator::BASE_DIR + name
|
|
34
|
+
test_dir = IntegrationGenerator::TEST_DIR
|
|
35
|
+
assert_generated_file("#{lib_dir}.rb")
|
|
36
|
+
assert_generated_file(lib_dir + "/helper.rb")
|
|
37
|
+
assert_generated_file(lib_dir + "/notification.rb")
|
|
38
|
+
|
|
39
|
+
assert_generated_file(test_dir + "#{name}_module_test.rb")
|
|
40
|
+
assert_generated_file(test_dir + "helpers/#{name}_helper_test.rb")
|
|
41
|
+
assert_generated_file(test_dir + "notifications/#{name}_notification_test.rb")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
def sources
|
|
46
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
|
47
|
+
]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def generator_path
|
|
51
|
+
"generators"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ActionViewHelperTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant::Billing::Integrations::ActionViewHelper
|
|
5
|
+
include ActionView::Helpers::FormHelper
|
|
6
|
+
include ActionView::Helpers::FormTagHelper
|
|
7
|
+
include ActionView::Helpers::UrlHelper
|
|
8
|
+
include ActionView::Helpers::TagHelper
|
|
9
|
+
include ActionView::Helpers::TextHelper
|
|
10
|
+
|
|
11
|
+
attr_accessor :output_buffer
|
|
12
|
+
|
|
13
|
+
def setup
|
|
14
|
+
@controller = Class.new do
|
|
15
|
+
attr_reader :url_for_options
|
|
16
|
+
def url_for(options, *parameters_for_method_reference)
|
|
17
|
+
@url_for_options = options
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
@controller = @controller.new
|
|
21
|
+
@output_buffer = ''
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_basic_payment_service
|
|
26
|
+
_erbout = ''
|
|
27
|
+
|
|
28
|
+
payment_service_for('order-1','test', :service => :bogus){}
|
|
29
|
+
|
|
30
|
+
expected = [
|
|
31
|
+
'<form action="http://www.bogus.com" method="post">',
|
|
32
|
+
'<input id="order" name="order" type="hidden" value="order-1" />',
|
|
33
|
+
'<input id="account" name="account" type="hidden" value="test" />',
|
|
34
|
+
"</form>"
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
_erbout.each_line do |line|
|
|
38
|
+
assert expected.include?(line.chomp), "Failed to match #{line}"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_payment_service_no_block_given
|
|
43
|
+
assert_raise(ArgumentError){ payment_service_for }
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
protected
|
|
47
|
+
def protect_against_forgery?
|
|
48
|
+
false
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class BogusModuleTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant::Billing::Integrations
|
|
5
|
+
|
|
6
|
+
def test_notification_method
|
|
7
|
+
assert_instance_of Bogus::Notification, Bogus.notification('name=cody')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_service_url
|
|
11
|
+
new = 'http://www.unbogus.com'
|
|
12
|
+
assert_equal 'http://www.bogus.com', Bogus.service_url
|
|
13
|
+
Bogus.service_url = new
|
|
14
|
+
assert_equal new, Bogus.service_url
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_return_method
|
|
18
|
+
assert_instance_of Bogus::Return, Bogus.return('name=cody')
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ChronopayModuleTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant::Billing::Integrations
|
|
5
|
+
|
|
6
|
+
def test_notification_method
|
|
7
|
+
assert_instance_of Chronopay::Notification, Chronopay.notification('name=cody')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_return_method
|
|
11
|
+
assert_instance_of Chronopay::Return, Chronopay.return('name=cody')
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class GestpayModuleTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant::Billing::Integrations
|
|
5
|
+
|
|
6
|
+
def test_notification_method
|
|
7
|
+
Gestpay::Notification.any_instance.expects(:ssl_get).returns('#decryptstring#a=9000000&b=PAY1_UICCODE=242*P1*PAY1_AMOUNT=1234.56*P1*PAY1_TRANSACTIONRESULT=OK*P1*PAY1_BANKTRANSACTIONID=ABCD1234*P1*PAY1_SHOPTRANSACTIONID=1000#/decryptstring#')
|
|
8
|
+
assert_instance_of Gestpay::Notification, Gestpay.notification('a=900000&b=F7DEB36478FD84760F9134F23C922697272D57DE6D4518EB9B4D468B769D9A3A8071B6EB160B35CB412FC1820C7CC12D17B3141855B1ED55468613702A2E213DDE9DE5B0209E13C416448AE833525959F05693172D7F0656')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_return_method
|
|
12
|
+
assert_instance_of Gestpay::Return, Gestpay.return('name=cody')
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class BogusHelperTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant::Billing::Integrations
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
@helper = Bogus::Helper.new('order-500','cfauser', :amount => 500, :currency => 'CAD')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_basic_helper_fields
|
|
11
|
+
assert_field 'order', 'order-500'
|
|
12
|
+
assert_field 'account', 'cfauser'
|
|
13
|
+
assert_field 'amount', '500'
|
|
14
|
+
assert_field 'currency', 'CAD'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_customer_fields
|
|
18
|
+
@helper.customer :first_name => 'Cody', :last_name => 'Fauser'
|
|
19
|
+
assert_field 'first_name', 'Cody'
|
|
20
|
+
assert_field 'last_name', 'Fauser'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_setting_unknown_field
|
|
24
|
+
fields = @helper.fields.dup
|
|
25
|
+
@helper.space_shuttle :name => 'Rockety'
|
|
26
|
+
assert_equal fields, @helper.fields
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ChronopayHelperTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant::Billing::Integrations
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
@helper = Chronopay::Helper.new('order-500','003176-0001-0001', :amount => 500, :currency => 'CAD')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_basic_helper_fields
|
|
11
|
+
assert_field 'cs1', 'order-500'
|
|
12
|
+
assert_field 'product_id', '003176-0001-0001'
|
|
13
|
+
assert_field 'product_price', '500'
|
|
14
|
+
assert_field 'product_price_currency', 'CAD'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_customer_fields
|
|
18
|
+
@helper.customer :first_name => 'Cody', :last_name => 'Fauser'
|
|
19
|
+
assert_field 'f_name', 'Cody'
|
|
20
|
+
assert_field 's_name', 'Fauser'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_address_mapping
|
|
24
|
+
@helper.billing_address :country => 'CAN',
|
|
25
|
+
:address1 => '1 My Street',
|
|
26
|
+
:city => 'Ottawa',
|
|
27
|
+
:state => 'On',
|
|
28
|
+
:zip => '90210'
|
|
29
|
+
|
|
30
|
+
assert_field 'country', 'CAN'
|
|
31
|
+
assert_field 'street', '1 My Street'
|
|
32
|
+
assert_field 'state', 'On'
|
|
33
|
+
assert_field 'zip', '90210'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_country_code_mapping
|
|
37
|
+
@helper.billing_address :country => 'CA'
|
|
38
|
+
assert_field 'country', 'CAN'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_province_code_mapping_non_us
|
|
42
|
+
@helper.billing_address :country => 'DE', :state => 'Berlin'
|
|
43
|
+
assert_field 'country', 'DEU'
|
|
44
|
+
assert_field 'state', 'XX'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_state_code_mapping_us
|
|
48
|
+
@helper.billing_address :country => 'US', :state => 'CA'
|
|
49
|
+
assert_field 'country', 'USA'
|
|
50
|
+
assert_field 'state', 'CA'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_unknown_mapping
|
|
54
|
+
assert_nothing_raised do
|
|
55
|
+
@helper.company_address :address => '500 Dwemthy Fox Road'
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_setting_invalid_address_field
|
|
60
|
+
fields = @helper.fields.dup
|
|
61
|
+
@helper.billing_address :street => 'My Street'
|
|
62
|
+
|
|
63
|
+
# Will still set the state code to 'XX'
|
|
64
|
+
fields['state'] = 'XX'
|
|
65
|
+
assert_equal fields, @helper.fields
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class GestpayHelperTest < Test::Unit::TestCase
|
|
4
|
+
include ActiveMerchant::Billing::Integrations
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
@helper = Gestpay::Helper.new('order-500','1234567', :amount => '5.00', :currency => 'EUR')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_basic_helper_fields
|
|
11
|
+
assert_field 'ShopLogin', '1234567'
|
|
12
|
+
assert_field 'PAY1_AMOUNT', '5.00'
|
|
13
|
+
assert_field 'PAY1_SHOPTRANSACTIONID', 'order-500'
|
|
14
|
+
assert_field 'PAY1_UICCODE', '242'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_italian_currency
|
|
18
|
+
@helper = Gestpay::Helper.new('order-500','1234567', :amount => '5.00', :currency => 'ITL')
|
|
19
|
+
assert_field 'PAY1_UICCODE', '18'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_invalid_currency
|
|
23
|
+
assert_raise(StandardError) do
|
|
24
|
+
Gestpay::Helper.new('order-500','1234567', :amount => '5.00', :currency => 'CAD')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_customer_fields
|
|
29
|
+
@helper.customer :first_name => 'Cody', :last_name => 'Fauser', :email => 'cody@example.com'
|
|
30
|
+
assert_field 'PAY1_CHNAME', 'Cody Fauser'
|
|
31
|
+
assert_field 'PAY1_CHEMAIL', 'cody@example.com'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_get_encryption_string
|
|
35
|
+
@helper.expects(:ssl_get).returns(encrypted_string_response)
|
|
36
|
+
assert_equal encrypted_string, @helper.send(:get_encrypted_string)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_get_encryption_string_fails
|
|
40
|
+
@helper.expects(:ssl_get).returns('#error#1132-Not accepted call: shop is not in active state#/error#\r\n')
|
|
41
|
+
|
|
42
|
+
assert_raise(StandardError) do
|
|
43
|
+
@helper.send(:get_encrypted_string)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_get_encryption_string_returns_empty_response
|
|
48
|
+
@helper.expects(:ssl_get).returns('')
|
|
49
|
+
|
|
50
|
+
assert_raise(StandardError) do
|
|
51
|
+
@helper.send(:get_encrypted_string)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_form_fields
|
|
56
|
+
@helper.expects(:ssl_get).returns(encrypted_string_response)
|
|
57
|
+
assert_equal '1234567', @helper.form_fields['a']
|
|
58
|
+
assert_equal encrypted_string, @helper.form_fields['b']
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Doesn't do any address mapping
|
|
62
|
+
def test_address_mapping
|
|
63
|
+
assert_nothing_raised do
|
|
64
|
+
@helper.billing_address :address1 => '1 My Street',
|
|
65
|
+
:address2 => '',
|
|
66
|
+
:city => 'Leeds',
|
|
67
|
+
:state => 'Yorkshire',
|
|
68
|
+
:zip => 'LS2 7EE',
|
|
69
|
+
:country => 'CA'
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def test_unknown_address_mapping
|
|
74
|
+
total_fields = @helper.fields.size
|
|
75
|
+
@helper.billing_address :farm => 'CA'
|
|
76
|
+
assert_equal total_fields, @helper.fields.size
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_unknown_mapping
|
|
80
|
+
assert_nothing_raised do
|
|
81
|
+
@helper.company_address :address => '500 Dwemthy Fox Road'
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_setting_invalid_address_field
|
|
86
|
+
fields = @helper.fields.dup
|
|
87
|
+
@helper.billing_address :street => 'My Street'
|
|
88
|
+
assert_equal fields, @helper.fields
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
private
|
|
92
|
+
|
|
93
|
+
def encrypted_string_response
|
|
94
|
+
'#cryptstring#F7DEB36478FD84760F9134F23C922697272D57DE6D4518EB9B4D468B769D9A3A8071B6EB160B35CB412FC1820C7CC12D17B3141855B1ED55468613702A2E213DDE9DE5B0209E13C416448AE833525959F05693172D7F0656#/cryptstring#'
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def encrypted_string
|
|
98
|
+
'F7DEB36478FD84760F9134F23C922697272D57DE6D4518EB9B4D468B769D9A3A8071B6EB160B35CB412FC1820C7CC12D17B3141855B1ED55468613702A2E213DDE9DE5B0209E13C416448AE833525959F05693172D7F0656'
|
|
99
|
+
end
|
|
100
|
+
end
|