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.
Files changed (278) hide show
  1. data/CHANGELOG +442 -0
  2. data/CONTRIBUTERS +102 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README +134 -0
  5. data/Rakefile +153 -0
  6. data/active_merchant.gemspec +15 -0
  7. data/gem-public_cert.pem +20 -0
  8. data/init.rb +4 -0
  9. data/lib/active_merchant/billing/avs_result.rb +98 -0
  10. data/lib/active_merchant/billing/base.rb +57 -0
  11. data/lib/active_merchant/billing/check.rb +68 -0
  12. data/lib/active_merchant/billing/credit_card.rb +159 -0
  13. data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
  14. data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
  15. data/lib/active_merchant/billing/cvv_result.rb +38 -0
  16. data/lib/active_merchant/billing/expiry_date.rb +28 -0
  17. data/lib/active_merchant/billing/gateway.rb +158 -0
  18. data/lib/active_merchant/billing/gateways/authorize_net.rb +646 -0
  19. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +702 -0
  20. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
  21. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  22. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  23. data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
  24. data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
  25. data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
  26. data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
  27. data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
  28. data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
  29. data/lib/active_merchant/billing/gateways/eway.rb +272 -0
  30. data/lib/active_merchant/billing/gateways/exact.rb +222 -0
  31. data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
  32. data/lib/active_merchant/billing/gateways/linkpoint.rb +396 -0
  33. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  34. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  35. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  36. data/lib/active_merchant/billing/gateways/moneris.rb +205 -0
  37. data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
  38. data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
  39. data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
  40. data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
  41. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
  42. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
  43. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  44. data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
  45. data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
  46. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
  47. data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
  48. data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
  49. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +325 -0
  50. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
  51. data/lib/active_merchant/billing/gateways/paypal.rb +108 -0
  52. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  53. data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
  54. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  55. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  56. data/lib/active_merchant/billing/gateways/protx.rb +349 -0
  57. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  58. data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
  59. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  60. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  61. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  62. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
  63. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  64. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  65. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  66. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  67. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  68. data/lib/active_merchant/billing/gateways/skip_jack.rb +442 -0
  69. data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
  70. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  71. data/lib/active_merchant/billing/gateways/transax.rb +26 -0
  72. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  73. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  74. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  75. data/lib/active_merchant/billing/gateways/viaklix.rb +165 -0
  76. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  77. data/lib/active_merchant/billing/gateways.rb +3 -0
  78. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  79. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  80. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  81. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  82. data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
  83. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
  84. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
  85. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  86. data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
  87. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  88. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  89. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
  90. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  91. data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
  92. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  93. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  94. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  95. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  96. data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
  97. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  98. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  99. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  100. data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
  101. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  102. data/lib/active_merchant/billing/integrations/paypal/helper.rb +118 -0
  103. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  104. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  105. data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
  106. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  107. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  108. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  109. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  110. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  111. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  112. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  113. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  114. data/lib/active_merchant/billing/integrations.rb +22 -0
  115. data/lib/active_merchant/billing/response.rb +32 -0
  116. data/lib/active_merchant/lib/connection.rb +170 -0
  117. data/lib/active_merchant/lib/country.rb +319 -0
  118. data/lib/active_merchant/lib/error.rb +4 -0
  119. data/lib/active_merchant/lib/post_data.rb +22 -0
  120. data/lib/active_merchant/lib/posts_data.rb +47 -0
  121. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  122. data/lib/active_merchant/lib/utils.rb +18 -0
  123. data/lib/active_merchant/lib/validateable.rb +76 -0
  124. data/lib/active_merchant.rb +60 -0
  125. data/lib/certs/cacert.pem +7815 -0
  126. data/lib/support/gateway_support.rb +58 -0
  127. data/script/destroy +14 -0
  128. data/script/generate +14 -0
  129. data/test/fixtures.yml +330 -0
  130. data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
  131. data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
  132. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  133. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  134. data/test/remote/gateways/remote_braintree_test.rb +154 -0
  135. data/test/remote/gateways/remote_card_stream_test.rb +148 -0
  136. data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
  137. data/test/remote/gateways/remote_data_cash_test.rb +357 -0
  138. data/test/remote/gateways/remote_efsnet_test.rb +81 -0
  139. data/test/remote/gateways/remote_eway_test.rb +74 -0
  140. data/test/remote/gateways/remote_exact_test.rb +60 -0
  141. data/test/remote/gateways/remote_instapay_test.rb +61 -0
  142. data/test/remote/gateways/remote_linkpoint_test.rb +112 -0
  143. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
  144. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  145. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  146. data/test/remote/gateways/remote_moneris_test.rb +82 -0
  147. data/test/remote/gateways/remote_net_registry_test.rb +85 -0
  148. data/test/remote/gateways/remote_netbilling_test.rb +70 -0
  149. data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
  150. data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
  151. data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
  152. data/test/remote/gateways/remote_payflow_test.rb +237 -0
  153. data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
  154. data/test/remote/gateways/remote_payment_express_test.rb +136 -0
  155. data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
  156. data/test/remote/gateways/remote_paypal_test.rb +167 -0
  157. data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
  158. data/test/remote/gateways/remote_protx_test.rb +219 -0
  159. data/test/remote/gateways/remote_psigate_test.rb +50 -0
  160. data/test/remote/gateways/remote_psl_card_test.rb +125 -0
  161. data/test/remote/gateways/remote_quickpay_test.rb +190 -0
  162. data/test/remote/gateways/remote_realex_test.rb +224 -0
  163. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  164. data/test/remote/gateways/remote_sage_test.rb +87 -0
  165. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  166. data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
  167. data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
  168. data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
  169. data/test/remote/gateways/remote_skipjack_test.rb +105 -0
  170. data/test/remote/gateways/remote_trans_first_test.rb +34 -0
  171. data/test/remote/gateways/remote_transax_test.rb +112 -0
  172. data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
  173. data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
  174. data/test/remote/gateways/remote_verifi_test.rb +107 -0
  175. data/test/remote/gateways/remote_viaklix_test.rb +43 -0
  176. data/test/remote/gateways/remote_wirecard_test.rb +111 -0
  177. data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
  178. data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
  179. data/test/test_helper.rb +182 -0
  180. data/test/unit/avs_result_test.rb +59 -0
  181. data/test/unit/base_test.rb +55 -0
  182. data/test/unit/check_test.rb +88 -0
  183. data/test/unit/connection_test.rb +129 -0
  184. data/test/unit/country_code_test.rb +33 -0
  185. data/test/unit/country_test.rb +64 -0
  186. data/test/unit/credit_card_formatting_test.rb +19 -0
  187. data/test/unit/credit_card_methods_test.rb +170 -0
  188. data/test/unit/credit_card_test.rb +318 -0
  189. data/test/unit/cvv_result_test.rb +33 -0
  190. data/test/unit/expiry_date_test.rb +21 -0
  191. data/test/unit/gateways/authorize_net_cim_test.rb +638 -0
  192. data/test/unit/gateways/authorize_net_test.rb +290 -0
  193. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  194. data/test/unit/gateways/beanstream_test.rb +108 -0
  195. data/test/unit/gateways/bogus_test.rb +46 -0
  196. data/test/unit/gateways/braintree_test.rb +126 -0
  197. data/test/unit/gateways/card_stream_test.rb +90 -0
  198. data/test/unit/gateways/cyber_source_test.rb +188 -0
  199. data/test/unit/gateways/data_cash_test.rb +133 -0
  200. data/test/unit/gateways/efsnet_test.rb +123 -0
  201. data/test/unit/gateways/eway_test.rb +118 -0
  202. data/test/unit/gateways/exact_test.rb +156 -0
  203. data/test/unit/gateways/gateway_test.rb +48 -0
  204. data/test/unit/gateways/instapay_test.rb +102 -0
  205. data/test/unit/gateways/linkpoint_test.rb +167 -0
  206. data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
  207. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  208. data/test/unit/gateways/moneris_test.rb +158 -0
  209. data/test/unit/gateways/net_registry_test.rb +416 -0
  210. data/test/unit/gateways/netbilling_test.rb +54 -0
  211. data/test/unit/gateways/pay_junction_test.rb +123 -0
  212. data/test/unit/gateways/pay_secure_test.rb +71 -0
  213. data/test/unit/gateways/payflow_express_test.rb +173 -0
  214. data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
  215. data/test/unit/gateways/payflow_test.rb +305 -0
  216. data/test/unit/gateways/payflow_uk_test.rb +30 -0
  217. data/test/unit/gateways/payment_express_test.rb +195 -0
  218. data/test/unit/gateways/paypal_express_test.rb +382 -0
  219. data/test/unit/gateways/paypal_test.rb +520 -0
  220. data/test/unit/gateways/plugnpay_test.rb +86 -0
  221. data/test/unit/gateways/protx_test.rb +139 -0
  222. data/test/unit/gateways/psigate_test.rb +169 -0
  223. data/test/unit/gateways/psl_card_test.rb +64 -0
  224. data/test/unit/gateways/quickpay_test.rb +112 -0
  225. data/test/unit/gateways/realex_test.rb +151 -0
  226. data/test/unit/gateways/sage_bankcard_test.rb +162 -0
  227. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  228. data/test/unit/gateways/secure_pay_au_test.rb +207 -0
  229. data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
  230. data/test/unit/gateways/secure_pay_test.rb +87 -0
  231. data/test/unit/gateways/skip_jack_test.rb +133 -0
  232. data/test/unit/gateways/trans_first_test.rb +112 -0
  233. data/test/unit/gateways/trust_commerce_test.rb +90 -0
  234. data/test/unit/gateways/usa_epay_test.rb +128 -0
  235. data/test/unit/gateways/verifi_test.rb +96 -0
  236. data/test/unit/gateways/viaklix_test.rb +78 -0
  237. data/test/unit/gateways/wirecard_test.rb +250 -0
  238. data/test/unit/generators/test_gateway_generator.rb +46 -0
  239. data/test/unit/generators/test_generator_helper.rb +20 -0
  240. data/test/unit/generators/test_integration_generator.rb +53 -0
  241. data/test/unit/integrations/action_view_helper_test.rb +50 -0
  242. data/test/unit/integrations/bogus_module_test.rb +20 -0
  243. data/test/unit/integrations/chronopay_module_test.rb +13 -0
  244. data/test/unit/integrations/gestpay_module_test.rb +14 -0
  245. data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
  246. data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
  247. data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
  248. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
  249. data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
  250. data/test/unit/integrations/helpers/paypal_helper_test.rb +162 -0
  251. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  252. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
  253. data/test/unit/integrations/hi_trust_module_test.rb +13 -0
  254. data/test/unit/integrations/nochex_module_test.rb +13 -0
  255. data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
  256. data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
  257. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
  258. data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
  259. data/test/unit/integrations/notifications/notification_test.rb +54 -0
  260. data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
  261. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  262. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
  263. data/test/unit/integrations/paypal_module_test.rb +28 -0
  264. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  265. data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
  266. data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
  267. data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
  268. data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
  269. data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
  270. data/test/unit/integrations/returns/return_test.rb +11 -0
  271. data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
  272. data/test/unit/integrations/two_checkout_module_test.rb +13 -0
  273. data/test/unit/post_data_test.rb +55 -0
  274. data/test/unit/posts_data_test.rb +48 -0
  275. data/test/unit/response_test.rb +28 -0
  276. data/test/unit/utils_test.rb +7 -0
  277. data/test/unit/validateable_test.rb +60 -0
  278. metadata +364 -0
