ghazel-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 (296) hide show
  1. data/CHANGELOG +473 -0
  2. data/CONTRIBUTORS +126 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README +135 -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 +736 -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/jetpay.rb +270 -0
  36. data/lib/active_merchant/billing/gateways/linkpoint.rb +449 -0
  37. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  38. data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
  39. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  40. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  41. data/lib/active_merchant/billing/gateways/moneris.rb +205 -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 +279 -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 +326 -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/paypal_express_recurring.rb +310 -0
  62. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  63. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  64. data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
  65. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  66. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  67. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  68. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  69. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +116 -0
  70. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  71. data/lib/active_merchant/billing/gateways/sage_pay.rb +308 -0
  72. data/lib/active_merchant/billing/gateways/sallie_mae.rb +144 -0
  73. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  74. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  75. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  76. data/lib/active_merchant/billing/gateways/skip_jack.rb +452 -0
  77. data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
  78. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  79. data/lib/active_merchant/billing/gateways/transax.rb +26 -0
  80. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  81. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  82. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  83. data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
  84. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  85. data/lib/active_merchant/billing/integrations.rb +22 -0
  86. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  87. data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
  88. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  89. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  90. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  91. data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
  92. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
  93. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
  94. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  95. data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
  96. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  97. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  98. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
  99. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  100. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  101. data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
  102. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  103. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  104. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  105. data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
  106. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  107. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  108. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  109. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  110. data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
  111. data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -0
  112. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  113. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  114. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  115. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  116. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  117. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  118. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  119. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  120. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  121. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  122. data/lib/active_merchant/billing/response.rb +32 -0
  123. data/lib/active_merchant/lib/connection.rb +170 -0
  124. data/lib/active_merchant/lib/country.rb +319 -0
  125. data/lib/active_merchant/lib/error.rb +4 -0
  126. data/lib/active_merchant/lib/post_data.rb +22 -0
  127. data/lib/active_merchant/lib/posts_data.rb +47 -0
  128. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  129. data/lib/active_merchant/lib/utils.rb +18 -0
  130. data/lib/active_merchant/lib/validateable.rb +76 -0
  131. data/lib/certs/cacert.pem +7815 -0
  132. data/lib/support/gateway_support.rb +58 -0
  133. data/script/destroy +14 -0
  134. data/script/generate +14 -0
  135. data/test/fixtures.yml +355 -0
  136. data/test/remote/gateways/remote_authorize_net_cim_test.rb +460 -0
  137. data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
  138. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  139. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  140. data/test/remote/gateways/remote_braintree_test.rb +154 -0
  141. data/test/remote/gateways/remote_card_stream_test.rb +148 -0
  142. data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
  143. data/test/remote/gateways/remote_data_cash_test.rb +357 -0
  144. data/test/remote/gateways/remote_efsnet_test.rb +81 -0
  145. data/test/remote/gateways/remote_elavon_test.rb +66 -0
  146. data/test/remote/gateways/remote_eway_test.rb +74 -0
  147. data/test/remote/gateways/remote_exact_test.rb +60 -0
  148. data/test/remote/gateways/remote_first_pay_test.rb +87 -0
  149. data/test/remote/gateways/remote_instapay_test.rb +61 -0
  150. data/test/remote/gateways/remote_jetpay_test.rb +103 -0
  151. data/test/remote/gateways/remote_linkpoint_test.rb +121 -0
  152. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
  153. data/test/remote/gateways/remote_merchant_ware_test.rb +113 -0
  154. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  155. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  156. data/test/remote/gateways/remote_moneris_test.rb +82 -0
  157. data/test/remote/gateways/remote_net_registry_test.rb +85 -0
  158. data/test/remote/gateways/remote_netbilling_test.rb +70 -0
  159. data/test/remote/gateways/remote_ogone_test.rb +115 -0
  160. data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
  161. data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
  162. data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
  163. data/test/remote/gateways/remote_payflow_test.rb +237 -0
  164. data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
  165. data/test/remote/gateways/remote_payment_express_test.rb +136 -0
  166. data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
  167. data/test/remote/gateways/remote_paypal_test.rb +191 -0
  168. data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
  169. data/test/remote/gateways/remote_psigate_test.rb +50 -0
  170. data/test/remote/gateways/remote_psl_card_test.rb +125 -0
  171. data/test/remote/gateways/remote_quickpay_test.rb +190 -0
  172. data/test/remote/gateways/remote_realex_test.rb +224 -0
  173. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  174. data/test/remote/gateways/remote_sage_pay_test.rb +219 -0
  175. data/test/remote/gateways/remote_sage_test.rb +87 -0
  176. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  177. data/test/remote/gateways/remote_sallie_mae_test.rb +51 -0
  178. data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
  179. data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
  180. data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
  181. data/test/remote/gateways/remote_skipjack_test.rb +105 -0
  182. data/test/remote/gateways/remote_trans_first_test.rb +34 -0
  183. data/test/remote/gateways/remote_transax_test.rb +112 -0
  184. data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
  185. data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
  186. data/test/remote/gateways/remote_verifi_test.rb +107 -0
  187. data/test/remote/gateways/remote_viaklix_test.rb +43 -0
  188. data/test/remote/gateways/remote_wirecard_test.rb +111 -0
  189. data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
  190. data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
  191. data/test/test_helper.rb +182 -0
  192. data/test/unit/avs_result_test.rb +59 -0
  193. data/test/unit/base_test.rb +55 -0
  194. data/test/unit/check_test.rb +88 -0
  195. data/test/unit/connection_test.rb +129 -0
  196. data/test/unit/country_code_test.rb +33 -0
  197. data/test/unit/country_test.rb +64 -0
  198. data/test/unit/credit_card_formatting_test.rb +19 -0
  199. data/test/unit/credit_card_methods_test.rb +179 -0
  200. data/test/unit/credit_card_test.rb +318 -0
  201. data/test/unit/cvv_result_test.rb +33 -0
  202. data/test/unit/expiry_date_test.rb +32 -0
  203. data/test/unit/gateways/authorize_net_cim_test.rb +676 -0
  204. data/test/unit/gateways/authorize_net_test.rb +290 -0
  205. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  206. data/test/unit/gateways/beanstream_test.rb +108 -0
  207. data/test/unit/gateways/bogus_test.rb +46 -0
  208. data/test/unit/gateways/braintree_test.rb +126 -0
  209. data/test/unit/gateways/card_stream_test.rb +90 -0
  210. data/test/unit/gateways/cyber_source_test.rb +188 -0
  211. data/test/unit/gateways/data_cash_test.rb +133 -0
  212. data/test/unit/gateways/efsnet_test.rb +123 -0
  213. data/test/unit/gateways/elavon_test.rb +139 -0
  214. data/test/unit/gateways/eway_test.rb +118 -0
  215. data/test/unit/gateways/exact_test.rb +156 -0
  216. data/test/unit/gateways/first_pay_test.rb +125 -0
  217. data/test/unit/gateways/gateway_test.rb +48 -0
  218. data/test/unit/gateways/instapay_test.rb +102 -0
  219. data/test/unit/gateways/jetpay_test.rb +185 -0
  220. data/test/unit/gateways/linkpoint_test.rb +184 -0
  221. data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
  222. data/test/unit/gateways/merchant_ware_test.rb +188 -0
  223. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  224. data/test/unit/gateways/moneris_test.rb +158 -0
  225. data/test/unit/gateways/net_registry_test.rb +416 -0
  226. data/test/unit/gateways/netbilling_test.rb +54 -0
  227. data/test/unit/gateways/ogone_test.rb +319 -0
  228. data/test/unit/gateways/pay_junction_test.rb +123 -0
  229. data/test/unit/gateways/pay_secure_test.rb +71 -0
  230. data/test/unit/gateways/payflow_express_test.rb +173 -0
  231. data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
  232. data/test/unit/gateways/payflow_test.rb +305 -0
  233. data/test/unit/gateways/payflow_uk_test.rb +30 -0
  234. data/test/unit/gateways/payment_express_test.rb +195 -0
  235. data/test/unit/gateways/paypal_express_test.rb +382 -0
  236. data/test/unit/gateways/paypal_test.rb +569 -0
  237. data/test/unit/gateways/plugnpay_test.rb +86 -0
  238. data/test/unit/gateways/psigate_test.rb +169 -0
  239. data/test/unit/gateways/psl_card_test.rb +64 -0
  240. data/test/unit/gateways/quickpay_test.rb +112 -0
  241. data/test/unit/gateways/realex_test.rb +151 -0
  242. data/test/unit/gateways/sage_bankcard_test.rb +196 -0
  243. data/test/unit/gateways/sage_pay_test.rb +139 -0
  244. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  245. data/test/unit/gateways/sallie_mae_test.rb +53 -0
  246. data/test/unit/gateways/secure_pay_au_test.rb +207 -0
  247. data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
  248. data/test/unit/gateways/secure_pay_test.rb +87 -0
  249. data/test/unit/gateways/skip_jack_test.rb +213 -0
  250. data/test/unit/gateways/trans_first_test.rb +112 -0
  251. data/test/unit/gateways/trust_commerce_test.rb +90 -0
  252. data/test/unit/gateways/usa_epay_test.rb +128 -0
  253. data/test/unit/gateways/verifi_test.rb +96 -0
  254. data/test/unit/gateways/viaklix_test.rb +78 -0
  255. data/test/unit/gateways/wirecard_test.rb +250 -0
  256. data/test/unit/generators/test_gateway_generator.rb +46 -0
  257. data/test/unit/generators/test_generator_helper.rb +20 -0
  258. data/test/unit/generators/test_integration_generator.rb +53 -0
  259. data/test/unit/integrations/action_view_helper_test.rb +50 -0
  260. data/test/unit/integrations/bogus_module_test.rb +20 -0
  261. data/test/unit/integrations/chronopay_module_test.rb +13 -0
  262. data/test/unit/integrations/gestpay_module_test.rb +14 -0
  263. data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
  264. data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
  265. data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
  266. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
  267. data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
  268. data/test/unit/integrations/helpers/paypal_helper_test.rb +171 -0
  269. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  270. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
  271. data/test/unit/integrations/hi_trust_module_test.rb +13 -0
  272. data/test/unit/integrations/nochex_module_test.rb +13 -0
  273. data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
  274. data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
  275. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
  276. data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
  277. data/test/unit/integrations/notifications/notification_test.rb +54 -0
  278. data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
  279. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  280. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
  281. data/test/unit/integrations/paypal_module_test.rb +28 -0
  282. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  283. data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
  284. data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
  285. data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
  286. data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
  287. data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
  288. data/test/unit/integrations/returns/return_test.rb +11 -0
  289. data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
  290. data/test/unit/integrations/two_checkout_module_test.rb +13 -0
  291. data/test/unit/post_data_test.rb +55 -0
  292. data/test/unit/posts_data_test.rb +48 -0
  293. data/test/unit/response_test.rb +28 -0
  294. data/test/unit/utils_test.rb +7 -0
  295. data/test/unit/validateable_test.rb +60 -0
  296. metadata +368 -0
