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,39 @@
1
+ require 'test_helper'
2
+
3
+ class RemotePaySecureTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = PaySecureGateway.new(fixtures(:pay_secure))
7
+
8
+ @credit_card = credit_card('4000100011112224')
9
+ @options = {
10
+ :billing_address => address,
11
+ :order_id => generate_unique_id
12
+ }
13
+ @amount = 100
14
+ end
15
+
16
+ def test_successful_purchase
17
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
18
+ assert_success response
19
+ assert_equal PaySecureGateway::SUCCESS_MESSAGE, response.message
20
+ assert response.test?
21
+ end
22
+
23
+ def test_unsuccessful_purchase
24
+ @credit_card.year = '2006'
25
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
26
+ assert_equal 'Declined, card expired', response.message
27
+ assert_failure response
28
+ end
29
+
30
+ def test_invalid_login
31
+ gateway = PaySecureGateway.new(
32
+ :login => '',
33
+ :password => ''
34
+ )
35
+ assert response = gateway.purchase(@amount, @credit_card, @options)
36
+ assert_equal "MissingField: 'MERCHANT_ID'", response.message
37
+ assert_failure response
38
+ end
39
+ end
@@ -0,0 +1,50 @@
1
+ require 'test_helper'
2
+
3
+ class RemotePayflowTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.gateway_mode = :test
6
+
7
+ @gateway = PayflowExpressGateway.new(fixtures(:payflow))
8
+
9
+ @options = { :billing_address => {
10
+ :name => 'Cody Fauser',
11
+ :address1 => '1234 Shady Brook Lane',
12
+ :city => 'Ottawa',
13
+ :state => 'ON',
14
+ :country => 'CA',
15
+ :zip => '90210',
16
+ :phone => '555-555-5555'
17
+ },
18
+ :email => 'cody@example.com'
19
+ }
20
+ end
21
+
22
+ # Only works with a Payflow 2.0 account or by requesting the addition
23
+ # of Express checkout to an existing Payflow Pro account. This can be done
24
+ # by contacting Payflow sales. The PayPal account used must be a business
25
+ # account and the Payflow Pro account must be in Live mode in order for
26
+ # the tests to work correctly
27
+ def test_set_express_authorization
28
+ @options.update(
29
+ :return_url => 'http://example.com',
30
+ :cancel_return_url => 'http://example.com',
31
+ :email => 'Buyer1@paypal.com'
32
+ )
33
+ response = @gateway.setup_authorization(500, @options)
34
+ assert response.success?
35
+ assert response.test?
36
+ assert !response.params['token'].blank?
37
+ end
38
+
39
+ def test_set_express_purchase
40
+ @options.update(
41
+ :return_url => 'http://example.com',
42
+ :cancel_return_url => 'http://example.com',
43
+ :email => 'Buyer1@paypal.com'
44
+ )
45
+ response = @gateway.setup_purchase(500, @options)
46
+ assert response.success?
47
+ assert response.test?
48
+ assert !response.params['token'].blank?
49
+ end
50
+ end
@@ -0,0 +1,237 @@
1
+ require 'test_helper'
2
+
3
+ class RemotePayflowTest < Test::Unit::TestCase
4
+ def setup
5
+ ActiveMerchant::Billing::Base.gateway_mode = :test
6
+
7
+ @gateway = PayflowGateway.new(fixtures(:payflow))
8
+
9
+ @credit_card = credit_card('5105105105105100',
10
+ :type => 'master'
11
+ )
12
+
13
+ @options = { :billing_address => address,
14
+ :email => 'cody@example.com',
15
+ :customer => 'codyexample'
16
+ }
17
+ end
18
+
19
+ def test_successful_purchase
20
+ assert response = @gateway.purchase(100000, @credit_card, @options)
21
+ assert_equal "Approved", response.message
22
+ assert_success response
23
+ assert response.test?
24
+ assert_not_nil response.authorization
25
+ end
26
+
27
+ def test_declined_purchase
28
+ assert response = @gateway.purchase(210000, @credit_card, @options)
29
+ assert_equal 'Declined', response.message
30
+ assert_failure response
31
+ assert response.test?
32
+ end
33
+
34
+ def test_successful_authorization
35
+ assert response = @gateway.authorize(100, @credit_card, @options)
36
+ assert_equal "Approved", response.message
37
+ assert_success response
38
+ assert response.test?
39
+ assert_not_nil response.authorization
40
+ end
41
+
42
+ def test_authorize_and_capture
43
+ assert auth = @gateway.authorize(100, @credit_card, @options)
44
+ assert_success auth
45
+ assert_equal 'Approved', auth.message
46
+ assert auth.authorization
47
+ assert capture = @gateway.capture(100, auth.authorization)
48
+ assert_success capture
49
+ end
50
+
51
+ def test_authorize_and_partial_capture
52
+ assert auth = @gateway.authorize(100 * 2, @credit_card, @options)
53
+ assert_success auth
54
+ assert_equal 'Approved', auth.message
55
+ assert auth.authorization
56
+
57
+ assert capture = @gateway.capture(100, auth.authorization)
58
+ assert_success capture
59
+ end
60
+
61
+ def test_failed_capture
62
+ assert response = @gateway.capture(100, '999')
63
+ assert_failure response
64
+ assert_equal 'Invalid tender', response.message
65
+ end
66
+
67
+ def test_authorize_and_void
68
+ assert auth = @gateway.authorize(100, @credit_card, @options)
69
+ assert_success auth
70
+ assert_equal 'Approved', auth.message
71
+ assert auth.authorization
72
+ assert void = @gateway.void(auth.authorization)
73
+ assert_success void
74
+ end
75
+
76
+ def test_invalid_login
77
+ gateway = PayflowGateway.new(
78
+ :login => '',
79
+ :password => ''
80
+ )
81
+ assert response = gateway.purchase(100, @credit_card, @options)
82
+ assert_equal 'Invalid vendor account', response.message
83
+ assert_failure response
84
+ end
85
+
86
+ def test_duplicate_request_id
87
+ request_id = Digest::MD5.hexdigest(rand.to_s)
88
+ @gateway.expects(:generate_unique_id).times(2).returns(request_id)
89
+
90
+ response1 = @gateway.purchase(100, @credit_card, @options)
91
+ assert response1.success?
92
+ assert_nil response1.params['duplicate']
93
+
94
+ response2 = @gateway.purchase(100, @credit_card, @options)
95
+ assert response2.success?
96
+ assert response2.params['duplicate']
97
+ end
98
+
99
+ def test_create_recurring_profile
100
+ response = @gateway.recurring(1000, @credit_card, :periodicity => :monthly)
101
+ assert_success response
102
+ assert !response.params['profile_id'].blank?
103
+ assert response.test?
104
+ end
105
+
106
+ def test_create_recurring_profile_with_invalid_date
107
+ response = @gateway.recurring(1000, @credit_card, :periodicity => :monthly, :starting_at => Time.now)
108
+ assert_failure response
109
+ assert_equal 'Field format error: Start or next payment date must be a valid future date', response.message
110
+ assert response.params['profile_id'].blank?
111
+ assert response.test?
112
+ end
113
+
114
+ def test_create_and_cancel_recurring_profile
115
+ response = @gateway.recurring(1000, @credit_card, :periodicity => :monthly)
116
+ assert_success response
117
+ assert !response.params['profile_id'].blank?
118
+ assert response.test?
119
+
120
+ response = @gateway.cancel_recurring(response.params['profile_id'])
121
+ assert_success response
122
+ assert response.test?
123
+ end
124
+
125
+ def test_full_feature_set_for_recurring_profiles
126
+ # Test add
127
+ @options.update(
128
+ :periodicity => :weekly,
129
+ :payments => '12',
130
+ :starting_at => Time.now + 1.day,
131
+ :comment => "Test Profile"
132
+ )
133
+ response = @gateway.recurring(100, @credit_card, @options)
134
+ assert_equal "Approved", response.params['message']
135
+ assert_equal "0", response.params['result']
136
+ assert_success response
137
+ assert response.test?
138
+ assert !response.params['profile_id'].blank?
139
+ @recurring_profile_id = response.params['profile_id']
140
+
141
+ # Test modify
142
+ @options.update(
143
+ :periodicity => :monthly,
144
+ :starting_at => Time.now + 1.day,
145
+ :payments => '4',
146
+ :profile_id => @recurring_profile_id
147
+ )
148
+ response = @gateway.recurring(400, @credit_card, @options)
149
+ assert_equal "Approved", response.params['message']
150
+ assert_equal "0", response.params['result']
151
+ assert_success response
152
+ assert response.test?
153
+
154
+ # Test inquiry
155
+ response = @gateway.recurring_inquiry(@recurring_profile_id)
156
+ assert_equal "0", response.params['result']
157
+ assert_success response
158
+ assert response.test?
159
+
160
+ # Test payment history inquiry
161
+ response = @gateway.recurring_inquiry(@recurring_profile_id, :history => true)
162
+ assert_equal '0', response.params['result']
163
+ assert_success response
164
+ assert response.test?
165
+
166
+ # Test cancel
167
+ response = @gateway.cancel_recurring(@recurring_profile_id)
168
+ assert_equal "Approved", response.params['message']
169
+ assert_equal "0", response.params['result']
170
+ assert_success response
171
+ assert response.test?
172
+ end
173
+
174
+ # Note that this test will only work if you enable reference transactions!!
175
+ def test_reference_purchase
176
+ assert response = @gateway.purchase(10000, @credit_card, @options)
177
+ assert_equal "Approved", response.message
178
+ assert_success response
179
+ assert response.test?
180
+ assert_not_nil pn_ref = response.authorization
181
+
182
+ # now another purchase, by reference
183
+ assert response = @gateway.purchase(10000, pn_ref)
184
+ assert_equal "Approved", response.message
185
+ assert_success response
186
+ assert response.test?
187
+ end
188
+
189
+ def test_recurring_with_initial_authorization
190
+ response = @gateway.recurring(1000, @credit_card,
191
+ :periodicity => :monthly,
192
+ :initial_transaction => {
193
+ :type => :authorization
194
+ }
195
+ )
196
+
197
+ assert_success response
198
+ assert !response.params['profile_id'].blank?
199
+ assert response.test?
200
+ end
201
+
202
+ def test_recurring_with_initial_authorization
203
+ response = @gateway.recurring(1000, @credit_card,
204
+ :periodicity => :monthly,
205
+ :initial_transaction => {
206
+ :type => :purchase,
207
+ :amount => 500
208
+ }
209
+ )
210
+
211
+ assert_success response
212
+ assert !response.params['profile_id'].blank?
213
+ assert response.test?
214
+ end
215
+
216
+ def test_purchase_and_referenced_credit
217
+ amount = 100
218
+
219
+ assert purchase = @gateway.purchase(amount, @credit_card, @options)
220
+ assert_success purchase
221
+ assert_equal 'Approved', purchase.message
222
+ assert !purchase.authorization.blank?
223
+
224
+ assert credit = @gateway.credit(amount, purchase.authorization)
225
+ assert_success credit
226
+ end
227
+
228
+ # The default security setting for Payflow Pro accounts is Allow
229
+ # non-referenced credits = No.
230
+ #
231
+ # Non-referenced credits will fail with Result code 117 (failed the security
232
+ # check) unless Allow non-referenced credits = Yes in PayPal manager
233
+ def test_purchase_and_non_referenced_credit
234
+ assert credit = @gateway.credit(100, @credit_card, @options)
235
+ assert_success credit
236
+ end
237
+ end
@@ -0,0 +1,173 @@
1
+ require 'test_helper'
2
+
3
+ class RemotePayflowUkTest < Test::Unit::TestCase
4
+ def setup
5
+ ActiveMerchant::Billing::Base.gateway_mode = :test
6
+
7
+ # The default partner is PayPalUk
8
+ @gateway = PayflowUkGateway.new(fixtures(:payflow_uk))
9
+
10
+ @creditcard = CreditCard.new(
11
+ :number => '5105105105105100',
12
+ :month => 11,
13
+ :year => 2009,
14
+ :first_name => 'Cody',
15
+ :last_name => 'Fauser',
16
+ :verification_value => '000',
17
+ :type => 'master'
18
+ )
19
+
20
+ @solo = CreditCard.new(
21
+ :type => "solo",
22
+ :number => "6334900000000005",
23
+ :month => Time.now.month,
24
+ :year => Time.now.year + 1,
25
+ :first_name => "Test",
26
+ :last_name => "Mensch",
27
+ :issue_number => '01'
28
+ )
29
+
30
+ @switch = CreditCard.new(
31
+ :type => "switch",
32
+ :number => "5641820000000005",
33
+ :verification_value => "000",
34
+ :month => 1,
35
+ :year => 2008,
36
+ :first_name => 'Fred',
37
+ :last_name => 'Brooks'
38
+ )
39
+
40
+ @options = {
41
+ :billing_address => {
42
+ :name => 'Cody Fauser',
43
+ :address1 => '1234 Shady Brook Lane',
44
+ :city => 'Ottawa',
45
+ :state => 'ON',
46
+ :country => 'CA',
47
+ :zip => '90210',
48
+ :phone => '555-555-5555'
49
+ },
50
+ :email => 'cody@example.com'
51
+ }
52
+ end
53
+
54
+ def test_successful_purchase
55
+ assert response = @gateway.purchase(100000, @creditcard, @options)
56
+ assert_equal "Approved", response.message
57
+ assert_success response
58
+ assert response.test?
59
+ assert_not_nil response.authorization
60
+ end
61
+
62
+ def test_declined_purchase
63
+ assert response = @gateway.purchase(210000, @creditcard, @options)
64
+ assert_equal 'Failed merchant rule check', response.message
65
+ assert_failure response
66
+ assert response.test?
67
+ end
68
+
69
+ def test_successful_purchase_solo
70
+ assert response = @gateway.purchase(100000, @solo, @options)
71
+ assert_equal "Approved", response.message
72
+ assert_success response
73
+ assert response.test?
74
+ assert_not_nil response.authorization
75
+ end
76
+
77
+ def test_no_card_issue_or_card_start_with_switch
78
+ assert response = @gateway.purchase(100000, @switch, @options)
79
+ assert_failure response
80
+
81
+ assert_equal "Field format error: CARDSTART or CARDISSUE must be present", response.message
82
+ assert_failure response
83
+ assert response.test?
84
+ end
85
+
86
+ def test_successful_purchase_switch_with_issue_number
87
+ @switch.issue_number = '01'
88
+ assert response = @gateway.purchase(100000, @switch, @options)
89
+ assert_equal "Approved", response.message
90
+ assert_success response
91
+ assert response.test?
92
+ assert_not_nil response.authorization
93
+ end
94
+
95
+ def test_successful_purchase_switch_with_start_date
96
+ @switch.start_month = 12
97
+ @switch.start_year = 1999
98
+ assert response = @gateway.purchase(100000, @switch, @options)
99
+ assert_equal "Approved", response.message
100
+ assert_success response
101
+ assert response.test?
102
+ assert_not_nil response.authorization
103
+ end
104
+
105
+ def test_successful_purchase_switch_with_start_date_and_issue_number
106
+ @switch.issue_number = '05'
107
+ @switch.start_month = 12
108
+ @switch.start_year = 1999
109
+ assert response = @gateway.purchase(100000, @switch, @options)
110
+ assert_equal "Approved", response.message
111
+ assert_success response
112
+ assert response.test?
113
+ assert_not_nil response.authorization
114
+ end
115
+
116
+ def test_successful_authorization
117
+ assert response = @gateway.authorize(100, @creditcard, @options)
118
+ assert_equal "Approved", response.message
119
+ assert_success response
120
+ assert response.test?
121
+ assert_not_nil response.authorization
122
+ end
123
+
124
+ def test_authorize_and_capture
125
+ amount = 100
126
+ assert auth = @gateway.authorize(amount, @creditcard, @options)
127
+ assert_success auth
128
+ assert_equal 'Approved', auth.message
129
+ assert auth.authorization
130
+ assert capture = @gateway.capture(amount, auth.authorization)
131
+ assert_success capture
132
+ end
133
+
134
+ def test_failed_capture
135
+ assert response = @gateway.capture(100, '999')
136
+ assert_failure response
137
+ assert_equal 'Invalid tender', response.message
138
+ end
139
+
140
+ def test_authorize_and_void
141
+ assert auth = @gateway.authorize(100, @creditcard, @options)
142
+ assert_success auth
143
+ assert_equal 'Approved', auth.message
144
+ assert auth.authorization
145
+ assert void = @gateway.void(auth.authorization)
146
+ assert_success void
147
+ end
148
+
149
+ def test_invalid_login
150
+ gateway = PayflowGateway.new(
151
+ :login => '',
152
+ :password => ''
153
+ )
154
+ assert response = gateway.purchase(100, @creditcard, @options)
155
+ assert_equal 'Invalid vendor account', response.message
156
+ assert_failure response
157
+ end
158
+
159
+ def test_duplicate_request_id
160
+ gateway = PayflowUkGateway.new(
161
+ :login => @login,
162
+ :password => @password
163
+ )
164
+
165
+ request_id = Digest::SHA1.hexdigest(rand.to_s).slice(0,32)
166
+ gateway.expects(:generate_unique_id).times(2).returns(request_id)
167
+
168
+ response1 = gateway.purchase(100, @creditcard, @options)
169
+ assert_nil response1.params['duplicate']
170
+ response2 = gateway.purchase(100, @creditcard, @options)
171
+ assert response2.params['duplicate']
172
+ end
173
+ end