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,44 @@
1
+ require 'test_helper'
2
+
3
+ class SecurePayTechTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = SecurePayTechGateway.new(
6
+ :login => 'x',
7
+ :password => 'y'
8
+ )
9
+
10
+ @amount = 100
11
+ @credit_card = credit_card('4987654321098769')
12
+ @options = {
13
+ :billing_address => address
14
+ }
15
+ end
16
+
17
+ def test_successful_purchase
18
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
19
+
20
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
21
+ assert_instance_of Response, response
22
+ assert_success response
23
+ assert response.test?
24
+ assert_equal '4--120119220646821', response.authorization
25
+ end
26
+
27
+ def test_unsuccessful_purchase
28
+ @gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
29
+
30
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
31
+ assert_instance_of Response, response
32
+ assert_failure response
33
+ assert response.test?
34
+ end
35
+
36
+ private
37
+ def successful_purchase_response
38
+ "1,4--120119220646821,000000014511,23284,014511,20080125\r\n"
39
+ end
40
+
41
+ def unsuccessful_purchase_response
42
+ "4,4--120119180936527,000000014510,23283,014510,20080125\r\n"
43
+ end
44
+ end
@@ -0,0 +1,87 @@
1
+ require 'test_helper'
2
+
3
+ class SecurePayTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = SecurePayGateway.new(
7
+ :login => 'X',
8
+ :password => 'Y'
9
+ )
10
+
11
+ @credit_card = credit_card
12
+
13
+ @options = {
14
+ :order_id => generate_unique_id,
15
+ :description => 'Store purchase',
16
+ :billing_address => address
17
+ }
18
+
19
+ @amount = 100
20
+ end
21
+
22
+ def test_failed_purchase
23
+ @gateway.stubs(:ssl_post).returns(failure_response)
24
+
25
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
26
+ assert_failure response
27
+ assert response.test?
28
+ assert_equal 'This transaction has been declined', response.message
29
+ assert_equal '3377475', response.authorization
30
+ end
31
+
32
+ def test_successful_purchase
33
+ @gateway.stubs(:ssl_post).returns(successful_purchase_response)
34
+
35
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
36
+ assert_success response
37
+ assert response.test?
38
+ assert_equal 'This transaction has been approved', response.message
39
+ assert response.authorization
40
+ end
41
+
42
+
43
+ def test_avs_result
44
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
45
+
46
+ response = @gateway.purchase(@amount, @credit_card)
47
+ assert_equal 'X', response.avs_result['code']
48
+ end
49
+
50
+ def test_cvv_result_not_supported
51
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
52
+
53
+ response = @gateway.purchase(@amount, @credit_card)
54
+ assert_nil response.cvv_result['code']
55
+ end
56
+
57
+
58
+ def test_undefine_unsupported_methods
59
+ assert @gateway.respond_to?(:purchase)
60
+
61
+ [ :authorize, :capture, :void, :credit ].each do |m|
62
+ assert !@gateway.respond_to?(m)
63
+ end
64
+ end
65
+
66
+ def test_supported_countries_are_inherited
67
+ assert_equal AuthorizeNetGateway.supported_countries, SecurePayGateway.supported_countries
68
+ end
69
+
70
+ def test_supported_card_types_are_inherited
71
+ assert_equal AuthorizeNetGateway.supported_cardtypes, SecurePayGateway.supported_cardtypes
72
+ end
73
+
74
+ private
75
+
76
+ def successful_purchase_response
77
+ '1%%1%This transaction has been approved.%100721%X%3377575%f6af895031c07d88399ed9fdb48c8476%Store+purchase%0.01%%AUTH_CAPTURE%%Cody%Fauser%%100+Example+St.%Ottawa%ON%K2A5P7%Canada%%%%%%%%%%%%%%%%%%%'
78
+ end
79
+
80
+ def failure_response
81
+ '2%%2%This transaction has been declined.%NOT APPROVED%U%3377475%55adbbaed13aa7e2526846d672fdb594%Store+purchase%1.00%%AUTH_CAPTURE%%Longbob%Longsen%%1234+Test+St.%Ottawa%ON%K1N5P8%Canada%%%%%%%%%%%%%%%%%%%'
82
+ end
83
+
84
+ def failed_capture_response
85
+ '3%%6%The credit card number is invalid.%%%%%%0.01%%PRIOR_AUTH_CAPTURE%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
86
+ end
87
+ end
@@ -0,0 +1,133 @@
1
+ require 'test_helper'
2
+
3
+ class SkipJackTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ Base.gateway_mode = :test
7
+
8
+ @gateway = SkipJackGateway.new(:login => 'X', :password => 'Y')
9
+
10
+ @credit_card = credit_card('4242424242424242')
11
+
12
+ @billing_address = {
13
+ :address1 => '123 Any St.',
14
+ :address2 => 'Apt. B',
15
+ :city => 'Anytown',
16
+ :state => 'ST',
17
+ :country => 'US',
18
+ :zip => '51511-1234',
19
+ :phone => '616-555-1212',
20
+ :fax => '616-555-2121'
21
+ }
22
+
23
+ @shipping_address = {
24
+ :name => 'Stew Packman',
25
+ :address1 => 'Company',
26
+ :address2 => '321 No RD',
27
+ :city => 'Nowhereton',
28
+ :state => 'ZC',
29
+ :country => 'MX',
30
+ :phone => '0123231212'
31
+ }
32
+
33
+ @options = {
34
+ :order_id => 1,
35
+ :email => 'cody@example.com'
36
+ }
37
+
38
+ @amount = 100
39
+ end
40
+
41
+ def test_authorization_success
42
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
43
+
44
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
45
+ assert_instance_of Response, response
46
+ assert_success response
47
+ assert_equal '9802853155172.022', response.authorization
48
+ end
49
+
50
+ def test_authorization_failure
51
+ @gateway.expects(:ssl_post).returns(unsuccessful_authorization_response)
52
+
53
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
54
+ assert_instance_of Response, response
55
+ assert_failure response
56
+ end
57
+
58
+ def test_purchase_success
59
+ @gateway.expects(:ssl_post).times(2).returns(successful_authorization_response, successful_capture_response)
60
+
61
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
62
+ assert_success response
63
+ assert_equal "9802853155172.022", response.authorization
64
+ end
65
+
66
+ def test_purchase_failure
67
+ @gateway.expects(:ssl_post).returns(unsuccessful_authorization_response)
68
+
69
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
70
+ assert_instance_of Response, response
71
+ assert_failure response
72
+ end
73
+
74
+ def test_split_line
75
+ keys = @gateway.send(:split_line, '"AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsApproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileName","szCAVVResponseCode"')
76
+
77
+ values = @gateway.send(:split_line, '"000067","999888777666","1900","","N","Card authorized, exact address match with 5 digit zipcode.","1","000067","1","","","1","10138083786558.009",""')
78
+
79
+ assert_equal keys.size, values.size
80
+
81
+ keyvals = keys.zip(values).flatten
82
+ map = Hash[*keyvals]
83
+
84
+ assert_equal '000067', map['AUTHCODE']
85
+ end
86
+
87
+ def test_turn_authorizeapi_response_into_hash
88
+ body = <<-EOS
89
+ "AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsApproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileName","szCAVVResponseCode"
90
+ "000067","999888777666","1900","","N","Card authorized, exact address match with 5 digit zipcode.","1","000067","1","","","1","10138083786558.009",""
91
+ EOS
92
+
93
+ map = @gateway.send(:authorize_response_map, body)
94
+
95
+ assert_equal 14, map.keys.size
96
+ assert_equal '10138083786558.009', map[:szTransactionFileName]
97
+ end
98
+
99
+ def test_avs_result
100
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
101
+
102
+ response = @gateway.authorize(@amount, @credit_card, @options)
103
+ assert_equal 'Y', response.avs_result['code']
104
+ end
105
+
106
+ def test_cvv_result
107
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
108
+
109
+ response = @gateway.authorize(@amount, @credit_card, @options)
110
+ assert_equal 'M', response.cvv_result['code']
111
+ end
112
+
113
+ private
114
+ def successful_authorization_response
115
+ <<-CSV
116
+ "AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsApproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileName","szCAVVResponseCode"
117
+ "TAS204","000386891209","100","","Y","Card authorized, exact address match with 5 digit zip code.","107a0fdb21ba42cf04f60274908085ea","TAS204","1","M","Match","1","9802853155172.022",""
118
+ CSV
119
+ end
120
+
121
+ def successful_capture_response
122
+ <<-CSV
123
+ "000386891209","0","1","","","","","","","","",""
124
+ "000386891209","1.0000","SETTLE","SUCCESSFUL","Valid","618844630c5fad658e95abfd5e1d4e22","9802853156029.022"
125
+ CSV
126
+ end
127
+
128
+ def unsuccessful_authorization_response
129
+ <<-CSV
130
+ "AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsApproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileName","szCAVVResponseCode"\r\n"EMPTY","000386891209","100","","","","b1eec256d0182f29375e0cbae685092d","","0","","","-35","",""
131
+ CSV
132
+ end
133
+ end
@@ -0,0 +1,112 @@
1
+ require 'test_helper'
2
+
3
+ class TransFirstTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = TransFirstGateway.new(
7
+ :login => 'LOGIN',
8
+ :password => 'PASSWORD'
9
+ )
10
+
11
+ @credit_card = credit_card('4242424242424242')
12
+ @options = {
13
+ :billing_address => address
14
+ }
15
+ @amount = 100
16
+ end
17
+
18
+ def test_missing_field_response
19
+ @gateway.stubs(:ssl_post).returns(missing_field_response)
20
+
21
+ response = @gateway.purchase(@amount, @credit_card, @options)
22
+
23
+ assert_failure response
24
+ assert response.test?
25
+ assert_equal 'Missing parameter: UserId.', response.message
26
+ end
27
+
28
+ def test_successful_purchase
29
+ @gateway.stubs(:ssl_post).returns(successful_purchase_response)
30
+
31
+ response = @gateway.purchase(@amount, @credit_card, @options)
32
+
33
+ assert_success response
34
+ assert response.test?
35
+ assert_equal 'test transaction', response.message
36
+ assert_equal '355', response.authorization
37
+ end
38
+
39
+ def test_failed_purchase
40
+ @gateway.stubs(:ssl_post).returns(failed_purchase_response)
41
+
42
+ response = @gateway.purchase(@amount, @credit_card, @options)
43
+
44
+ assert_failure response
45
+ assert response.test?
46
+ assert_equal '29005716', response.authorization
47
+ assert_equal 'Invalid cardholder number', response.message
48
+ end
49
+
50
+ def test_avs_result
51
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
52
+
53
+ response = @gateway.purchase(@amount, @credit_card, @options)
54
+ assert_equal 'X', response.avs_result['code']
55
+ end
56
+
57
+ def test_cvv_result
58
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
59
+
60
+ response = @gateway.purchase(@amount, @credit_card, @options)
61
+ assert_equal 'M', response.cvv_result['code']
62
+ end
63
+
64
+ private
65
+ def missing_field_response
66
+ "Missing parameter: UserId.\r\n"
67
+ end
68
+
69
+ def successful_purchase_response
70
+ <<-XML
71
+ <?xml version="1.0" encoding="utf-8"?>
72
+ <CCSaleDebitResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.paymentresources.com/webservices/">
73
+ <TransID>355</TransID>
74
+ <RefID>c2535abbf0bb38005a14fd575553df65</RefID>
75
+ <Amount>1.00</Amount>
76
+ <AuthCode>Test00</AuthCode>
77
+ <Status>Authorized</Status>
78
+ <AVSCode>X</AVSCode>
79
+ <Message>test transaction</Message>
80
+ <CVV2Code>M</CVV2Code>
81
+ <ACI />
82
+ <AuthSource />
83
+ <TransactionIdentifier />
84
+ <ValidationCode />
85
+ <CAVVResultCode />
86
+ </CCSaleDebitResponse>
87
+ XML
88
+ end
89
+
90
+ def failed_purchase_response
91
+ <<-XML
92
+ <?xml version="1.0" encoding="utf-8" ?>
93
+ <CCSaleDebitResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.paymentresources.com/webservices/">
94
+ <TransID>29005716</TransID>
95
+ <RefID>0610</RefID>
96
+ <PostedDate>2005-09-29T15:16:23.7297658-07:00</PostedDate>
97
+ <SettledDate>2005-09-29T15:16:23.9641468-07:00</SettledDate>
98
+ <Amount>0.02</Amount>
99
+ <AuthCode />
100
+ <Status>Declined</Status>
101
+ <AVSCode />
102
+ <Message>Invalid cardholder number</Message>
103
+ <CVV2Code />
104
+ <ACI />
105
+ <AuthSource />
106
+ <TransactionIdentifier />
107
+ <ValidationCode />
108
+ <CAVVResultCode />
109
+ </CCSaleDebitResponse>
110
+ XML
111
+ end
112
+ end
@@ -0,0 +1,90 @@
1
+ require 'test_helper'
2
+
3
+ class TrustCommerceTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = TrustCommerceGateway.new(
6
+ :login => 'TestMerchant',
7
+ :password => 'password'
8
+ )
9
+ # Force SSL post
10
+ @gateway.stubs(:tclink?).returns(false)
11
+
12
+ @amount = 100
13
+ @credit_card = credit_card('4111111111111111')
14
+ end
15
+
16
+ def test_successful_purchase
17
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
18
+ assert response = @gateway.purchase(@amount, @credit_card)
19
+ assert_instance_of Response, response
20
+ assert_success response
21
+ assert_equal '025-0007423614', response.authorization
22
+ end
23
+
24
+ def test_unsuccessful_purchase
25
+ @gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
26
+ assert response = @gateway.purchase(@amount, @credit_card)
27
+ assert_instance_of Response, response
28
+ assert_failure response
29
+ end
30
+
31
+ def test_amount_style
32
+ assert_equal '1034', @gateway.send(:amount, 1034)
33
+
34
+ assert_raise(ArgumentError) do
35
+ @gateway.send(:amount, '10.34')
36
+ end
37
+ end
38
+
39
+ def test_avs_result
40
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
41
+
42
+ response = @gateway.purchase(@amount, @credit_card)
43
+ assert_equal 'Y', response.avs_result['code']
44
+ end
45
+
46
+ def test_cvv_result
47
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
48
+
49
+ response = @gateway.purchase(@amount, @credit_card)
50
+ assert_equal 'P', response.cvv_result['code']
51
+ end
52
+
53
+ def test_supported_countries
54
+ assert_equal ['US'], TrustCommerceGateway.supported_countries
55
+ end
56
+
57
+ def test_supported_card_types
58
+ assert_equal [:visa, :master, :discover, :american_express, :diners_club, :jcb], TrustCommerceGateway.supported_cardtypes
59
+ end
60
+
61
+ def test_test_flag_should_be_set_when_using_test_login_in_production
62
+ Base.gateway_mode = :production
63
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
64
+ assert response = @gateway.purchase(@amount, @credit_card)
65
+ assert_success response
66
+ assert response.test?
67
+ ensure
68
+ Base.gateway_mode = :test
69
+ end
70
+
71
+ private
72
+
73
+ def successful_purchase_response
74
+ <<-RESPONSE
75
+ transid=025-0007423614
76
+ status=approved
77
+ avs=Y
78
+ cvv=P
79
+ RESPONSE
80
+ end
81
+
82
+ def unsuccessful_purchase_response
83
+ <<-RESPONSE
84
+ transid=025-0007423827
85
+ declinetype=cvv
86
+ status=decline
87
+ cvv=N
88
+ RESPONSE
89
+ end
90
+ end