@@ -0,0 +1,207 @@
1
+ require 'test_helper'
2
+
3
+ class SecurePayAuTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = SecurePayAuGateway.new(
6
+ :login => 'login',
7
+ :password => 'password'
8
+ )
9
+
10
+ @credit_card = credit_card
11
+ @amount = 100
12
+
13
+ @options = {
14
+ :order_id => '1',
15
+ :billing_address => address,
16
+ :description => 'Store Purchase'
17
+ }
18
+ end
19
+
20
+ def test_successful_purchase_with_live_data
21
+ @gateway.expects(:ssl_post).returns(successful_live_purchase_response)
22
+
23
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
24
+ assert_instance_of Response, response
25
+ assert_success response
26
+
27
+ assert_equal '000000', response.authorization
28
+ assert response.test?
29
+ end
30
+
31
+ def test_successful_purchase
32
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
33
+
34
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
35
+ assert_instance_of Response, response
36
+ assert_success response
37
+
38
+ assert_equal '024259', response.authorization
39
+ assert response.test?
40
+ end
41
+
42
+ def test_unsuccessful_purchase
43
+ @gateway.expects(:ssl_post).returns(failed_purchase_response)
44
+
45
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
46
+ assert_instance_of Response, response
47
+ assert_failure response
48
+ assert response.test?
49
+ assert_equal "CARD EXPIRED", response.message
50
+ end
51
+
52
+ def test_failed_login
53
+ @gateway.expects(:ssl_post).returns(failed_login_response)
54
+
55
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
56
+ assert_instance_of Response, response
57
+ assert_failure response
58
+ assert_equal "Invalid merchant ID", response.message
59
+ end
60
+
61
+ private
62
+
63
+ def failed_login_response
64
+ '<SecurePayMessage><Status><statusCode>504</statusCode><statusDescription>Invalid merchant ID</statusDescription></Status></SecurePayMessage>'
65
+ end
66
+
67
+ def successful_purchase_response
68
+ <<-XML
69
+ <?xml version="1.0" encoding="UTF-8"?>
70
+ <SecurePayMessage>
71
+ <MessageInfo>
72
+ <messageID>8af793f9af34bea0cf40f5fb5c630c</messageID>
73
+ <messageTimestamp>20080802041625665000+660</messageTimestamp>
74
+ <apiVersion>xml-4.2</apiVersion>
75
+ </MessageInfo>
76
+ <RequestType>Payment</RequestType>
77
+ <MerchantInfo>
78
+ <merchantID>XYZ0001</merchantID>
79
+ </MerchantInfo>
80
+ <Status>
81
+ <statusCode>000</statusCode>
82
+ <statusDescription>Normal</statusDescription>
83
+ </Status>
84
+ <Payment>
85
+ <TxnList count="1">
86
+ <Txn ID="1">
87
+ <txnType>0</txnType>
88
+ <txnSource>0</txnSource>
89
+ <amount>1000</amount>
90
+ <currency>AUD</currency>
91
+ <purchaseOrderNo>test</purchaseOrderNo>
92
+ <approved>Yes</approved>
93
+ <responseCode>00</responseCode>
94
+ <responseText>Approved</responseText>
95
+ <thinlinkResponseCode>100</thinlinkResponseCode>
96
+ <thinlinkResponseText>000</thinlinkResponseText>
97
+ <thinlinkEventStatusCode>000</thinlinkEventStatusCode>
98
+ <thinlinkEventStatusText>Normal</thinlinkEventStatusText>
99
+ <settlementDate>20080208</settlementDate>
100
+ <txnID>024259</txnID>
101
+ <CreditCardInfo>
102
+ <pan>424242...242</pan>
103
+ <expiryDate>07/11</expiryDate>
104
+ <cardType>6</cardType>
105
+ <cardDescription>Visa</cardDescription>
106
+ </CreditCardInfo>
107
+ </Txn>
108
+ </TxnList>
109
+ </Payment>
110
+ </SecurePayMessage>
111
+ XML
112
+ end
113
+
114
+ def failed_purchase_response
115
+ <<-XML
116
+ <?xml version="1.0" encoding="UTF-8"?>
117
+ <SecurePayMessage>
118
+ <MessageInfo>
119
+ <messageID>8af793f9af34bea0cf40f5fb5c630c</messageID>
120
+ <messageTimestamp>20080802040346380000+660</messageTimestamp>
121
+ <apiVersion>xml-4.2</apiVersion>
122
+ </MessageInfo>
123
+ <RequestType>Payment</RequestType>
124
+ <MerchantInfo>
125
+ <merchantID>XYZ0001</merchantID>
126
+ </MerchantInfo>
127
+ <Status>
128
+ <statusCode>000</statusCode>
129
+ <statusDescription>Normal</statusDescription>
130
+ </Status>
131
+ <Payment>
132
+ <TxnList count="1">
133
+ <Txn ID="1">
134
+ <txnType>0</txnType>
135
+ <txnSource>0</txnSource>
136
+ <amount>1000</amount>
137
+ <currency>AUD</currency>
138
+ <purchaseOrderNo>test</purchaseOrderNo>
139
+ <approved>No</approved>
140
+ <responseCode>907</responseCode>
141
+ <responseText>CARD EXPIRED</responseText>
142
+ <thinlinkResponseCode>300</thinlinkResponseCode>
143
+ <thinlinkResponseText>000</thinlinkResponseText>
144
+ <thinlinkEventStatusCode>981</thinlinkEventStatusCode>
145
+ <thinlinkEventStatusText>Error - Expired Card</thinlinkEventStatusText>
146
+ <settlementDate> </settlementDate>
147
+ <txnID>000000</txnID>
148
+ <CreditCardInfo>
149
+ <pan>424242...242</pan>
150
+ <expiryDate>07/06</expiryDate>
151
+ <cardType>6</cardType>
152
+ <cardDescription>Visa</cardDescription>
153
+ </CreditCardInfo>
154
+ </Txn>
155
+ </TxnList>
156
+ </Payment>
157
+ </SecurePayMessage>
158
+ XML
159
+ end
160
+
161
+ def successful_live_purchase_response
162
+ <<-XML
163
+ <?xml version="1.0" encoding="UTF-8"?>
164
+ <SecurePayMessage>
165
+ <MessageInfo>
166
+ <messageID>8af793f9af34bea0cf40f5fb5c630c</messageID>
167
+ <messageTimestamp>20080802041625665000+660</messageTimestamp>
168
+ <apiVersion>xml-4.2</apiVersion>
169
+ </MessageInfo>
170
+ <RequestType>Payment</RequestType>
171
+ <MerchantInfo>
172
+ <merchantID>XYZ0001</merchantID>
173
+ </MerchantInfo>
174
+ <Status>
175
+ <statusCode>000</statusCode>
176
+ <statusDescription>Normal</statusDescription>
177
+ </Status>
178
+ <Payment>
179
+ <TxnList count="1">
180
+ <Txn ID="1">
181
+ <txnType>0</txnType>
182
+ <txnSource>23</txnSource>
183
+ <amount>211700</amount>
184
+ <currency>AUD</currency>
185
+ <purchaseOrderNo>#1047.5</purchaseOrderNo>
186
+ <approved>Yes</approved>
187
+ <responseCode>77</responseCode>
188
+ <responseText>Approved</responseText>
189
+ <thinlinkResponseCode>100</thinlinkResponseCode>
190
+ <thinlinkResponseText>000</thinlinkResponseText>
191
+ <thinlinkEventStatusCode>000</thinlinkEventStatusCode>
192
+ <thinlinkEventStatusText>Normal</thinlinkEventStatusText>
193
+ <settlementDate>20080525</settlementDate>
194
+ <txnID>000000</txnID>
195
+ <CreditCardInfo>
196
+ <pan>424242...242</pan>
197
+ <expiryDate>07/11</expiryDate>
198
+ <cardType>6</cardType>
199
+ <cardDescription>Visa</cardDescription>
200
+ </CreditCardInfo>
201
+ </Txn>
202
+ </TxnList>
203
+ </Payment>
204
+ </SecurePayMessage>
205
+ XML
206
+ end
207
+ end
@@ -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,213 @@
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
+ def test_basic_test_url
114
+ @gateway.stubs(:test?).returns(true)
115
+ @gateway.stubs(:advanced?).returns(false)
116
+ assert_equal "https://developer.skipjackic.com/scripts/evolvcc.dll?AuthorizeAPI", @gateway.send(:url_for, :authorization)
117
+ end
118
+
119
+ def test_basic_test_url_non_authorization
120
+ @gateway.stubs(:test?).returns(true)
121
+ @gateway.stubs(:advanced?).returns(false)
122
+ assert_equal "https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_TransactionChangeStatusRequest", @gateway.send(:url_for, :change_status)
123
+ end
124
+
125
+ def test_advanced_test_url
126
+ @gateway.stubs(:test?).returns(true)
127
+ @gateway.stubs(:advanced?).returns(true)
128
+ assert_equal "https://developer.skipjackic.com/evolvcc/evolvcc.aspx?AuthorizeAPI", @gateway.send(:url_for, :authorization)
129
+ end
130
+
131
+ def test_advanced_test_url_non_authorization
132
+ @gateway.stubs(:test?).returns(true)
133
+ @gateway.stubs(:advanced?).returns(true)
134
+ assert_equal "https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_TransactionChangeStatusRequest", @gateway.send(:url_for, :change_status)
135
+ end
136
+
137
+ def test_basic_live_url
138
+ @gateway.stubs(:test?).returns(false)
139
+ @gateway.stubs(:advanced?).returns(false)
140
+ assert_equal "https://www.skipjackic.com/scripts/evolvcc.dll?AuthorizeAPI", @gateway.send(:url_for, :authorization)
141
+ end
142
+
143
+ def test_basic_live_url_non_authorization
144
+ @gateway.stubs(:test?).returns(false)
145
+ @gateway.stubs(:advanced?).returns(false)
146
+ assert_equal "https://www.skipjackic.com/scripts/evolvcc.dll?SJAPI_TransactionChangeStatusRequest", @gateway.send(:url_for, :change_status)
147
+ end
148
+
149
+ def test_advanced_live_url
150
+ @gateway.stubs(:test?).returns(false)
151
+ @gateway.stubs(:advanced?).returns(true)
152
+ assert_equal "https://www.skipjackic.com/evolvcc/evolvcc.aspx?AuthorizeAPI", @gateway.send(:url_for, :authorization)
153
+ end
154
+
155
+ def test_advanced_live_url_non_authorization
156
+ @gateway.stubs(:test?).returns(false)
157
+ @gateway.stubs(:advanced?).returns(true)
158
+ assert_equal "https://www.skipjackic.com/scripts/evolvcc.dll?SJAPI_TransactionChangeStatusRequest", @gateway.send(:url_for, :change_status)
159
+ end
160
+
161
+ def test_paymentech_authorization_success
162
+ @gateway.expects(:ssl_post).returns(successful_paymentech_authorization_response)
163
+
164
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
165
+ assert_instance_of Response, response
166
+ assert_success response
167
+ assert_equal '40000024585892.109', response.authorization
168
+ end
169
+
170
+ def test_paymentech_authorization_failure
171
+ @gateway.expects(:ssl_post).returns(unsuccessful_paymentech_authorization_response)
172
+
173
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
174
+ assert_instance_of Response, response
175
+ assert_failure response
176
+ end
177
+
178
+ private
179
+ def successful_authorization_response
180
+ <<-CSV
181
+ "AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsApproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileName","szCAVVResponseCode"
182
+ "TAS204","000386891209","100","","Y","Card authorized, exact address match with 5 digit zip code.","107a0fdb21ba42cf04f60274908085ea","TAS204","1","M","Match","1","9802853155172.022",""
183
+ CSV
184
+ end
185
+
186
+ def successful_capture_response
187
+ <<-CSV
188
+ "000386891209","0","1","","","","","","","","",""
189
+ "000386891209","1.0000","SETTLE","SUCCESSFUL","Valid","618844630c5fad658e95abfd5e1d4e22","9802853156029.022"
190
+ CSV
191
+ end
192
+
193
+ def unsuccessful_authorization_response
194
+ <<-CSV
195
+ "AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsApproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileName","szCAVVResponseCode"\r\n"EMPTY","000386891209","100","","","","b1eec256d0182f29375e0cbae685092d","","0","","","-35","",""
196
+ CSV
197
+ end
198
+
199
+ def unsuccessful_paymentech_authorization_response
200
+ <<-CSV
201
+ "AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsApproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileName","szCAVVResponseCode",
202
+ "EMPTY","000000000000","1.00","","","","43985b7953199d1f02c3017f948e9f13","","0","","","-83","","",
203
+ CSV
204
+ end
205
+
206
+ def successful_paymentech_authorization_response
207
+ <<-CSV
208
+ "AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsApproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileName","szCAVVResponseCode",
209
+ "093223","000000000000","1.00","","Y","Card authorized, exact address match with 5 digit zip code.","5ac0f04e737baea5a5370037afe827f6","093223","1","M","Match","1","40000024585892.109","",
210
+ CSV
211
+ end
212
+ end
213
+