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,128 @@
1
+ require 'test_helper'
2
+
3
+ class UsaEpayTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = UsaEpayGateway.new(
6
+ :login => 'LOGIN'
7
+ )
8
+
9
+ @credit_card = credit_card('4242424242424242')
10
+ @options = {
11
+ :billing_address => address,
12
+ :shipping_address => address
13
+ }
14
+ @amount = 100
15
+ end
16
+
17
+ def test_successful_request
18
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
19
+
20
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
21
+ assert_success response
22
+ assert_equal '55074409', response.authorization
23
+ assert response.test?
24
+ end
25
+
26
+ def test_unsuccessful_request
27
+ @gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
28
+
29
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
30
+ assert_failure response
31
+ assert response.test?
32
+ end
33
+
34
+ def test_address_key_prefix
35
+ assert_equal 'bill', @gateway.send(:address_key_prefix, :billing)
36
+ assert_equal 'ship', @gateway.send(:address_key_prefix, :shipping)
37
+ assert_nil @gateway.send(:address_key_prefix, :vacation)
38
+ end
39
+
40
+ def test_address_key
41
+ assert_equal :shipfname, @gateway.send(:address_key, 'ship', 'fname')
42
+ end
43
+
44
+ def test_add_address
45
+ post = {}
46
+ @gateway.send(:add_address, post, @credit_card, @options)
47
+ assert_address(:shipping, post)
48
+ assert_equal 20, post.keys.size
49
+ end
50
+
51
+ def test_add_billing_address
52
+ post = {}
53
+ @gateway.send(:add_address, post, @credit_card, @options)
54
+ assert_address(:billing, post)
55
+ assert_equal 20, post.keys.size
56
+ end
57
+
58
+ def test_add_billing_and_shipping_addresses
59
+ post = {}
60
+ @gateway.send(:add_address, post, @credit_card, @options)
61
+ assert_address(:shipping, post)
62
+ assert_address(:billing, post)
63
+ assert_equal 20, post.keys.size
64
+ end
65
+
66
+ def test_amount_style
67
+ assert_equal '10.34', @gateway.send(:amount, 1034)
68
+
69
+ assert_raise(ArgumentError) do
70
+ @gateway.send(:amount, '10.34')
71
+ end
72
+ end
73
+
74
+ def test_supported_countries
75
+ assert_equal ['US'], UsaEpayGateway.supported_countries
76
+ end
77
+
78
+ def test_supported_card_types
79
+ assert_equal [:visa, :master, :american_express], UsaEpayGateway.supported_cardtypes
80
+ end
81
+
82
+ def test_avs_result
83
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
84
+
85
+ response = @gateway.purchase(@amount, @credit_card, @options)
86
+ assert_equal 'Y', response.avs_result['code']
87
+ assert_equal 'Y', response.avs_result['street_match']
88
+ assert_equal 'Y', response.avs_result['postal_match']
89
+ end
90
+
91
+ def test_cvv_result
92
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
93
+
94
+ response = @gateway.purchase(@amount, @credit_card, @options)
95
+ assert_equal 'M', response.cvv_result['code']
96
+ end
97
+
98
+ private
99
+ def assert_address(type, post)
100
+ prefix = key_prefix(type)
101
+ assert_equal @credit_card.first_name, post[key(prefix, 'fname')]
102
+ assert_equal @credit_card.last_name, post[key(prefix, 'lname')]
103
+ assert_equal @options[:billing_address][:company], post[key(prefix, 'company')]
104
+ assert_equal @options[:billing_address][:address1], post[key(prefix, 'street')]
105
+ assert_equal @options[:billing_address][:address2], post[key(prefix, 'street2')]
106
+ assert_equal @options[:billing_address][:city], post[key(prefix, 'city')]
107
+ assert_equal @options[:billing_address][:state], post[key(prefix, 'state')]
108
+ assert_equal @options[:billing_address][:zip], post[key(prefix, 'zip')]
109
+ assert_equal @options[:billing_address][:country], post[key(prefix, 'country')]
110
+ assert_equal @options[:billing_address][:phone], post[key(prefix, 'phone')]
111
+ end
112
+
113
+ def key_prefix(type)
114
+ @gateway.send(:address_key_prefix, type)
115
+ end
116
+
117
+ def key(prefix, key)
118
+ @gateway.send(:address_key, prefix, key)
119
+ end
120
+
121
+ def successful_purchase_response
122
+ "UMversion=2.9&UMstatus=Approved&UMauthCode=001716&UMrefNum=55074409&UMavsResult=Address%3A%20Match%20%26%205%20Digit%20Zip%3A%20Match&UMavsResultCode=YYY&UMcvv2Result=Match&UMcvv2ResultCode=M&UMresult=A&UMvpasResultCode=&UMerror=Approved&UMerrorcode=00000&UMcustnum=&UMbatch=596&UMisDuplicate=N&UMconvertedAmount=&UMconvertedAmountCurrency=840&UMconversionRate=&UMcustReceiptResult=No%20Receipt%20Sent&UMfiller=filled"
123
+ end
124
+
125
+ def unsuccessful_purchase_response
126
+ "UMversion=2.9&UMstatus=Declined&UMauthCode=000000&UMrefNum=55076060&UMavsResult=Address%3A%20Match%20%26%205%20Digit%20Zip%3A%20Match&UMavsResultCode=YYY&UMcvv2Result=Not%20Processed&UMcvv2ResultCode=P&UMvpasResultCode=&UMresult=D&UMerror=Card%20Declined&UMerrorcode=10127&UMbatch=596&UMfiller=filled"
127
+ end
128
+ end
@@ -0,0 +1,96 @@
1
+ require 'test_helper'
2
+
3
+ class VerifiTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing
5
+
6
+ def setup
7
+ @gateway = VerifiGateway.new(
8
+ :login => 'l',
9
+ :password => 'p'
10
+ )
11
+
12
+ @credit_card = credit_card('4111111111111111')
13
+
14
+ @options = {
15
+ :order_id => '37',
16
+ :email => "paul@example.com",
17
+ :billing_address => address
18
+ }
19
+
20
+ @amount = 100
21
+ end
22
+
23
+ def test_successful_request
24
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
25
+
26
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
27
+ assert_success response
28
+ assert_equal '546061538', response.authorization
29
+ assert response.test?
30
+ end
31
+
32
+ def test_unsuccessful_request
33
+ @gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
34
+
35
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
36
+ assert_failure response
37
+ assert response.test?
38
+ end
39
+
40
+ def test_amount_style
41
+ assert_equal '10.34', @gateway.send(:amount, 1034)
42
+
43
+ assert_raise(ArgumentError) do
44
+ @gateway.send(:amount, '10.34')
45
+ end
46
+ end
47
+
48
+ def test_add_description
49
+ result = {}
50
+ @gateway.send(:add_invoice_data, result, :description => 'My Purchase is great')
51
+ assert_equal 'My Purchase is great', result[:orderdescription]
52
+
53
+ end
54
+
55
+ def test_purchase_meets_minimum_requirements
56
+ post = VerifiGateway::VerifiPostData.new
57
+ post[:amount] = "1.01"
58
+
59
+ @gateway.send(:add_credit_card, post, @credit_card)
60
+
61
+ assert data = @gateway.send(:post_data, :authorization, post)
62
+
63
+ minimum_requirements.each do |key|
64
+ assert_not_nil(data =~ /#{key}=/)
65
+ end
66
+
67
+ end
68
+
69
+ def test_avs_result
70
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
71
+
72
+ response = @gateway.purchase(@amount, @credit_card, @options)
73
+ assert_equal 'N', response.avs_result['code']
74
+ end
75
+
76
+ def test_cvv_result
77
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
78
+
79
+ response = @gateway.purchase(@amount, @credit_card, @options)
80
+ assert_equal 'N', response.cvv_result['code']
81
+ end
82
+
83
+ private
84
+
85
+ def minimum_requirements
86
+ %w(type username password ccnumber ccexp amount)
87
+ end
88
+
89
+ def successful_purchase_response
90
+ "response=1&responsetext=SUCCESS&authcode=123456&transactionid=546061538&avsresponse=N&cvvresponse=N&orderid=37&type=sale&response_code=100"
91
+ end
92
+
93
+ def unsuccessful_purchase_response
94
+ "response=3&responsetext=Field required: ccnumber REFID:12109909&authcode=&transactionid=0&avsresponse=&cvvresponse=&orderid=37&type=sale&response_code=300"
95
+ end
96
+ end
@@ -0,0 +1,78 @@
1
+ require 'test_helper'
2
+
3
+ class ViaklixTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = ViaklixGateway.new(
7
+ :login => 'LOGIN',
8
+ :password => 'PIN'
9
+ )
10
+
11
+ @credit_card = credit_card
12
+ @options = {
13
+ :order_id => '37',
14
+ :email => "paul@domain.com",
15
+ :description => 'Test Transaction',
16
+ :billing_address => address
17
+ }
18
+ @amount = 100
19
+ end
20
+
21
+ def test_purchase_success
22
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
23
+
24
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
25
+ assert_instance_of Response, response
26
+ assert_success response
27
+ assert_equal '7E2419F7-2354-4766-BF5C-19C75A1F379A', response.authorization
28
+ end
29
+
30
+ def test_purchase_error
31
+ @gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
32
+
33
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
34
+ assert_instance_of Response, response
35
+ assert_failure response
36
+ end
37
+
38
+ def test_invalid_login
39
+ @gateway.expects(:ssl_post).returns(invalid_login_response)
40
+
41
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
42
+
43
+ assert_equal '7000', response.params['result']
44
+ assert_equal 'The viaKLIX ID and/or User ID supplied in the authorization request is invalid.', response.params['result_message']
45
+ assert_failure response
46
+ end
47
+
48
+ def test_avs_result
49
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
50
+
51
+ response = @gateway.purchase(@amount, @credit_card)
52
+ assert_equal 'Y', response.avs_result['code']
53
+ end
54
+
55
+ def test_cvv_result
56
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
57
+
58
+ response = @gateway.purchase(@amount, @credit_card)
59
+ assert_equal 'M', response.cvv_result['code']
60
+ end
61
+
62
+ private
63
+
64
+ def successful_purchase_response
65
+ "ssl_result=0\r\nssl_company=;\r\nssl_city=Herndon\r\nssl_avs_zip=90201\r\nssl_address2=\r\nssl_ship_to_last_name=Jacobs\r\nssl_ship_to_city=Herndon\r\nssl_approval_code=05737D\r\nssl_avs_response=Y\r\nssl_salestax=\r\nssl_ship_to_phone=\r\ncustomer_code=jacobsr1@cox.net\r\nship_to_country=US\r\ncountry=US\r\nssl_txn_id=7E2419F7-2354-4766-BF5C-19C75A1F379A\r\nssl_transaction_type=SALE\r\nssl_invoice_number=#1158.1\r\nssl_amount=243.95\r\nssl_card_number=43*******6820\r\nssl_description=\r\nssl_phone=703-404-9270\r\nssl_ship_to_avs_address=\r\nssl_first_name=Cody\r\nssl_avs_address=12213 Jonathons Glen Way\r\nssl_result_message=APPROVED\r\nssl_exp_date=1109\r\nssl_last_name=Fauser\r\nssl_ship_to_first_name=Robert\r\nssl_ship_to_address2=\r\nssl_ship_to_state=VA\r\nssl_ship_to_avs_zip=\r\nssl_cvv2_response=M\r\nssl_state=VA\r\nssl_email=cody@example.com\r\nssl_ship_to_company=\r\n"
66
+ end
67
+
68
+ def unsuccessful_purchase_response
69
+ "ssl_result=1\r\nssl_result_message=This transaction request has not been approved. You may elect to use another form of payment to complete this transaction or contact customer service for additional options."
70
+ end
71
+
72
+ def invalid_login_response
73
+ <<-RESPONSE
74
+ ssl_result=7000\r
75
+ ssl_result_message=The viaKLIX ID and/or User ID supplied in the authorization request is invalid.\r
76
+ RESPONSE
77
+ end
78
+ end
@@ -0,0 +1,250 @@
1
+ require 'test_helper'
2
+
3
+ class WirecardTest < Test::Unit::TestCase
4
+ TEST_AUTHORIZATION_GUWID = 'C822580121385121429927'
5
+
6
+ def setup
7
+ @gateway = WirecardGateway.new(:login => '', :password => '', :signature => '')
8
+ @credit_card = credit_card('4200000000000000')
9
+ @declined_card = credit_card('4000300011112220')
10
+ @unsupported_card = credit_card('4200000000000000', :type => :maestro)
11
+
12
+ @amount = 111
13
+
14
+ @options = {
15
+ :order_id => '1',
16
+ :billing_address => address,
17
+ :description => 'Wirecard Purchase',
18
+ :email => 'soleone@example.com'
19
+ }
20
+
21
+ @address_without_state = {
22
+ :name => 'Jim Smith',
23
+ :address1 => '1234 My Street',
24
+ :company => 'Widgets Inc',
25
+ :city => 'Ottawa',
26
+ :zip => 'K12 P2A',
27
+ :country => 'CA',
28
+ :state => nil,
29
+ }
30
+ end
31
+
32
+ def test_successful_authorization
33
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
34
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
35
+ assert_instance_of Response, response
36
+
37
+ assert_success response
38
+ assert response.test?
39
+ assert_equal TEST_AUTHORIZATION_GUWID, response.authorization
40
+ end
41
+
42
+ def test_wrong_credit_card_authorization
43
+ @gateway.expects(:ssl_post).returns(wrong_creditcard_authorization_response)
44
+ assert response = @gateway.authorize(@amount, @declined_card, @options)
45
+ assert_instance_of Response, response
46
+
47
+ assert_failure response
48
+ assert response.test?
49
+ assert_false response.authorization
50
+ assert response.message[/credit card number not allowed in demo mode/i]
51
+ end
52
+
53
+ def test_successful_authorization_and_capture
54
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
55
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
56
+ assert_success response
57
+ assert_equal TEST_AUTHORIZATION_GUWID, response.authorization
58
+
59
+ @gateway.expects(:ssl_post).returns(successful_capture_response)
60
+ assert response = @gateway.capture(@amount, response.authorization, @options)
61
+ assert_success response
62
+ assert response.test?
63
+ assert response.message[/this is a demo/i]
64
+ end
65
+
66
+ def test_unauthorized_capture
67
+ @gateway.expects(:ssl_post).returns(unauthorized_capture_response)
68
+ assert response = @gateway.capture(@amount, "1234567890123456789012", @options)
69
+
70
+ assert_failure response
71
+ assert response.message["Could not find referenced transaction for GuWID 1234567890123456789012."]
72
+ end
73
+
74
+ def test_doesnt_raise_an_error_if_no_state_is_provided_in_address
75
+ options = @options.merge(:billing_address => @address_without_state)
76
+ @gateway.expects(:ssl_post).returns(unauthorized_capture_response)
77
+ assert_nothing_raised do
78
+ @gateway.authorize(@amount, @credit_card, options)
79
+ end
80
+ end
81
+
82
+ private
83
+
84
+ # Authorization success
85
+ def successful_authorization_response
86
+ <<-XML
87
+ <?xml version="1.0" encoding="UTF-8"?>
88
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
89
+ <W_RESPONSE>
90
+ <W_JOB>
91
+ <JobID>test dummy data</JobID>
92
+ <FNC_CC_AUTHORIZATION>
93
+ <FunctionID>Wirecard remote test purchase</FunctionID>
94
+ <CC_TRANSACTION>
95
+ <TransactionID>1</TransactionID>
96
+ <PROCESSING_STATUS>
97
+ <GuWID>C822580121385121429927</GuWID>
98
+ <AuthorizationCode>709678</AuthorizationCode>
99
+ <Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
100
+ <StatusType>INFO</StatusType>
101
+ <FunctionResult>ACK</FunctionResult>
102
+ <TimeStamp>2008-06-19 06:53:33</TimeStamp>
103
+ </PROCESSING_STATUS>
104
+ </CC_TRANSACTION>
105
+ </FNC_CC_AUTHORIZATION>
106
+ </W_JOB>
107
+ </W_RESPONSE>
108
+ </WIRECARD_BXML>
109
+ XML
110
+ end
111
+
112
+ # Authorization failure
113
+ # TODO: replace with real xml string here (current way seems to complicated)
114
+ def wrong_creditcard_authorization_response
115
+ error = <<-XML
116
+ <ERROR>
117
+ <Type>DATA_ERROR</Type>
118
+ <Number>24997</Number>
119
+ <Message>Credit card number not allowed in demo mode.</Message>
120
+ <Advice>Only demo card number '4200000000000000' is allowed for VISA in demo mode.</Advice>
121
+ </ERROR>
122
+ XML
123
+ result_node = '</FunctionResult>'
124
+ auth = 'AuthorizationCode'
125
+ successful_authorization_response.gsub('ACK', 'NOK') \
126
+ .gsub(result_node, result_node + error) \
127
+ .gsub(/<#{auth}>\w+<\/#{auth}>/, "<#{auth}><\/#{auth}>") \
128
+ .gsub(/<Info>.+<\/Info>/, '')
129
+ end
130
+
131
+ # Capture success
132
+ def successful_capture_response
133
+ <<-XML
134
+ <?xml version="1.0" encoding="UTF-8"?>
135
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
136
+ <W_RESPONSE>
137
+ <W_JOB>
138
+ <JobID>test dummy data</JobID>
139
+ <FNC_CC_CAPTURE_AUTHORIZATION>
140
+ <FunctionID>Wirecard remote test purchase</FunctionID>
141
+ <CC_TRANSACTION>
142
+ <TransactionID>1</TransactionID>
143
+ <PROCESSING_STATUS>
144
+ <GuWID>C833707121385268439116</GuWID>
145
+ <AuthorizationCode>915025</AuthorizationCode>
146
+ <Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
147
+ <StatusType>INFO</StatusType>
148
+ <FunctionResult>ACK</FunctionResult>
149
+ <TimeStamp>2008-06-19 07:18:04</TimeStamp>
150
+ </PROCESSING_STATUS>
151
+ </CC_TRANSACTION>
152
+ </FNC_CC_CAPTURE_AUTHORIZATION>
153
+ </W_JOB>
154
+ </W_RESPONSE>
155
+ </WIRECARD_BXML>
156
+ XML
157
+ end
158
+
159
+ # Capture failure
160
+ def unauthorized_capture_response
161
+ <<-XML
162
+ <?xml version="1.0" encoding="UTF-8"?>
163
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
164
+ <W_RESPONSE>
165
+ <W_JOB>
166
+ <JobID>test dummy data</JobID>
167
+ <FNC_CC_CAPTURE_AUTHORIZATION>
168
+ <FunctionID>Test dummy FunctionID</FunctionID>
169
+ <CC_TRANSACTION>
170
+ <TransactionID>a2783d471ccc98825b8c498f1a62ce8f</TransactionID>
171
+ <PROCESSING_STATUS>
172
+ <GuWID>C865683121385576058270</GuWID>
173
+ <AuthorizationCode></AuthorizationCode>
174
+ <StatusType>INFO</StatusType>
175
+ <FunctionResult>NOK</FunctionResult>
176
+ <ERROR>
177
+ <Type>DATA_ERROR</Type>
178
+ <Number>20080</Number>
179
+ <Message>Could not find referenced transaction for GuWID 1234567890123456789012.</Message>
180
+ </ERROR>
181
+ <TimeStamp>2008-06-19 08:09:20</TimeStamp>
182
+ </PROCESSING_STATUS>
183
+ </CC_TRANSACTION>
184
+ </FNC_CC_CAPTURE_AUTHORIZATION>
185
+ </W_JOB>
186
+ </W_RESPONSE>
187
+ </WIRECARD_BXML>
188
+ XML
189
+ end
190
+
191
+ # Purchase success
192
+ def successful_purchase_response
193
+ <<-XML
194
+ <?xml version="1.0" encoding="UTF-8"?>
195
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
196
+ <W_RESPONSE>
197
+ <W_JOB>
198
+ <JobID>test dummy data</JobID>
199
+ <FNC_CC_PURCHASE>
200
+ <FunctionID>Wirecard remote test purchase</FunctionID>
201
+ <CC_TRANSACTION>
202
+ <TransactionID>1</TransactionID>
203
+ <PROCESSING_STATUS>
204
+ <GuWID>C865402121385575982910</GuWID>
205
+ <AuthorizationCode>531750</AuthorizationCode>
206
+ <Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
207
+ <StatusType>INFO</StatusType>
208
+ <FunctionResult>ACK</FunctionResult>
209
+ <TimeStamp>2008-06-19 08:09:19</TimeStamp>
210
+ </PROCESSING_STATUS>
211
+ </CC_TRANSACTION>
212
+ </FNC_CC_PURCHASE>
213
+ </W_JOB>
214
+ </W_RESPONSE>
215
+ </WIRECARD_BXML>
216
+ XML
217
+ end
218
+
219
+ # Purchase failure
220
+ def wrong_creditcard_purchase_response
221
+ <<-XML
222
+ <?xml version="1.0" encoding="UTF-8"?>
223
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
224
+ <W_RESPONSE>
225
+ <W_JOB>
226
+ <JobID>test dummy data</JobID>
227
+ <FNC_CC_PURCHASE>
228
+ <FunctionID>Wirecard remote test purchase</FunctionID>
229
+ <CC_TRANSACTION>
230
+ <TransactionID>1</TransactionID>
231
+ <PROCESSING_STATUS>
232
+ <GuWID>C824697121385153203112</GuWID>
233
+ <AuthorizationCode></AuthorizationCode>
234
+ <StatusType>INFO</StatusType>
235
+ <FunctionResult>NOK</FunctionResult>
236
+ <ERROR>
237
+ <Type>DATA_ERROR</Type> <Number>24997</Number>
238
+ <Message>Credit card number not allowed in demo mode.</Message>
239
+ <Advice>Only demo card number '4200000000000000' is allowed for VISA in demo mode.</Advice>
240
+ </ERROR>
241
+ <TimeStamp>2008-06-19 06:58:51</TimeStamp>
242
+ </PROCESSING_STATUS>
243
+ </CC_TRANSACTION>
244
+ </FNC_CC_PURCHASE>
245
+ </W_JOB>
246
+ </W_RESPONSE>
247
+ </WIRECARD_BXML>
248
+ XML
249
+ end
250
+ end