mattbauer-activemerchant 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. data/CHANGELOG +459 -0
  2. data/CONTRIBUTERS +118 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README +134 -0
  5. data/Rakefile +153 -0
  6. data/gem-public_cert.pem +20 -0
  7. data/init.rb +3 -0
  8. data/lib/active_merchant.rb +60 -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 +34 -0
  17. data/lib/active_merchant/billing/gateway.rb +158 -0
  18. data/lib/active_merchant/billing/gateways.rb +3 -0
  19. data/lib/active_merchant/billing/gateways/authorize_net.rb +657 -0
  20. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +703 -0
  21. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  22. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
  23. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  24. data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
  25. data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
  26. data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
  27. data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
  28. data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
  29. data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
  30. data/lib/active_merchant/billing/gateways/elavon.rb +106 -0
  31. data/lib/active_merchant/billing/gateways/eway.rb +277 -0
  32. data/lib/active_merchant/billing/gateways/exact.rb +222 -0
  33. data/lib/active_merchant/billing/gateways/first_pay.rb +172 -0
  34. data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
  35. data/lib/active_merchant/billing/gateways/linkpoint.rb +396 -0
  36. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  37. data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
  38. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  39. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  40. data/lib/active_merchant/billing/gateways/moneris.rb +295 -0
  41. data/lib/active_merchant/billing/gateways/moneris_usa.rb +258 -0
  42. data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
  43. data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
  44. data/lib/active_merchant/billing/gateways/ogone.rb +259 -0
  45. data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
  46. data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
  47. data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
  48. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
  49. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
  50. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  51. data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
  52. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
  53. data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
  54. data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
  55. data/lib/active_merchant/billing/gateways/paypal.rb +121 -0
  56. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +325 -0
  57. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
  58. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  59. data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
  60. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  61. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  62. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  63. data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
  64. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  65. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  66. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  67. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  68. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
  69. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  70. data/lib/active_merchant/billing/gateways/sage_pay.rb +308 -0
  71. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  72. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  73. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  74. data/lib/active_merchant/billing/gateways/skip_jack.rb +442 -0
  75. data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
  76. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  77. data/lib/active_merchant/billing/gateways/transax.rb +26 -0
  78. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  79. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  80. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  81. data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
  82. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  83. data/lib/active_merchant/billing/integrations.rb +22 -0
  84. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  85. data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
  86. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  87. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  88. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  89. data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
  90. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
  91. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
  92. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  93. data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
  94. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  95. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  96. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
  97. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  98. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  99. data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
  100. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  101. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  102. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  103. data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
  104. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  105. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  106. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  107. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  108. data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
  109. data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -0
  110. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  111. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  112. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  113. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  114. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  115. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  116. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  117. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  118. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  119. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  120. data/lib/active_merchant/billing/response.rb +32 -0
  121. data/lib/active_merchant/lib/connection.rb +170 -0
  122. data/lib/active_merchant/lib/country.rb +319 -0
  123. data/lib/active_merchant/lib/error.rb +4 -0
  124. data/lib/active_merchant/lib/post_data.rb +22 -0
  125. data/lib/active_merchant/lib/posts_data.rb +47 -0
  126. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  127. data/lib/active_merchant/lib/utils.rb +18 -0
  128. data/lib/active_merchant/lib/validateable.rb +76 -0
  129. data/lib/certs/cacert.pem +7815 -0
  130. data/lib/support/gateway_support.rb +58 -0
  131. data/script/destroy +14 -0
  132. data/script/generate +14 -0
  133. data/test/fixtures.yml +353 -0
  134. data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
  135. data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
  136. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  137. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  138. data/test/remote/gateways/remote_braintree_test.rb +154 -0
  139. data/test/remote/gateways/remote_card_stream_test.rb +148 -0
  140. data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
  141. data/test/remote/gateways/remote_data_cash_test.rb +357 -0
  142. data/test/remote/gateways/remote_efsnet_test.rb +81 -0
  143. data/test/remote/gateways/remote_elavon_test.rb +66 -0
  144. data/test/remote/gateways/remote_eway_test.rb +74 -0
  145. data/test/remote/gateways/remote_exact_test.rb +60 -0
  146. data/test/remote/gateways/remote_first_pay_test.rb +87 -0
  147. data/test/remote/gateways/remote_instapay_test.rb +61 -0
  148. data/test/remote/gateways/remote_linkpoint_test.rb +112 -0
  149. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
  150. data/test/remote/gateways/remote_merchant_ware_test.rb +113 -0
  151. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  152. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  153. data/test/remote/gateways/remote_moneris_test.rb +118 -0
  154. data/test/remote/gateways/remote_moneris_usa_test.rb +115 -0
  155. data/test/remote/gateways/remote_net_registry_test.rb +85 -0
  156. data/test/remote/gateways/remote_netbilling_test.rb +70 -0
  157. data/test/remote/gateways/remote_ogone_test.rb +108 -0
  158. data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
  159. data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
  160. data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
  161. data/test/remote/gateways/remote_payflow_test.rb +237 -0
  162. data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
  163. data/test/remote/gateways/remote_payment_express_test.rb +136 -0
  164. data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
  165. data/test/remote/gateways/remote_paypal_test.rb +178 -0
  166. data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
  167. data/test/remote/gateways/remote_psigate_test.rb +50 -0
  168. data/test/remote/gateways/remote_psl_card_test.rb +125 -0
  169. data/test/remote/gateways/remote_quickpay_test.rb +190 -0
  170. data/test/remote/gateways/remote_realex_test.rb +224 -0
  171. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  172. data/test/remote/gateways/remote_sage_pay_test.rb +219 -0
  173. data/test/remote/gateways/remote_sage_test.rb +87 -0
  174. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  175. data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
  176. data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
  177. data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
  178. data/test/remote/gateways/remote_skipjack_test.rb +105 -0
  179. data/test/remote/gateways/remote_trans_first_test.rb +34 -0
  180. data/test/remote/gateways/remote_transax_test.rb +112 -0
  181. data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
  182. data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
  183. data/test/remote/gateways/remote_verifi_test.rb +107 -0
  184. data/test/remote/gateways/remote_viaklix_test.rb +43 -0
  185. data/test/remote/gateways/remote_wirecard_test.rb +111 -0
  186. data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
  187. data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
  188. data/test/test_helper.rb +182 -0
  189. data/test/unit/avs_result_test.rb +59 -0
  190. data/test/unit/base_test.rb +55 -0
  191. data/test/unit/check_test.rb +88 -0
  192. data/test/unit/connection_test.rb +129 -0
  193. data/test/unit/country_code_test.rb +33 -0
  194. data/test/unit/country_test.rb +64 -0
  195. data/test/unit/credit_card_formatting_test.rb +19 -0
  196. data/test/unit/credit_card_methods_test.rb +179 -0
  197. data/test/unit/credit_card_test.rb +318 -0
  198. data/test/unit/cvv_result_test.rb +33 -0
  199. data/test/unit/expiry_date_test.rb +32 -0
  200. data/test/unit/gateways/authorize_net_cim_test.rb +638 -0
  201. data/test/unit/gateways/authorize_net_test.rb +290 -0
  202. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  203. data/test/unit/gateways/beanstream_test.rb +108 -0
  204. data/test/unit/gateways/bogus_test.rb +46 -0
  205. data/test/unit/gateways/braintree_test.rb +126 -0
  206. data/test/unit/gateways/card_stream_test.rb +90 -0
  207. data/test/unit/gateways/cyber_source_test.rb +188 -0
  208. data/test/unit/gateways/data_cash_test.rb +133 -0
  209. data/test/unit/gateways/efsnet_test.rb +123 -0
  210. data/test/unit/gateways/elavon_test.rb +139 -0
  211. data/test/unit/gateways/eway_test.rb +118 -0
  212. data/test/unit/gateways/exact_test.rb +156 -0
  213. data/test/unit/gateways/first_pay_test.rb +125 -0
  214. data/test/unit/gateways/gateway_test.rb +48 -0
  215. data/test/unit/gateways/instapay_test.rb +102 -0
  216. data/test/unit/gateways/linkpoint_test.rb +167 -0
  217. data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
  218. data/test/unit/gateways/merchant_ware_test.rb +188 -0
  219. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  220. data/test/unit/gateways/moneris_test.rb +185 -0
  221. data/test/unit/gateways/moneris_usa_test.rb +183 -0
  222. data/test/unit/gateways/net_registry_test.rb +416 -0
  223. data/test/unit/gateways/netbilling_test.rb +54 -0
  224. data/test/unit/gateways/ogone_test.rb +256 -0
  225. data/test/unit/gateways/pay_junction_test.rb +123 -0
  226. data/test/unit/gateways/pay_secure_test.rb +71 -0
  227. data/test/unit/gateways/payflow_express_test.rb +173 -0
  228. data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
  229. data/test/unit/gateways/payflow_test.rb +305 -0
  230. data/test/unit/gateways/payflow_uk_test.rb +30 -0
  231. data/test/unit/gateways/payment_express_test.rb +195 -0
  232. data/test/unit/gateways/paypal_express_test.rb +382 -0
  233. data/test/unit/gateways/paypal_test.rb +569 -0
  234. data/test/unit/gateways/plugnpay_test.rb +86 -0
  235. data/test/unit/gateways/psigate_test.rb +169 -0
  236. data/test/unit/gateways/psl_card_test.rb +64 -0
  237. data/test/unit/gateways/quickpay_test.rb +112 -0
  238. data/test/unit/gateways/realex_test.rb +151 -0
  239. data/test/unit/gateways/sage_bankcard_test.rb +162 -0
  240. data/test/unit/gateways/sage_pay_test.rb +139 -0
  241. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  242. data/test/unit/gateways/secure_pay_au_test.rb +207 -0
  243. data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
  244. data/test/unit/gateways/secure_pay_test.rb +87 -0
  245. data/test/unit/gateways/skip_jack_test.rb +133 -0
  246. data/test/unit/gateways/trans_first_test.rb +112 -0
  247. data/test/unit/gateways/trust_commerce_test.rb +90 -0
  248. data/test/unit/gateways/usa_epay_test.rb +128 -0
  249. data/test/unit/gateways/verifi_test.rb +96 -0
  250. data/test/unit/gateways/viaklix_test.rb +78 -0
  251. data/test/unit/gateways/wirecard_test.rb +250 -0
  252. data/test/unit/generators/test_gateway_generator.rb +46 -0
  253. data/test/unit/generators/test_generator_helper.rb +20 -0
  254. data/test/unit/generators/test_integration_generator.rb +53 -0
  255. data/test/unit/integrations/action_view_helper_test.rb +50 -0
  256. data/test/unit/integrations/bogus_module_test.rb +20 -0
  257. data/test/unit/integrations/chronopay_module_test.rb +13 -0
  258. data/test/unit/integrations/gestpay_module_test.rb +14 -0
  259. data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
  260. data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
  261. data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
  262. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
  263. data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
  264. data/test/unit/integrations/helpers/paypal_helper_test.rb +171 -0
  265. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  266. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
  267. data/test/unit/integrations/hi_trust_module_test.rb +13 -0
  268. data/test/unit/integrations/nochex_module_test.rb +13 -0
  269. data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
  270. data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
  271. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
  272. data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
  273. data/test/unit/integrations/notifications/notification_test.rb +54 -0
  274. data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
  275. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  276. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
  277. data/test/unit/integrations/paypal_module_test.rb +28 -0
  278. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  279. data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
  280. data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
  281. data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
  282. data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
  283. data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
  284. data/test/unit/integrations/returns/return_test.rb +11 -0
  285. data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
  286. data/test/unit/integrations/two_checkout_module_test.rb +13 -0
  287. data/test/unit/post_data_test.rb +55 -0
  288. data/test/unit/posts_data_test.rb +48 -0
  289. data/test/unit/response_test.rb +28 -0
  290. data/test/unit/utils_test.rb +7 -0
  291. data/test/unit/validateable_test.rb +60 -0
  292. metadata +396 -0
