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,125 @@
1
+ # Author:: MoneySpyder, http://moneyspyder.co.uk
2
+
3
+ require 'test_helper'
4
+
5
+ class RemotePslCardTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @gateway = PslCardGateway.new(fixtures(:psl_card))
9
+
10
+ @uk_maestro = CreditCard.new(fixtures(:psl_maestro))
11
+ @uk_maestro_address = fixtures(:psl_maestro_address)
12
+
13
+ @solo = CreditCard.new(fixtures(:psl_solo))
14
+ @solo_address = fixtures(:psl_solo_address)
15
+
16
+ @visa = CreditCard.new(fixtures(:psl_visa))
17
+ @visa_address = fixtures(:psl_visa_address)
18
+
19
+ @visa_debit = CreditCard.new(fixtures(:psl_visa_debit))
20
+ @visa_address = fixtures(:psl_visa_debit_address)
21
+
22
+ # The test results are determined by the amount of the transaction
23
+ @accept_amount = 1000
24
+ @referred_amount = 6000
25
+ @declined_amount = 11000
26
+ @keep_card_amount = 15000
27
+ end
28
+
29
+ def test_successful_visa_purchase
30
+ response = @gateway.purchase(@accept_amount, @visa,
31
+ :billing_address => @visa_address
32
+ )
33
+ assert_success response
34
+ assert response.test?
35
+ end
36
+
37
+ def test_successful_visa_debit_purchase
38
+ response = @gateway.purchase(@accept_amount, @visa_debit,
39
+ :billing_address => @visa_debit_address
40
+ )
41
+ assert_success response
42
+ end
43
+
44
+ # Fix regression discovered in production
45
+ def test_visa_debit_purchase_should_not_send_debit_info_if_present
46
+ @visa_debit.start_month = "07"
47
+ response = @gateway.purchase(@accept_amount, @visa_debit,
48
+ :billing_address => @visa_debit_address
49
+ )
50
+ assert_success response
51
+ end
52
+
53
+ def test_successful_visa_purchase_specifying_currency
54
+ response = @gateway.purchase(@accept_amount, @visa,
55
+ :billing_address => @visa_address,
56
+ :currency => 'GBP'
57
+ )
58
+ assert_success response
59
+ assert response.test?
60
+ end
61
+
62
+ def test_successful_solo_purchase
63
+ response = @gateway.purchase(@accept_amount, @solo,
64
+ :billing_address => @solo_address
65
+ )
66
+ assert_success response
67
+ assert response.test?
68
+ end
69
+
70
+ def test_referred_purchase
71
+ response = @gateway.purchase(@referred_amount, @uk_maestro,
72
+ :billing_address => @uk_maestro_address
73
+ )
74
+ assert_failure response
75
+ assert response.test?
76
+ end
77
+
78
+ def test_declined_purchase
79
+ response = @gateway.purchase(@declined_amount, @uk_maestro,
80
+ :billing_address => @uk_maestro_address
81
+ )
82
+ assert_failure response
83
+ assert response.test?
84
+ end
85
+
86
+ def test_declined_keep_card_purchase
87
+ response = @gateway.purchase(@keep_card_amount, @uk_maestro,
88
+ :billing_address => @uk_maestro_address
89
+ )
90
+ assert_failure response
91
+ assert response.test?
92
+ end
93
+
94
+ def test_successful_authorization
95
+ response = @gateway.authorize(@accept_amount, @visa,
96
+ :billing_address => @visa_address
97
+ )
98
+ assert_success response
99
+ assert response.test?
100
+ end
101
+
102
+ def test_no_login
103
+ @gateway = PslCardGateway.new(
104
+ :login => ''
105
+ )
106
+ response = @gateway.authorize(@accept_amount, @uk_maestro,
107
+ :billing_address => @uk_maestro_address
108
+ )
109
+ assert_failure response
110
+ assert response.test?
111
+ end
112
+
113
+ def test_successful_authorization_and_capture
114
+ authorization = @gateway.authorize(@accept_amount, @visa,
115
+ :billing_address => @visa_address
116
+ )
117
+ assert_success authorization
118
+ assert authorization.test?
119
+
120
+ capture = @gateway.capture(@accept_amount, authorization.authorization)
121
+
122
+ assert_success capture
123
+ assert capture.test?
124
+ end
125
+ end
@@ -0,0 +1,190 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteQuickpayTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = QuickpayGateway.new(fixtures(:quickpay))
6
+
7
+ @amount = 100
8
+ @options = {
9
+ :order_id => generate_unique_id[0...10],
10
+ :billing_address => address
11
+ }
12
+
13
+ @visa_no_cvv2 = credit_card('4000300011112220', :verification_value => nil)
14
+ @visa = credit_card('4000100011112224')
15
+ @dankort = credit_card('5019717010103742')
16
+ @visa_dankort = credit_card('4571100000000000')
17
+ @electron_dk = credit_card('4175001000000000')
18
+ @diners_club = credit_card('30401000000000')
19
+ @diners_club_dk = credit_card('36148010000000')
20
+ @maestro = credit_card('5020100000000000')
21
+ @maestro_dk = credit_card('6769271000000000')
22
+ @mastercard_dk = credit_card('5413031000000000')
23
+ @amex_dk = credit_card('3747100000000000')
24
+ @amex = credit_card('3700100000000000')
25
+
26
+ # forbrugsforeningen doesn't use a verification value
27
+ @forbrugsforeningen = credit_card('6007221000000000', :verification_value => nil)
28
+ end
29
+
30
+ def test_successful_purchase
31
+ assert response = @gateway.purchase(@amount, @visa, @options)
32
+ assert_equal 'OK', response.message
33
+ assert_equal 'DKK', response.params['currency']
34
+ assert_success response
35
+ assert !response.authorization.blank?
36
+ end
37
+
38
+ def test_successful_usd_purchase
39
+ assert response = @gateway.purchase(@amount, @visa, @options.update(:currency => 'USD'))
40
+ assert_equal 'OK', response.message
41
+ assert_equal 'USD', response.params['currency']
42
+ assert_success response
43
+ assert !response.authorization.blank?
44
+ end
45
+
46
+ def test_successful_dankort_authorization
47
+ assert response = @gateway.authorize(@amount, @dankort, @options)
48
+ assert_success response
49
+ assert !response.authorization.blank?
50
+ assert_equal 'Dankort', response.params['cardtype']
51
+ end
52
+
53
+ def test_successful_visa_dankort_authorization
54
+ assert response = @gateway.authorize(@amount, @visa_dankort, @options)
55
+ assert_success response
56
+ assert !response.authorization.blank?
57
+ assert_equal 'Visa-Dankort', response.params['cardtype']
58
+ end
59
+
60
+ def test_successful_visa_electron_authorization
61
+ assert response = @gateway.authorize(@amount, @electron_dk, @options)
62
+ assert_success response
63
+ assert !response.authorization.blank?
64
+ assert_equal 'Visa-Electron-DK', response.params['cardtype']
65
+ end
66
+
67
+ def test_successful_diners_club_authorization
68
+ assert response = @gateway.authorize(@amount, @diners_club, @options)
69
+ assert_success response
70
+ assert !response.authorization.blank?
71
+ assert_equal 'Diners', response.params['cardtype']
72
+ end
73
+
74
+ def test_successful_diners_club_dk_authorization
75
+ assert response = @gateway.authorize(@amount, @diners_club_dk, @options)
76
+ assert_success response
77
+ assert !response.authorization.blank?
78
+ assert_equal 'Diners-DK', response.params['cardtype']
79
+ end
80
+
81
+ def test_successful_maestro_authorization
82
+ assert response = @gateway.authorize(@amount, @maestro, @options)
83
+ assert_success response
84
+ assert !response.authorization.blank?
85
+ assert_equal 'Maestro', response.params['cardtype']
86
+ end
87
+
88
+ def test_successful_maestro_dk_authorization
89
+ assert response = @gateway.authorize(@amount, @maestro_dk, @options)
90
+ assert_success response
91
+ assert !response.authorization.blank?
92
+ assert_equal 'Maestro-DK', response.params['cardtype']
93
+ end
94
+
95
+ def test_successful_mastercard_dk_authorization
96
+ assert response = @gateway.authorize(@amount, @mastercard_dk, @options)
97
+ assert_success response
98
+ assert !response.authorization.blank?
99
+ assert_equal 'MasterCard-DK', response.params['cardtype']
100
+ end
101
+
102
+ def test_successful_american_express_dk_authorization
103
+ assert response = @gateway.authorize(@amount, @amex_dk, @options)
104
+ assert_success response
105
+ assert !response.authorization.blank?
106
+ assert_equal 'AmericanExpress-DK', response.params['cardtype']
107
+ end
108
+
109
+ def test_successful_american_express_authorization
110
+ assert response = @gateway.authorize(@amount, @amex, @options)
111
+ assert_success response
112
+ assert !response.authorization.blank?
113
+ assert_equal 'AmericanExpress', response.params['cardtype']
114
+ end
115
+
116
+ def test_successful_forbrugsforeningen_authorization
117
+ assert response = @gateway.authorize(@amount, @forbrugsforeningen, @options)
118
+ assert_success response
119
+ assert !response.authorization.blank?
120
+ assert_equal 'FBG-1886', response.params['cardtype']
121
+ end
122
+
123
+ def test_unsuccessful_purchase_with_missing_cvv2
124
+ assert response = @gateway.purchase(@amount, @visa_no_cvv2, @options)
125
+ # Quickpay has made the cvd field optional in order to support forbrugsforeningen cards which don't have them
126
+ assert_equal 'OK', response.message
127
+ assert_success response
128
+ assert !response.authorization.blank?
129
+ end
130
+
131
+ def test_successful_authorize_and_capture
132
+ assert auth = @gateway.authorize(@amount, @visa, @options)
133
+ assert_success auth
134
+ assert_equal 'OK', auth.message
135
+ assert auth.authorization
136
+ assert capture = @gateway.capture(@amount, auth.authorization)
137
+ assert_success capture
138
+ assert_equal 'OK', capture.message
139
+ end
140
+
141
+ def test_failed_capture
142
+ assert response = @gateway.capture(@amount, '')
143
+ assert_failure response
144
+ assert_equal 'Missing field: transaction', response.message
145
+ end
146
+
147
+ def test_successful_purchase_and_void
148
+ assert auth = @gateway.authorize(@amount, @visa, @options)
149
+ assert_success auth
150
+ assert_equal 'OK', auth.message
151
+ assert auth.authorization
152
+ assert void = @gateway.void(auth.authorization)
153
+ assert_success void
154
+ assert_equal 'OK', void.message
155
+ end
156
+
157
+ def test_successful_authorization_capture_and_credit
158
+ assert auth = @gateway.authorize(@amount, @visa, @options)
159
+ assert_success auth
160
+ assert capture = @gateway.capture(@amount, auth.authorization)
161
+ assert_success capture
162
+ assert credit = @gateway.credit(@amount, auth.authorization)
163
+ assert_success credit
164
+ assert_equal 'OK', credit.message
165
+ end
166
+
167
+ def test_successful_purchase_and_credit
168
+ assert purchase = @gateway.purchase(@amount, @visa, @options)
169
+ assert_success purchase
170
+ assert credit = @gateway.credit(@amount, purchase.authorization)
171
+ assert_success credit
172
+ end
173
+
174
+ def test_successful_store_and_reference_purchase
175
+ assert store = @gateway.store(@visa, @options.merge(:description => "New subscription"))
176
+ assert_success store
177
+ assert purchase = @gateway.purchase(@amount, store.authorization, @options.merge(:order_id => generate_unique_id[0...10]))
178
+ assert_success purchase
179
+ end
180
+
181
+ def test_invalid_login
182
+ gateway = QuickpayGateway.new(
183
+ :login => '',
184
+ :password => ''
185
+ )
186
+ assert response = gateway.purchase(@amount, @visa, @options)
187
+ assert_equal 'Invalid merchant id', response.message
188
+ assert_failure response
189
+ end
190
+ end
@@ -0,0 +1,224 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteRealexTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = RealexGateway.new(fixtures(:realex))
7
+
8
+ @gateway_with_account = RealexGateway.new(fixtures(:realex_with_account))
9
+
10
+ # Replace the card numbers with the test account numbers from Realex
11
+ @visa = fixtures(:realex_visa)
12
+ @visa_declined = fixtures(:realex_visa_declined)
13
+ @visa_referral_b = fixtures(:realex_visa_referral_b)
14
+ @visa_referral_a = fixtures(:realex_visa_referral_a)
15
+ @visa_coms_error = fixtures(:realex_visa_coms_error)
16
+
17
+ @mastercard = fixtures(:realex_mastercard)
18
+ @mastercard_declined = fixtures(:realex_mastercard_declined)
19
+ @mastercard_referral_b = fixtures(:realex_mastercard_referral_b)
20
+ @mastercard_referral_a = fixtures(:realex_mastercard_referral_a)
21
+ @mastercard_coms_error = fixtures(:realex_mastercard_coms_error)
22
+
23
+ @amount = 10000
24
+ end
25
+
26
+ def test_realex_purchase
27
+ [ @visa, @mastercard ].each do |card|
28
+
29
+ response = @gateway.purchase(@amount, card,
30
+ :order_id => generate_unique_id,
31
+ :description => 'Test Realex Purchase',
32
+ :billing_address => {
33
+ :zip => '90210',
34
+ :country => 'US'
35
+ }
36
+ )
37
+ assert_not_nil response
38
+ assert_success response
39
+ assert response.test?
40
+ assert response.authorization.length > 0
41
+ assert_equal 'Successful', response.message
42
+ end
43
+ end
44
+
45
+ def test_realex_purchase_with_invalid_login
46
+ gateway = RealexGateway.new(
47
+ :login => 'invalid',
48
+ :password => 'invalid'
49
+ )
50
+ response = gateway.purchase(@amount, @visa,
51
+ :order_id => generate_unique_id,
52
+ :description => 'Invalid login test'
53
+ )
54
+
55
+ assert_not_nil response
56
+ assert_failure response
57
+
58
+ assert_equal '504', response.params['result']
59
+ assert_equal "There is no such merchant id. Please contact realex payments if you continue to experience this problem.", response.params['message']
60
+ assert_equal RealexGateway::ERROR, response.message
61
+ end
62
+
63
+ def test_realex_purchase_with_invalid_account
64
+
65
+ response = @gateway_with_account.purchase(@amount, @visa,
66
+ :order_id => generate_unique_id,
67
+ :description => 'Test Realex purchase with invalid acocunt'
68
+ )
69
+
70
+ assert_not_nil response
71
+ assert_failure response
72
+
73
+ assert_equal '506', response.params['result']
74
+ assert_equal "There is no such merchant account. Please contact realex payments if you continue to experience this problem.", response.params['message']
75
+ assert_equal RealexGateway::ERROR, response.message
76
+ end
77
+
78
+ def test_realex_purchase_declined
79
+
80
+ [ @visa_declined, @mastercard_declined ].each do |card|
81
+
82
+ response = @gateway.purchase(@amount, card,
83
+ :order_id => generate_unique_id,
84
+ :description => 'Test Realex purchase declined'
85
+ )
86
+ assert_not_nil response
87
+ assert_failure response
88
+
89
+ assert_equal '101', response.params['result']
90
+ assert_equal response.params['message'], response.message
91
+ end
92
+
93
+ end
94
+
95
+ def test_realex_purchase_referral_b
96
+ [ @visa_referral_b, @mastercard_referral_b ].each do |card|
97
+
98
+ response = @gateway.purchase(@amount, card,
99
+ :order_id => generate_unique_id,
100
+ :description => 'Test Realex Referral B'
101
+ )
102
+ assert_not_nil response
103
+ assert_failure response
104
+ assert response.test?
105
+ assert_equal '102', response.params['result']
106
+ assert_equal RealexGateway::DECLINED, response.message
107
+ end
108
+ end
109
+
110
+ def test_realex_purchase_referral_a
111
+ [ @visa_referral_a, @mastercard_referral_a ].each do |card|
112
+
113
+ response = @gateway.purchase(@amount, card,
114
+ :order_id => generate_unique_id,
115
+ :description => 'Test Realex Rqeferral A'
116
+ )
117
+ assert_not_nil response
118
+ assert_failure response
119
+ assert_equal '103', response.params['result']
120
+ assert_equal RealexGateway::DECLINED, response.message
121
+ end
122
+
123
+ end
124
+
125
+ def test_realex_purchase_coms_error
126
+
127
+ [ @visa_coms_error, @mastercard_coms_error ].each do |card|
128
+
129
+ response = @gateway.purchase(@amount, card,
130
+ :order_id => generate_unique_id,
131
+ :description => 'Test Realex coms error'
132
+ )
133
+
134
+ assert_not_nil response
135
+ assert_failure response
136
+
137
+ assert_equal '205', response.params['result']
138
+ assert_equal RealexGateway::BANK_ERROR, response.message
139
+ end
140
+
141
+ end
142
+
143
+ def test_realex_ccn_error
144
+ @visa.number = 5
145
+
146
+ response = @gateway.purchase(@amount, @visa,
147
+ :order_id => generate_unique_id,
148
+ :description => 'Test Realex ccn error'
149
+ )
150
+ assert_not_nil response
151
+ assert_failure response
152
+
153
+ assert_equal '509', response.params['result']
154
+ assert_equal "Invalid credit card length", response.params['message']
155
+ assert_equal RealexGateway::ERROR, response.message
156
+ end
157
+
158
+ def test_realex_expiry_month_error
159
+ @visa.month = 13
160
+
161
+ response = @gateway.purchase(@amount, @visa,
162
+ :order_id => generate_unique_id,
163
+ :description => 'Test Realex expiry month error'
164
+ )
165
+ assert_not_nil response
166
+ assert_failure response
167
+
168
+ assert_equal '509', response.params['result']
169
+ assert_equal RealexGateway::ERROR, response.message
170
+ end
171
+
172
+
173
+ def test_realex_expiry_year_error
174
+ @visa.year = 2005
175
+
176
+ response = @gateway.purchase(@amount, @visa,
177
+ :order_id => generate_unique_id,
178
+ :description => 'Test Realex expiry year error'
179
+ )
180
+ assert_not_nil response
181
+ assert_failure response
182
+
183
+ assert_equal '509', response.params['result']
184
+ assert_equal RealexGateway::ERROR, response.message
185
+ end
186
+
187
+ def test_invalid_credit_card_name
188
+ @visa.first_name = ""
189
+ @visa.last_name = ""
190
+
191
+ response = @gateway.purchase(@amount, @visa,
192
+ :order_id => generate_unique_id,
193
+ :description => 'test_chname_error'
194
+ )
195
+ assert_not_nil response
196
+ assert_failure response
197
+
198
+ assert_equal '502', response.params['result']
199
+ assert_equal RealexGateway::ERROR, response.message
200
+ end
201
+
202
+ def test_cvn
203
+ @visa_cvn = @visa.clone
204
+ @visa_cvn.verification_value = "111"
205
+ response = @gateway.purchase(@amount, @visa_cvn,
206
+ :order_id => generate_unique_id,
207
+ :description => 'test_cvn'
208
+ )
209
+ assert_not_nil response
210
+ assert_success response
211
+ assert response.authorization.length > 0
212
+ end
213
+
214
+ def test_customer_number
215
+ response = @gateway.purchase(@amount, @visa,
216
+ :order_id => generate_unique_id,
217
+ :description => 'test_cust_num',
218
+ :customer => 'my customer id'
219
+ )
220
+ assert_not_nil response
221
+ assert_success response
222
+ assert response.authorization.length > 0
223
+ end
224
+ end