@@ -0,0 +1,112 @@
1
+ #
2
+ # In order for this test to pass, a valid store number and PEM file
3
+ # are required. Unfortunately, with LinkPoint YOU CAN'T JUST USE ANY
4
+ # OLD STORE NUMBER. Also, you can't just generate your own PEM file.
5
+ # You'll need to use a special PEM file provided by LinkPoint.
6
+ #
7
+ # Go to http://www.linkpoint.com/support/sup_teststore.asp to set up
8
+ # a test account. Once you receive your test account you can get your
9
+ # pem file by clicking the Support link on the navigation menu and then
10
+ # clicking the Download Center link.
11
+ #
12
+ # You will also want to change your test account's fraud settings
13
+ # while running these tests. Click the admin link at the top of
14
+ # LinkPoint Central. Then click "set lockout times" under Fraud Settings
15
+ # You will want to set Duplicate lockout time to 0 so that you can run
16
+ # the tests more than once without triggering this fraud detection.
17
+ #
18
+ # The LinkPoint staging server will also return different responses based
19
+ # on the cent amount of the purhcase. Complete details can be found at
20
+ require 'test_helper'
21
+
22
+ # http://sgserror.com/staging.php
23
+ class LinkpointTest < Test::Unit::TestCase
24
+ def setup
25
+ Base.mode = :test
26
+
27
+ @gateway = LinkpointGateway.new(fixtures(:linkpoint))
28
+
29
+ # Test credit card numbers
30
+ # American Express: 371111111111111
31
+ # Discover: 6011-1111-1111-1111
32
+ # JCB: 311111111111111
33
+ # MasterCard: 5111-1111-1111-1111
34
+ # MasterCard: 5419-8400-0000-0003
35
+ # Visa: 4111-1111-1111-1111
36
+
37
+ @amount = 100
38
+ @credit_card = credit_card('4111111111111111')
39
+ @options = { :order_id => generate_unique_id, :billing_address => address }
40
+ end
41
+
42
+ def test_successful_authorization
43
+ assert response = @gateway.authorize(1000, @credit_card, @options)
44
+
45
+ assert_instance_of Response, response
46
+ assert_success response
47
+ assert_equal "APPROVED", response.params["approved"]
48
+ end
49
+
50
+ def test_successful_authorization_and_capture
51
+ assert authorization = @gateway.authorize(@amount, @credit_card, @options)
52
+ assert_success authorization
53
+ assert authorization.test?
54
+
55
+ assert capture = @gateway.capture(@amount, authorization.authorization)
56
+ assert_success capture
57
+ assert_equal 'ACCEPTED', capture.message
58
+ end
59
+
60
+ def test_successful_purchase_without_cvv2_code
61
+ @credit_card.verification_value = nil
62
+
63
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
64
+ assert_success response
65
+ assert_equal "APPROVED", response.params["approved"]
66
+ assert_equal 'NNN', response.params["avs"]
67
+ end
68
+
69
+ def test_successful_purchase_with_cvv2_code
70
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
71
+ assert_success response
72
+ assert_equal "APPROVED", response.params["approved"]
73
+ assert_equal 'NNNM', response.params["avs"]
74
+ end
75
+
76
+ def test_successful_purchase_and_void
77
+ purchase = @gateway.purchase(@amount, @credit_card, @options)
78
+ assert_success purchase
79
+
80
+ assert void = @gateway.void(purchase.authorization)
81
+ assert_success void
82
+ end
83
+
84
+ def test_successfull_purchase_and_credit
85
+ assert purchase = @gateway.purchase(2400, @credit_card, @options)
86
+ assert_success purchase
87
+
88
+ assert credit = @gateway.credit(2400, purchase.authorization)
89
+ assert_success credit
90
+ end
91
+
92
+
93
+ def test_successful_recurring_payment
94
+ assert response = @gateway.recurring(2400, @credit_card,
95
+ :order_id => generate_unique_id,
96
+ :installments => 12,
97
+ :startdate => "immediate",
98
+ :periodicity => :monthly,
99
+ :billing_address => address
100
+ )
101
+
102
+ assert_success response
103
+ assert_equal "APPROVED", response.params["approved"]
104
+ end
105
+
106
+ def test_declined_purchase_with_invalid_credit_card
107
+ @credit_card.number = '1111111111111111'
108
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
109
+ assert_failure response
110
+ assert_equal "DECLINED", response.params["approved"]
111
+ end
112
+ end
@@ -0,0 +1,173 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteMerchantESolutionTest < Test::Unit::TestCase
4
+
5
+
6
+ def setup
7
+ Base.gateway_mode = :test
8
+
9
+ @gateway = MerchantESolutionsGateway.new(fixtures(:merchant_esolutions))
10
+
11
+ @amount = 100
12
+ @credit_card = credit_card('4111111111111111')
13
+ @declined_card = credit_card('4111111111111112')
14
+
15
+ @options = {
16
+ :billing_address => {
17
+ :name => 'John Doe',
18
+ :address1 => '123 State Street',
19
+ :address2 => 'Apartment 1',
20
+ :city => 'Nowhere',
21
+ :state => 'MT',
22
+ :country => 'US',
23
+ :zip => '55555',
24
+ :phone => '555-555-5555'
25
+ }
26
+ }
27
+ end
28
+
29
+ def test_successful_purchase
30
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
31
+ assert_success response
32
+ assert_equal 'This transaction has been approved', response.message
33
+ end
34
+
35
+ def test_unsuccessful_purchase
36
+ assert response = @gateway.purchase(@amount, @declined_card, @options)
37
+ assert_failure response
38
+ assert_equal 'Card No. Error', response.message
39
+ end
40
+
41
+ def test_authorize_and_capture
42
+ amount = @amount
43
+ assert auth = @gateway.authorize(amount, @credit_card, @options)
44
+ assert_success auth
45
+ assert_equal 'This transaction has been approved', auth.message
46
+ assert auth.authorization
47
+ sleep 15 # I have found that it is best to wait a few seconds to capture an authorized transaction
48
+ assert capture = @gateway.capture(amount, auth.authorization)
49
+ assert_success capture
50
+ assert_equal 'This transaction has been approved', capture.message
51
+ end
52
+
53
+ def test_failed_capture
54
+ assert response = @gateway.capture(@amount, '')
55
+ assert_failure response
56
+ assert_equal 'Invalid Transaction ID', response.message
57
+ end
58
+
59
+ def test_store_purchase_unstore
60
+ assert store = @gateway.store(@credit_card)
61
+ assert_success store
62
+ assert_equal 'This transaction has been approved', store.message
63
+ assert purchase = @gateway.purchase(@amount, store.authorization, @options)
64
+ assert_success purchase
65
+ assert_equal 'This transaction has been approved', purchase.message
66
+ assert unstore = @gateway.unstore(store.authorization)
67
+ assert_success unstore
68
+ assert_equal 'This transaction has been approved', unstore.message
69
+ assert purchase_after_unstore = @gateway.purchase(@amount, store.authorization, @options)
70
+ assert_failure purchase_after_unstore
71
+ assert_equal 'Invalid Card ID', purchase_after_unstore.message
72
+ end
73
+
74
+ def test_authorize_and_void
75
+ assert auth = @gateway.authorize(@amount, @credit_card, @options)
76
+ assert_success auth
77
+ assert_equal 'This transaction has been approved', auth.message
78
+ assert auth.authorization
79
+ assert void = @gateway.void(auth.authorization)
80
+ assert_success void
81
+ assert_equal 'This transaction has been approved', void.message
82
+ end
83
+
84
+ def test_unsuccessful_unstore
85
+ assert unstore = @gateway.unstore('')
86
+ assert_failure unstore
87
+ assert_equal 'Invalid Card ID', unstore.message
88
+ end
89
+
90
+ def test_unsuccessful_void
91
+ assert void = @gateway.void('')
92
+ assert_failure void
93
+ assert_equal 'Invalid Transaction ID', void.message
94
+ end
95
+
96
+ def test_successful_avs_check
97
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
98
+ assert_equal 'Y', response.avs_result['code']
99
+ assert_equal 'Street address and 5-digit postal code match.', response.avs_result['message']
100
+ assert_equal 'Y', response.avs_result['street_match']
101
+ assert_equal 'Y', response.avs_result['postal_match']
102
+ end
103
+
104
+ def test_unsuccessful_avs_check_with_bad_street_address
105
+ options = {
106
+ :billing_address => {
107
+ :name => 'John Doe',
108
+ :address1 => '124 State Street',
109
+ :address2 => 'Apartment 1',
110
+ :city => 'Nowhere',
111
+ :state => 'MT',
112
+ :country => 'US',
113
+ :zip => '55555',
114
+ :phone => '555-555-5555'
115
+ }
116
+ }
117
+ assert response = @gateway.purchase(@amount, @credit_card, options)
118
+ assert_equal 'Z', response.avs_result['code']
119
+ assert_equal 'Street address does not match, but 5-digit postal code matches.', response.avs_result['message']
120
+ assert_equal 'N', response.avs_result['street_match']
121
+ assert_equal 'Y', response.avs_result['postal_match']
122
+ end
123
+
124
+ def test_unsuccessful_avs_check_with_bad_zip
125
+ options = {
126
+ :billing_address => {
127
+ :name => 'John Doe',
128
+ :address1 => '123 State Street',
129
+ :address2 => 'Apartment 1',
130
+ :city => 'Nowhere',
131
+ :state => 'MT',
132
+ :country => 'US',
133
+ :zip => '55554',
134
+ :phone => '555-555-5555'
135
+ }
136
+ }
137
+ assert response = @gateway.purchase(@amount, @credit_card, options)
138
+ assert_equal 'A', response.avs_result['code']
139
+ assert_equal 'Street address matches, but 5-digit and 9-digit postal code do not match.', response.avs_result['message']
140
+ assert_equal 'Y', response.avs_result['street_match']
141
+ assert_equal 'N', response.avs_result['postal_match']
142
+ end
143
+
144
+ def test_successful_cvv_check
145
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
146
+ assert_equal 'M', response.cvv_result['code']
147
+ assert_equal 'Match', response.cvv_result['message']
148
+ end
149
+
150
+ def test_unsuccessful_cvv_check
151
+ credit_card = ActiveMerchant::Billing::CreditCard.new({
152
+ :first_name => 'John',
153
+ :last_name => 'Doe',
154
+ :number => '4111111111111111',
155
+ :month => '11',
156
+ :year => (Time.now.year + 1).to_s,
157
+ :verification_value => '555'
158
+ })
159
+ assert response = @gateway.purchase(@amount, credit_card, @options)
160
+ assert_equal 'N', response.cvv_result['code']
161
+ assert_equal 'No Match', response.cvv_result['message']
162
+ end
163
+
164
+ def test_invalid_login
165
+ gateway = MerchantESolutionsGateway.new(
166
+ :login => '',
167
+ :password => ''
168
+ )
169
+ assert response = gateway.purchase(@amount, @credit_card, @options)
170
+ assert_failure response
171
+ assert_equal 'Invalid ID or Key', response.message
172
+ end
173
+ end
@@ -0,0 +1,58 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteModernPaymentsCimTest < Test::Unit::TestCase
4
+
5
+
6
+ def setup
7
+ @gateway = ModernPaymentsCimGateway.new(fixtures(:modern_payments))
8
+
9
+ @amount = 100
10
+ @credit_card = credit_card('4111111111111111')
11
+ @declined_card = credit_card('4000000000000000')
12
+
13
+ @options = {
14
+ :billing_address => address,
15
+ :customer => 'JIMSMITH2000'
16
+ }
17
+ end
18
+
19
+ def test_successful_create_customer
20
+ response = @gateway.create_customer(@options)
21
+ assert_success response
22
+ assert !response.params["create_customer_result"].blank?
23
+ end
24
+
25
+ def test_successful_modify_customer_credit_card
26
+ customer = @gateway.create_customer(@options)
27
+ assert_success customer
28
+
29
+ customer_id = customer.params["create_customer_result"]
30
+
31
+ credit_card = @gateway.modify_customer_credit_card(customer_id, @credit_card)
32
+ assert_success credit_card
33
+ assert !credit_card.params["modify_customer_credit_card_result"].blank?
34
+ end
35
+
36
+ def test_succsessful_authorize_credit_card_payment
37
+ customer = @gateway.create_customer(@options)
38
+ assert_success customer
39
+
40
+ customer_id = customer.params["create_customer_result"]
41
+
42
+ credit_card = @gateway.modify_customer_credit_card(customer_id, @credit_card)
43
+ assert_success credit_card
44
+
45
+ payment = @gateway.authorize_credit_card_payment(customer_id, @amount)
46
+ assert_success payment
47
+ end
48
+
49
+ def test_invalid_login
50
+ gateway = ModernPaymentsCimGateway.new(
51
+ :login => '',
52
+ :password => ''
53
+ )
54
+ assert response = gateway.create_customer(@options)
55
+ assert_failure response
56
+ assert_equal ModernPaymentsCimGateway::ERROR_MESSAGE, response.message
57
+ end
58
+ end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteModernPaymentTest < Test::Unit::TestCase
4
+
5
+
6
+ def setup
7
+ @gateway = ModernPaymentsGateway.new(fixtures(:modern_payments))
8
+
9
+ @amount = 100
10
+ @credit_card = credit_card('4111111111111111')
11
+ @declined_card = credit_card('4000000000000000')
12
+
13
+ @options = {
14
+ :order_id => '1',
15
+ :billing_address => address,
16
+ :description => 'Store Purchase'
17
+ }
18
+ end
19
+
20
+ def test_successful_purchase
21
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
22
+ assert_success response
23
+ assert_match /RESPONSECODE=A/, response.params["auth_string"]
24
+ assert_equal ModernPaymentsCimGateway::SUCCESS_MESSAGE, response.message
25
+ end
26
+
27
+ def test_unsuccessful_purchase
28
+ assert response = @gateway.purchase(@amount, @declined_card, @options)
29
+ assert_success response
30
+ assert_match /RESPONSECODE=D/, response.params["auth_string"]
31
+ assert_equal ModernPaymentsCimGateway::SUCCESS_MESSAGE, response.message
32
+ end
33
+
34
+ def test_invalid_login
35
+ gateway = ModernPaymentsGateway.new(
36
+ :login => '',
37
+ :password => ''
38
+ )
39
+ assert response = gateway.purchase(@amount, @credit_card, @options)
40
+ assert_failure response
41
+ assert_equal ModernPaymentsCimGateway::ERROR_MESSAGE, response.message
42
+ end
43
+ end
@@ -0,0 +1,82 @@
1
+ require 'test_helper'
2
+
3
+ class MonerisRemoteTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.mode = :test
6
+
7
+ @gateway = MonerisGateway.new(fixtures(:moneris))
8
+ @amount = 100
9
+ @credit_card = credit_card('4242424242424242')
10
+ @options = {
11
+ :order_id => generate_unique_id,
12
+ :billing_address => address,
13
+ :description => 'Store Purchase'
14
+ }
15
+ end
16
+
17
+ def test_successful_purchase
18
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
19
+ assert_success response
20
+ assert_equal 'Approved', response.message
21
+ assert_false response.authorization.blank?
22
+ end
23
+
24
+ def test_successful_authorization
25
+ response = @gateway.authorize(@amount, @credit_card, @options)
26
+ assert_success response
27
+ assert_false response.authorization.blank?
28
+ end
29
+
30
+ def test_failed_authorization
31
+ response = @gateway.authorize(105, @credit_card, @options)
32
+ assert_failure response
33
+ end
34
+
35
+ def test_successful_authorization_and_capture
36
+ response = @gateway.authorize(@amount, @credit_card, @options)
37
+ assert_success response
38
+ assert response.authorization
39
+
40
+ response = @gateway.capture(@amount, response.authorization)
41
+ assert_success response
42
+ end
43
+
44
+ def test_successful_authorization_and_void
45
+ response = @gateway.authorize(@amount, @credit_card, @options)
46
+ assert_success response
47
+ assert response.authorization
48
+
49
+ void = @gateway.void(response.authorization)
50
+ assert_success void
51
+ end
52
+
53
+ def test_successful_purchase_and_void
54
+ purchase = @gateway.purchase(@amount, @credit_card, @options)
55
+ assert_success purchase
56
+
57
+ void = @gateway.void(purchase.authorization)
58
+ assert_success void
59
+ end
60
+
61
+ def test_failed_purchase_and_void
62
+ purchase = @gateway.purchase(101, @credit_card, @options)
63
+ assert_failure purchase
64
+
65
+ void = @gateway.void(purchase.authorization)
66
+ assert_failure void
67
+ end
68
+
69
+ def test_successful_purchase_and_credit
70
+ purchase = @gateway.purchase(@amount, @credit_card, @options)
71
+ assert_success purchase
72
+
73
+ credit = @gateway.credit(@amount, purchase.authorization)
74
+ assert_success credit
75
+ end
76
+
77
+ def test_failed_purchase_from_error
78
+ assert response = @gateway.purchase(150, @credit_card, @options)
79
+ assert_failure response
80
+ assert_equal 'Declined', response.message
81
+ end
82
+ end
@@ -0,0 +1,85 @@
1
+ require 'test/unit'
2
+ require 'test_helper'
3
+
4
+ # To run these tests, set the variables at the top of the class
5
+ # definition.
6
+ #
7
+ # Note that NetRegistry does not provide any sort of test
8
+ # server/account, so you'll probably want to refund any uncredited
9
+ # purchases through the NetRegistry console at www.netregistry.com .
10
+ # All purchases made in these tests are $1, so hopefully you won't be
11
+ # sent broke if you forget...
12
+ class NetRegistryTest < Test::Unit::TestCase
13
+
14
+ def setup
15
+ @gateway = NetRegistryGateway.new(fixtures(:net_registry))
16
+
17
+ @amount = 100
18
+ @valid_creditcard = credit_card
19
+ @invalid_creditcard = credit_card('41111111111111111')
20
+ @expired_creditcard = credit_card('4111111111111111', :year => '2000')
21
+ @invalid_month_creditcard = credit_card('4111111111111111', :month => '13')
22
+ end
23
+
24
+ def test_successful_purchase_and_credit
25
+ response = @gateway.purchase(@amount, @valid_creditcard)
26
+ assert_equal 'approved', response.params['status']
27
+ assert_success response
28
+ assert_match(/\A\d{16}\z/, response.authorization)
29
+
30
+ response = @gateway.credit(@amount, response.authorization)
31
+ assert_equal 'approved', response.params['status']
32
+ assert_success response
33
+ end
34
+
35
+ # #authorize and #capture haven't been tested because the author's
36
+ # account hasn't been setup to support these methods (see the
37
+ # documentation for the NetRegistry gateway class). There is no
38
+ # mention of a #void transaction in NetRegistry's documentation,
39
+ # either.
40
+ if ENV['TEST_AUTHORIZE_AND_CAPTURE']
41
+ def test_successful_authorization_and_capture
42
+ response = @gateway.authorize(@amount, @valid_creditcard)
43
+ assert_success response
44
+ assert_equal 'approved', response.params['status']
45
+ assert_match(/\A\d{6}\z/, response.authorization)
46
+
47
+ response = @gateway.capture(@amount,
48
+ response.authorization,
49
+ :credit_card => @valid_creditcard)
50
+ assert_success response
51
+ assert_equal 'approved', response.params['status']
52
+ end
53
+ end
54
+
55
+ def test_purchase_with_invalid_credit_card
56
+ response = @gateway.purchase(@amount, @invalid_creditcard)
57
+ assert_equal 'declined', response.params['status']
58
+ assert_equal 'INVALID CARD', response.message
59
+ assert_failure response
60
+ end
61
+
62
+ def test_purchase_with_expired_credit_card
63
+ response = @gateway.purchase(@amount, @expired_creditcard)
64
+ assert_equal 'failed', response.params['status']
65
+ assert_equal 'CARD EXPIRED', response.message
66
+ assert_failure response
67
+ end
68
+
69
+ def test_purchase_with_invalid_month
70
+ response = @gateway.purchase(@amount, @invalid_month_creditcard)
71
+ assert_equal 'failed', response.params['status']
72
+ assert_equal 'Invalid month', response.message
73
+ assert_failure response
74
+ end
75
+
76
+ def test_bad_login
77
+ gateway = NetRegistryGateway.new(
78
+ :login => 'bad-login',
79
+ :password => 'bad-login'
80
+ )
81
+ response = gateway.purchase(@amount, @valid_creditcard)
82
+ assert_equal 'failed', response.params['status']
83
+ assert_failure response
84
+ end
85
+ end
@@ -0,0 +1,70 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteNetbillingTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = NetbillingGateway.new(fixtures(:netbilling))
7
+
8
+ @credit_card = credit_card('4444111111111119',
9
+ :month => '9',
10
+ :year => '2009',
11
+ :verification_value => nil
12
+ )
13
+
14
+ @address = { :address1 => '1600 Amphitheatre Parkway',
15
+ :city => 'Mountain View',
16
+ :state => 'CA',
17
+ :country => 'US',
18
+ :zip => '94043',
19
+ :phone => '650-253-0001'
20
+ }
21
+
22
+ @options = {
23
+ :billing_address => @address,
24
+ :description => 'Internet purchase'
25
+ }
26
+
27
+ @amount = 100
28
+ end
29
+
30
+ def test_successful_purchase
31
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
32
+ assert_success response
33
+ assert_false response.authorization.blank?
34
+ assert_equal NetbillingGateway::SUCCESS_MESSAGE, response.message
35
+ assert response.test?
36
+ end
37
+
38
+ def test_unsuccessful_purchase
39
+ @credit_card.year = '2006'
40
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
41
+ assert_equal 'CARD EXPIRED', response.message
42
+ assert_failure response
43
+ end
44
+
45
+ def test_authorize_and_capture
46
+ amount = @amount
47
+ assert auth = @gateway.authorize(amount, @credit_card, @options)
48
+ assert_success auth
49
+ assert_equal NetbillingGateway::SUCCESS_MESSAGE, auth.message
50
+ assert auth.authorization
51
+ assert capture = @gateway.capture(amount, auth.authorization)
52
+ assert_success capture
53
+ end
54
+
55
+ def test_failed_capture
56
+ assert response = @gateway.capture(@amount, '1111')
57
+ assert_failure response
58
+ assert_equal NetbillingGateway::FAILURE_MESSAGE, response.message
59
+ end
60
+
61
+ def test_invalid_login
62
+ gateway = NetbillingGateway.new(
63
+ :login => '',
64
+ :password => ''
65
+ )
66
+ assert response = gateway.purchase(@amount, @credit_card, @options)
67
+ assert_equal NetbillingGateway::FAILURE_MESSAGE, response.message
68
+ assert_failure response
69
+ end
70
+ end