@@ -0,0 +1,145 @@
1
+ require 'test_helper'
2
+
3
+ class AuthorizeNetTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.mode = :test
6
+
7
+ @gateway = AuthorizeNetGateway.new(fixtures(:authorize_net))
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
+
16
+ @recurring_options = {
17
+ :amount => 100,
18
+ :subscription_name => 'Test Subscription 1',
19
+ :credit_card => @credit_card,
20
+ :billing_address => address.merge(:first_name => 'Jim', :last_name => 'Smith'),
21
+ :interval => {
22
+ :length => 1,
23
+ :unit => :months
24
+ },
25
+ :duration => {
26
+ :start_date => Date.today,
27
+ :occurrences => 1
28
+ }
29
+ }
30
+ end
31
+
32
+ def test_successful_purchase
33
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
34
+ assert_success response
35
+ assert response.test?
36
+ assert_equal 'This transaction has been approved', response.message
37
+ assert response.authorization
38
+ end
39
+
40
+ def test_expired_credit_card
41
+ @credit_card.year = 2004
42
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
43
+ assert_failure response
44
+ assert response.test?
45
+ assert_equal 'The credit card has expired', response.message
46
+ end
47
+
48
+ def test_forced_test_mode_purchase
49
+ gateway = AuthorizeNetGateway.new(fixtures(:authorize_net).update(:test => true))
50
+ assert response = gateway.purchase(@amount, @credit_card, @options)
51
+ assert_success response
52
+ assert response.test?
53
+ assert_match(/TESTMODE/, response.message)
54
+ assert response.authorization
55
+ end
56
+
57
+ def test_successful_authorization
58
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
59
+ assert_success response
60
+ assert_equal 'This transaction has been approved', response.message
61
+ assert response.authorization
62
+ end
63
+
64
+ def test_authorization_and_capture
65
+ assert authorization = @gateway.authorize(@amount, @credit_card, @options)
66
+ assert_success authorization
67
+
68
+ assert capture = @gateway.capture(@amount, authorization.authorization)
69
+ assert_success capture
70
+ assert_equal 'This transaction has been approved', capture.message
71
+ end
72
+
73
+ def test_authorization_and_void
74
+ assert authorization = @gateway.authorize(@amount, @credit_card, @options)
75
+ assert_success authorization
76
+
77
+ assert void = @gateway.void(authorization.authorization)
78
+ assert_success void
79
+ assert_equal 'This transaction has been approved', void.message
80
+ end
81
+
82
+ def test_bad_login
83
+ gateway = AuthorizeNetGateway.new(
84
+ :login => 'X',
85
+ :password => 'Y'
86
+ )
87
+
88
+ assert response = gateway.purchase(@amount, @credit_card)
89
+
90
+ assert_equal Response, response.class
91
+ assert_equal ["avs_result_code",
92
+ "card_code",
93
+ "response_code",
94
+ "response_reason_code",
95
+ "response_reason_text",
96
+ "transaction_id"], response.params.keys.sort
97
+
98
+ assert_match(/The merchant login ID or password is invalid/, response.message)
99
+
100
+ assert_equal false, response.success?
101
+ end
102
+
103
+ def test_using_test_request
104
+ gateway = AuthorizeNetGateway.new(
105
+ :login => 'X',
106
+ :password => 'Y'
107
+ )
108
+
109
+ assert response = gateway.purchase(@amount, @credit_card)
110
+
111
+ assert_equal Response, response.class
112
+ assert_equal ["avs_result_code",
113
+ "card_code",
114
+ "response_code",
115
+ "response_reason_code",
116
+ "response_reason_text",
117
+ "transaction_id"], response.params.keys.sort
118
+
119
+ assert_match(/The merchant login ID or password is invalid/, response.message)
120
+
121
+ assert_equal false, response.success?
122
+ end
123
+
124
+ def test_successful_recurring
125
+ assert response = @gateway.recurring(@amount, @credit_card, @recurring_options)
126
+ assert_success response
127
+ assert response.test?
128
+
129
+ subscription_id = response.authorization
130
+
131
+ assert response = @gateway.update_recurring(:subscription_id => subscription_id, :amount => @amount * 2)
132
+ assert_success response
133
+
134
+ assert response = @gateway.cancel_recurring(subscription_id)
135
+ assert_success response
136
+ end
137
+
138
+ def test_recurring_should_fail_expired_credit_card
139
+ @credit_card.year = 2004
140
+ assert response = @gateway.recurring(@amount, @credit_card, @recurring_options)
141
+ assert_failure response
142
+ assert response.test?
143
+ assert_equal 'E00018', response.params['code']
144
+ end
145
+ end
@@ -0,0 +1,53 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteBeanstreamInteracTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = BeanstreamInteracGateway.new(fixtures(:beanstream_interac))
7
+
8
+ @amount = 100
9
+
10
+ @options = {
11
+ :order_id => generate_unique_id,
12
+ :billing_address => {
13
+ :name => 'xiaobo zzz',
14
+ :phone => '555-555-5555',
15
+ :address1 => '1234 Levesque St.',
16
+ :address2 => 'Apt B',
17
+ :city => 'Montreal',
18
+ :state => 'QC',
19
+ :country => 'CA',
20
+ :zip => 'H2C1X8'
21
+ },
22
+ :email => 'xiaobozzz@example.com',
23
+ :subtotal => 800,
24
+ :shipping => 100,
25
+ :tax1 => 100,
26
+ :tax2 => 100,
27
+ :custom => 'reference one'
28
+ }
29
+ end
30
+
31
+ def test_successful_purchase
32
+ assert response = @gateway.purchase(@amount, @options)
33
+ assert_success response
34
+ assert_equal "R", response.params["responseType"]
35
+ assert_false response.redirect.blank?
36
+ end
37
+
38
+ def test_failed_confirmation
39
+ assert response = @gateway.confirm("")
40
+ assert_failure response
41
+ end
42
+
43
+ def test_invalid_login
44
+ gateway = BeanstreamInteracGateway.new(
45
+ :merchant_id => '',
46
+ :login => '',
47
+ :password => ''
48
+ )
49
+ assert response = gateway.purchase(@amount, @options)
50
+ assert_failure response
51
+ assert_equal 'Invalid merchant id (merchant_id = 0)', response.message
52
+ end
53
+ end
@@ -0,0 +1,150 @@
1
+ require 'test_helper'
2
+
3
+ # This test suite assumes that you have enabled username/password transaction validation in your Beanstream account.
4
+ # You will experience some test failures if username/password validation transaction validation is not enabled.
5
+ class RemoteBeanstreamTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @gateway = BeanstreamGateway.new(fixtures(:beanstream))
9
+
10
+ # Beanstream test cards. Cards require a CVV of 123, which is the default of the credit card helper
11
+ @visa = credit_card('4030000010001234')
12
+ @declined_visa = credit_card('4003050500040005')
13
+
14
+ @mastercard = credit_card('5100000010001004')
15
+ @declined_mastercard = credit_card('5100000020002000')
16
+
17
+ @amex = credit_card('371100001000131')
18
+ @declined_amex = credit_card('342400001000180')
19
+
20
+ # Canadian EFT
21
+ @check = check(
22
+ :institution_number => '001',
23
+ :transit_number => '26729'
24
+ )
25
+
26
+ @amount = 1500
27
+
28
+ @options = {
29
+ :order_id => generate_unique_id,
30
+ :billing_address => {
31
+ :name => 'xiaobo zzz',
32
+ :phone => '555-555-5555',
33
+ :address1 => '1234 Levesque St.',
34
+ :address2 => 'Apt B',
35
+ :city => 'Montreal',
36
+ :state => 'QC',
37
+ :country => 'CA',
38
+ :zip => 'H2C1X8'
39
+ },
40
+ :email => 'xiaobozzz@example.com',
41
+ :subtotal => 800,
42
+ :shipping => 100,
43
+ :tax1 => 100,
44
+ :tax2 => 100,
45
+ :custom => 'reference one'
46
+ }
47
+ end
48
+
49
+ def test_successful_visa_purchase
50
+ assert response = @gateway.purchase(@amount, @visa, @options)
51
+ assert_success response
52
+ assert_false response.authorization.blank?
53
+ assert_equal "Approved", response.message
54
+ end
55
+
56
+ def test_unsuccessful_visa_purchase
57
+ assert response = @gateway.purchase(@amount, @declined_visa, @options)
58
+ assert_failure response
59
+ assert_equal 'DECLINE', response.message
60
+ end
61
+
62
+ def test_successful_mastercard_purchase
63
+ assert response = @gateway.purchase(@amount, @mastercard, @options)
64
+ assert_success response
65
+ assert_false response.authorization.blank?
66
+ assert_equal "Approved", response.message
67
+ end
68
+
69
+ def test_unsuccessful_mastercard_purchase
70
+ assert response = @gateway.purchase(@amount, @declined_mastercard, @options)
71
+ assert_failure response
72
+ assert_equal 'DECLINE', response.message
73
+ end
74
+
75
+ def test_successful_amex_purchase
76
+ assert response = @gateway.purchase(@amount, @amex, @options)
77
+ assert_success response
78
+ assert_false response.authorization.blank?
79
+ assert_equal "Approved", response.message
80
+ end
81
+
82
+ def test_unsuccessful_amex_purchase
83
+ assert response = @gateway.purchase(@amount, @declined_amex, @options)
84
+ assert_failure response
85
+ assert_equal 'DECLINE', response.message
86
+ end
87
+
88
+ def test_authorize_and_capture
89
+ assert auth = @gateway.authorize(@amount, @visa, @options)
90
+ assert_success auth
91
+ assert_equal "Approved", auth.message
92
+ assert_false auth.authorization.blank?
93
+
94
+ assert capture = @gateway.capture(@amount, auth.authorization)
95
+ assert_success capture
96
+ assert_false capture.authorization.blank?
97
+ end
98
+
99
+ def test_failed_capture
100
+ assert response = @gateway.capture(@amount, '')
101
+ assert_failure response
102
+ assert_no_match %r{You are not authorized}, response.message, "You need to enable username/password validation"
103
+ assert_match %r{Missing or invalid adjustment id.}, response.message
104
+ end
105
+
106
+ def test_successful_purchase_and_void
107
+ assert purchase = @gateway.purchase(@amount, @visa, @options)
108
+ assert_success purchase
109
+
110
+ assert void = @gateway.void(purchase.authorization)
111
+ assert_success void
112
+ end
113
+
114
+ def test_successful_purchase_and_credit_and_void_credit
115
+ assert purchase = @gateway.purchase(@amount, @visa, @options)
116
+ assert_success purchase
117
+
118
+ assert credit = @gateway.credit(@amount, purchase.authorization)
119
+ assert_success purchase
120
+
121
+ assert void = @gateway.void(credit.authorization)
122
+ assert_success void
123
+ end
124
+
125
+ def test_successful_check_purchase
126
+ assert response = @gateway.purchase(@amount, @check, @options)
127
+ assert_success response
128
+ assert response.test?
129
+ assert_false response.authorization.blank?
130
+ end
131
+
132
+ def test_successful_check_purchase_and_credit
133
+ assert purchase = @gateway.purchase(@amount, @check, @options)
134
+ assert_success purchase
135
+
136
+ assert credit = @gateway.credit(@amount, purchase.authorization)
137
+ assert_success credit
138
+ end
139
+
140
+ def test_invalid_login
141
+ gateway = BeanstreamGateway.new(
142
+ :merchant_id => '',
143
+ :login => '',
144
+ :password => ''
145
+ )
146
+ assert response = gateway.purchase(@amount, @visa, @options)
147
+ assert_failure response
148
+ assert_equal 'Invalid merchant id (merchant_id = 0)', response.message
149
+ end
150
+ end
@@ -0,0 +1,154 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteBraintreeTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = BraintreeGateway.new(fixtures(:braintree))
6
+
7
+ @amount = rand(10000) + 1001
8
+ @credit_card = credit_card('4111111111111111')
9
+ @check = check()
10
+ @declined_amount = rand(99)
11
+ @options = { :order_id => generate_unique_id,
12
+ :billing_address => address
13
+ }
14
+ end
15
+
16
+ def test_successful_purchase
17
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
18
+ assert_equal 'This transaction has been approved', response.message
19
+ assert_success response
20
+ end
21
+
22
+ def test_successful_purchase_with_old_naming
23
+ gateway = BrainTreeGateway.new(fixtures(:braintree))
24
+ assert response = gateway.purchase(@amount, @credit_card, @options)
25
+ assert_equal 'This transaction has been approved', response.message
26
+ assert_success response
27
+ end
28
+
29
+ def test_successful_purchase_with_echeck
30
+ check = ActiveMerchant::Billing::Check.new(
31
+ :name => 'Fredd Bloggs',
32
+ :routing_number => '111000025', # Valid ABA # - Bank of America, TX
33
+ :account_number => '999999999999',
34
+ :account_holder_type => 'personal',
35
+ :account_type => 'checking'
36
+ )
37
+ assert response = @gateway.purchase(@amount, @check, @options)
38
+ assert_equal 'This transaction has been approved', response.message
39
+ assert_success response
40
+ end
41
+
42
+ def test_successful_add_to_vault
43
+ @options[:store] = true
44
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
45
+ assert_equal 'This transaction has been approved', response.message
46
+ assert_success response
47
+ assert_not_nil response.params["customer_vault_id"]
48
+ end
49
+
50
+ def test_successful_add_to_vault_with_store_method
51
+ assert response = @gateway.store(@credit_card)
52
+ assert_equal 'Customer Added', response.message
53
+ assert_success response
54
+ assert_not_nil response.params["customer_vault_id"]
55
+ end
56
+
57
+ def test_successful_add_to_vault_and_use
58
+ @options[:store] = true
59
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
60
+ assert_equal 'This transaction has been approved', response.message
61
+ assert_success response
62
+ assert_not_nil customer_id = response.params["customer_vault_id"]
63
+
64
+ assert second_response = @gateway.purchase(@amount*2, customer_id, @options)
65
+ assert_equal 'This transaction has been approved', second_response.message
66
+ assert second_response.success?
67
+ end
68
+
69
+ def test_add_to_vault_with_custom_vault_id
70
+ @options[:store] = rand(100000)+10001
71
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
72
+ assert_equal 'This transaction has been approved', response.message
73
+ assert_success response
74
+ assert_equal @options[:store], response.params["customer_vault_id"].to_i
75
+ end
76
+
77
+ def test_add_to_vault_with_custom_vault_id_with_store_method
78
+ @options[:billing_id] = rand(100000)+10001
79
+ assert response = @gateway.store(@credit_card, @options.dup)
80
+ assert_equal 'Customer Added', response.message
81
+ assert_success response
82
+ assert_equal @options[:billing_id], response.params["customer_vault_id"].to_i
83
+ end
84
+
85
+ def test_add_to_vault_with_store_and_check
86
+ assert response = @gateway.store(@check, @options)
87
+ assert_equal 'Customer Added', response.message
88
+ assert_success response
89
+ end
90
+
91
+ def test_update_vault
92
+ test_add_to_vault_with_custom_vault_id
93
+ @credit_card = credit_card('4111111111111111', :month => 10)
94
+ assert response = @gateway.update(@options[:store], @credit_card)
95
+ assert_success response
96
+ assert_equal 'Customer Update Successful', response.message
97
+ end
98
+
99
+ def test_delete_from_vault
100
+ test_add_to_vault_with_custom_vault_id
101
+ assert response = @gateway.delete(@options[:store])
102
+ assert_success response
103
+ assert_equal 'Customer Deleted', response.message
104
+ end
105
+
106
+ def test_delete_from_vault_with_unstore_method
107
+ test_add_to_vault_with_custom_vault_id
108
+ assert response = @gateway.unstore(@options[:store])
109
+ assert_success response
110
+ assert_equal 'Customer Deleted', response.message
111
+ end
112
+
113
+ def test_declined_purchase
114
+ assert response = @gateway.purchase(@declined_amount, @credit_card, @options)
115
+ assert_equal 'This transaction has been declined', response.message
116
+ assert_failure response
117
+ end
118
+
119
+ def test_authorize_and_capture
120
+ assert auth = @gateway.authorize(@amount, @credit_card, @options)
121
+ assert_success auth
122
+ assert_equal 'This transaction has been approved', auth.message
123
+ assert auth.authorization
124
+ assert capture = @gateway.capture(@amount, auth.authorization)
125
+ assert_equal 'This transaction has been approved', capture.message
126
+ assert_success capture
127
+ end
128
+
129
+ def test_authorize_and_void
130
+ assert auth = @gateway.authorize(@amount, @credit_card, @options)
131
+ assert_success auth
132
+ assert_equal 'This transaction has been approved', auth.message
133
+ assert auth.authorization
134
+ assert void = @gateway.void(auth.authorization)
135
+ assert_equal 'Transaction Void Successful', void.message
136
+ assert_success void
137
+ end
138
+
139
+ def test_failed_capture
140
+ assert response = @gateway.capture(@amount, '')
141
+ assert_failure response
142
+ assert response.message.match(/Invalid Transaction ID \/ Object ID specified:/)
143
+ end
144
+
145
+ def test_invalid_login
146
+ gateway = BraintreeGateway.new(
147
+ :login => '',
148
+ :password => ''
149
+ )
150
+ assert response = gateway.purchase(@amount, @credit_card, @options)
151
+ assert_equal 'Invalid Username', response.message
152
+ assert_failure response
153
+ end
154
+ end