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,54 @@
1
+ require 'test_helper'
2
+
3
+ class NetbillingTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = NetbillingGateway.new(
6
+ :login => 'login',
7
+ :password => 'password'
8
+ )
9
+
10
+ @credit_card = credit_card('4242424242424242')
11
+ @amount = 100
12
+ @options = { :billing_address => address }
13
+ end
14
+
15
+ def test_successful_request
16
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
17
+
18
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
19
+ assert_success response
20
+ assert_equal '110270311543', response.authorization
21
+ assert response.test?
22
+ end
23
+
24
+ def test_unsuccessful_request
25
+ @gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
26
+
27
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
28
+ assert_failure response
29
+ assert response.test?
30
+ end
31
+
32
+ def test_avs_result
33
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
34
+
35
+ response = @gateway.purchase(@amount, @credit_card, @options)
36
+ assert_equal 'X', response.avs_result['code']
37
+ end
38
+
39
+ def test_cvv_result
40
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
41
+
42
+ response = @gateway.purchase(@amount, @credit_card, @options)
43
+ assert_equal 'M', response.cvv_result['code']
44
+ end
45
+
46
+ private
47
+ def successful_purchase_response
48
+ "avs_code=X&cvv2_code=M&status_code=1&auth_code=999999&trans_id=110270311543&auth_msg=TEST+APPROVED&auth_date=2008-01-25+16:43:54"
49
+ end
50
+
51
+ def unsuccessful_purchase_response
52
+ "status_code=0&auth_msg=CARD+EXPIRED&trans_id=110492608613&auth_date=2008-01-25+17:47:44"
53
+ end
54
+ end
@@ -0,0 +1,319 @@
1
+ require 'test_helper'
2
+
3
+ class OgoneTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @credentials = { :login => 'merchant id',
7
+ :user => 'username',
8
+ :password => 'password',
9
+ :signature => 'mynicesig' }
10
+ @gateway = OgoneGateway.new(@credentials)
11
+ @credit_card = credit_card
12
+ @amount = 100
13
+ @identification = "3014726"
14
+ @options = {
15
+ :order_id => '1',
16
+ :billing_address => address,
17
+ :description => 'Store Purchase'
18
+ }
19
+ end
20
+
21
+ def teardown
22
+ Base.mode = :test
23
+ end
24
+
25
+ def test_successful_authorize
26
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
27
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
28
+ assert_success response
29
+ assert_equal '3014726;RES', response.authorization
30
+ assert response.test?
31
+ end
32
+
33
+ def test_successful_purchase
34
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
35
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
36
+ assert_success response
37
+ assert_equal '3014726;SAL', response.authorization
38
+ assert response.test?
39
+ end
40
+
41
+ def test_successful_purchase_without_order_id
42
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
43
+ @options.delete(:order_id)
44
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
45
+ assert_success response
46
+ assert_equal '3014726;SAL', response.authorization
47
+ assert response.test?
48
+ end
49
+
50
+ def test_successful_capture
51
+ @gateway.expects(:ssl_post).returns(successful_capture_response)
52
+ assert response = @gateway.capture(@amount, "3048326")
53
+ assert_success response
54
+ assert_equal '3048326;SAL', response.authorization
55
+ assert response.test?
56
+ end
57
+
58
+ def test_successful_void
59
+ @gateway.expects(:ssl_post).returns(successful_void_response)
60
+ assert response = @gateway.void("3048606")
61
+ assert_success response
62
+ assert_equal '3048606;DES', response.authorization
63
+ assert response.test?
64
+ end
65
+
66
+ def test_successful_referenced_credit
67
+ @gateway.expects(:ssl_post).returns(successful_referenced_credit_response)
68
+ assert response = @gateway.credit(@amount, "3049652")
69
+ assert_success response
70
+ assert_equal '3049652;RFD', response.authorization
71
+ assert response.test?
72
+ end
73
+
74
+ def test_successful_unreferenced_credit
75
+ @gateway.expects(:ssl_post).returns(successful_unreferenced_credit_response)
76
+ assert response = @gateway.credit(@amount, @credit_card)
77
+ assert_success response
78
+ assert_equal "3049654;RFD", response.authorization
79
+ assert response.test?
80
+ end
81
+
82
+ def test_unsuccessful_request
83
+ @gateway.expects(:ssl_post).returns(failed_purchase_response)
84
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
85
+ assert_failure response
86
+ assert response.test?
87
+ end
88
+
89
+ def test_create_readable_error_message_upon_failure
90
+ @gateway.expects(:ssl_post).returns(test_failed_authorization_due_to_unknown_order_number)
91
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
92
+ assert_failure response
93
+ assert response.test?
94
+
95
+ assert_equal "Unknown order", response.message
96
+ end
97
+
98
+ def test_supported_countries
99
+ assert_equal ['BE', 'DE', 'FR', 'NL', 'AT', 'CH'], OgoneGateway.supported_countries
100
+ end
101
+
102
+ def test_supported_card_types
103
+ assert_equal [:visa, :master, :american_express, :diners_club, :discover, :jcb, :maestro], OgoneGateway.supported_cardtypes
104
+ end
105
+
106
+ def test_default_currency
107
+ assert_equal 'EUR', OgoneGateway.default_currency
108
+ end
109
+
110
+ def test_avs_result
111
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
112
+ response = @gateway.purchase(@amount, @credit_card)
113
+ assert_equal 'R', response.avs_result['code']
114
+ end
115
+
116
+ def test_cvv_result
117
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
118
+ response = @gateway.purchase(@amount, @credit_card)
119
+ assert_equal 'P', response.cvv_result['code']
120
+ end
121
+
122
+ def test_production_mode
123
+ Base.mode = :production
124
+ gateway = OgoneGateway.new(@credentials)
125
+ assert !gateway.test?
126
+ end
127
+
128
+ def test_test_mode
129
+ Base.mode = :production
130
+ @credentials[:test] = true
131
+ gateway = OgoneGateway.new(@credentials)
132
+ assert gateway.test?
133
+ end
134
+
135
+ def test_format_error_message_with_slash_separator
136
+ @gateway.expects(:ssl_post).returns('<ncresponse NCERRORPLUS="unknown order/1/i/67.192.100.64" STATUS="0" />')
137
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
138
+ assert_equal "Unknown order", response.message
139
+ end
140
+
141
+ def test_format_error_message_with_pipe_separator
142
+ @gateway.expects(:ssl_post).returns('<ncresponse NCERRORPLUS=" no card no|no exp date|no brand" STATUS="0" />')
143
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
144
+ assert_equal "No card no, no exp date, no brand", response.message
145
+ end
146
+
147
+ def test_format_error_message_with_no_separator
148
+ @gateway.expects(:ssl_post).returns('<ncresponse NCERRORPLUS=" unknown order " STATUS="0" />')
149
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
150
+ assert_equal "Unknown order", response.message
151
+ end
152
+
153
+ private
154
+
155
+ def successful_authorize_response
156
+ <<-END
157
+ <?xml version="1.0"?><ncresponse
158
+ orderID="1233680882919266242708828"
159
+ PAYID="3014726"
160
+ NCSTATUS="0"
161
+ NCERROR="0"
162
+ NCERRORPLUS="!"
163
+ ACCEPTANCE="test123"
164
+ STATUS="5"
165
+ IPCTY="99"
166
+ CCCTY="99"
167
+ ECI="7"
168
+ CVCCheck="NO"
169
+ AAVCheck="NO"
170
+ VC="NO"
171
+ amount="1"
172
+ currency="EUR"
173
+ PM="CreditCard"
174
+ BRAND="VISA">
175
+ </ncresponse>
176
+ END
177
+ end
178
+
179
+ def successful_purchase_response
180
+ <<-END
181
+ <?xml version="1.0"?><ncresponse
182
+ orderID="1233680882919266242708828"
183
+ PAYID="3014726"
184
+ NCSTATUS="0"
185
+ NCERROR="0"
186
+ NCERRORPLUS="!"
187
+ ACCEPTANCE="test123"
188
+ STATUS="5"
189
+ IPCTY="99"
190
+ CCCTY="99"
191
+ ECI="7"
192
+ CVCCheck="NO"
193
+ AAVCheck="NO"
194
+ VC="NO"
195
+ amount="1"
196
+ currency="EUR"
197
+ PM="CreditCard"
198
+ BRAND="VISA">
199
+ </ncresponse>
200
+ END
201
+ end
202
+
203
+ def failed_purchase_response
204
+ <<-END
205
+ <?xml version="1.0"?>
206
+ <ncresponse
207
+ orderID=""
208
+ PAYID="0"
209
+ NCSTATUS="5"
210
+ NCERROR="50001111"
211
+ NCERRORPLUS=" no orderid"
212
+ ACCEPTANCE=""
213
+ STATUS="0"
214
+ amount=""
215
+ currency="EUR"
216
+ PM=""
217
+ BRAND="">
218
+ </ncresponse>
219
+ END
220
+ end
221
+
222
+ def successful_capture_response
223
+ <<-END
224
+ <?xml version="1.0"?>
225
+ <ncresponse
226
+ orderID="1234956106974734203514539"
227
+ PAYID="3048326"
228
+ PAYIDSUB="1"
229
+ NCSTATUS="0"
230
+ NCERROR="0"
231
+ NCERRORPLUS="!"
232
+ ACCEPTANCE=""
233
+ STATUS="91"
234
+ amount="1"
235
+ currency="EUR">
236
+ </ncresponse>
237
+ END
238
+ end
239
+
240
+ def successful_void_response
241
+ <<-END
242
+ <?xml version="1.0"?>
243
+ <ncresponse
244
+ orderID="1234961140253559268757474"
245
+ PAYID="3048606"
246
+ PAYIDSUB="1"
247
+ NCSTATUS="0"
248
+ NCERROR="0"
249
+ NCERRORPLUS="!"
250
+ ACCEPTANCE=""
251
+ STATUS="61"
252
+ amount="1"
253
+ currency="EUR">
254
+ </ncresponse>
255
+ END
256
+ end
257
+
258
+ def successful_referenced_credit_response
259
+ <<-END
260
+ <?xml version="1.0"?>
261
+ <ncresponse
262
+ orderID="1234976251872867104376350"
263
+ PAYID="3049652"
264
+ PAYIDSUB="1"
265
+ NCSTATUS="0"
266
+ NCERROR="0"
267
+ NCERRORPLUS="!"
268
+ ACCEPTANCE=""
269
+ STATUS="81"
270
+ amount="1"
271
+ currency="EUR">
272
+ </ncresponse>
273
+ END
274
+ end
275
+
276
+ def successful_unreferenced_credit_response
277
+ <<-END
278
+ <?xml version="1.0"?><ncresponse
279
+ orderID="1234976330656672481134758"
280
+ PAYID="3049654"
281
+ NCSTATUS="0"
282
+ NCERROR="0"
283
+ NCERRORPLUS="!"
284
+ ACCEPTANCE=""
285
+ STATUS="81"
286
+ IPCTY="99"
287
+ CCCTY="99"
288
+ ECI="7"
289
+ CVCCheck="NO"
290
+ AAVCheck="NO"
291
+ VC="NO"
292
+ amount="1"
293
+ currency="EUR"
294
+ PM="CreditCard"
295
+ BRAND="VISA">
296
+ </ncresponse>
297
+ END
298
+ end
299
+
300
+ def test_failed_authorization_due_to_unknown_order_number
301
+ <<-END
302
+ <?xml version="1.0"?>
303
+ <ncresponse
304
+ orderID="#1019.22"
305
+ PAYID="0"
306
+ NCSTATUS="5"
307
+ NCERROR="50001116"
308
+ NCERRORPLUS="unknown order/1/i/67.192.100.64"
309
+ ACCEPTANCE=""
310
+ STATUS="0"
311
+ amount=""
312
+ currency="EUR"
313
+ PM=""
314
+ BRAND="">
315
+ </ncresponse>
316
+ END
317
+ end
318
+
319
+ end
@@ -0,0 +1,123 @@
1
+ require 'test/unit'
2
+ require 'test_helper'
3
+
4
+ class PayJunctionTest < Test::Unit::TestCase
5
+ def setup
6
+ Base.gateway_mode = :test
7
+
8
+ @gateway = PayJunctionGateway.new(
9
+ :login => "pj-ql-01",
10
+ :password => "pj-ql-01p"
11
+ )
12
+
13
+ @credit_card = credit_card
14
+ @options = {
15
+ :billing_address => address,
16
+ :description => 'Test purchase'
17
+ }
18
+ @amount = 100
19
+ end
20
+
21
+
22
+ def test_detect_test_credentials_when_in_production
23
+ Base.mode = :production
24
+
25
+ live_gw = PayJunctionGateway.new(
26
+ :login => "l",
27
+ :password => "p"
28
+ )
29
+ assert_false live_gw.test?
30
+
31
+ test_gw = PayJunctionGateway.new(
32
+ :login => "pj-ql-01",
33
+ :password => "pj-ql-01p"
34
+ )
35
+ assert test_gw.test?
36
+ end
37
+
38
+ def test_successful_authorization
39
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
40
+ response = @gateway.authorize(@amount, @credit_card, @options)
41
+ assert_success response
42
+ assert_equal PayJunctionGateway::SUCCESS_MESSAGE, response.message
43
+ end
44
+
45
+ def test_failed_authorization
46
+ @gateway.expects(:ssl_post).returns(failed_authorization_response)
47
+ response = @gateway.authorize(@amount, @credit_card, @options)
48
+ assert_failure response
49
+ assert_equal PayJunctionGateway::DECLINE_CODES['FE'], response.message
50
+ end
51
+
52
+ def test_avs_result_not_supported
53
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
54
+
55
+ response = @gateway.purchase(@amount, @credit_card, @options)
56
+ assert_nil response.avs_result['code']
57
+ end
58
+
59
+ def test_cvv_result_not_supported
60
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
61
+
62
+ response = @gateway.purchase(@amount, @credit_card, @options)
63
+ assert_nil response.cvv_result['code']
64
+ end
65
+
66
+ private
67
+ def successful_authorization_response
68
+ <<-RESPONSE
69
+ dc_merchant_name=PayJunction - (demo)dc_merchant_address=3 W. Carrillodc_merchant_city=Santa Barbaradc_merchant_state=CAdc_merchant_zip=93101dc_merchant_phone=800-601-0230dc_device_id=1174dc_transaction_date=2007-11-28 19:22:33.791634dc_transaction_action=chargedc_approval_code=TAS193dc_response_code=00dc_response_message=APPROVAL TAS193 dc_transaction_id=3144302dc_posture=holddc_invoice_number=9f76c4e4bd66a36dc5aeb4bd7b3a02fadc_notes=--START QUICK-LINK DEBUG--
70
+ ----Vars Received----
71
+ dc_expiration_month =&gt; *
72
+ dc_expiration_year =&gt; *
73
+ dc_invoice =&gt; 9f76c4e4bd66a36dc5aeb4bd7b3a02fa
74
+ dc_logon =&gt; pj-ql-01
75
+ dc_name =&gt; Cody Fauser
76
+ dc_number =&gt; *
77
+ dc_password =&gt; *
78
+ dc_transaction_amount =&gt; 4.00
79
+ dc_transaction_type =&gt; AUTHORIZATION
80
+ dc_verification_number =&gt; *
81
+ dc_version =&gt; 1.2
82
+ ----End Vars----
83
+
84
+ ----Start Response Sent----
85
+ dc_merchant_name=PayJunction - (demo)
86
+ dc_merchant_address=3 W. Carrillo
87
+ dc_merchant_city=Santa Barbara
88
+ dc_merchant_state=CA
89
+ dc_merchant_zip=93101
90
+ dc_merchant_phone=800-601-0230
91
+ dc_device_id=1174
92
+ dc_transaction_date=2007-11-28 19:22:33.791634
93
+ dc_transaction_action=charge
94
+ dc_approval_code=TAS193
95
+ dc_response_code=00
96
+ dc_response_message=APPROVAL TAS193
97
+ dc_transaction_id=3144302
98
+ dc_posture=hold
99
+ dc_invoice_number=9f76c4e4bd66a36dc5aeb4bd7b3a02fa
100
+ dc_notes=null
101
+ dc_card_name=cody fauser
102
+ dc_card_brand=VSA
103
+ dc_card_exp=XX/XX
104
+ dc_card_number=XXXX-XXXX-XXXX-3344
105
+ dc_card_address=
106
+ dc_card_city=
107
+ dc_card_zipcode=
108
+ dc_card_state=
109
+ dc_card_country=
110
+ dc_base_amount=4.00
111
+ dc_tax_amount=0.00
112
+ dc_capture_amount=4.00
113
+ dc_cashback_amount=0.00
114
+ dc_shipping_amount=0.00
115
+ ----End Response Sent----
116
+ dc_card_name=cody fauserdc_card_brand=VSAdc_card_exp=XX/XXdc_card_number=XXXX-XXXX-XXXX-3344dc_card_address=dc_card_city=dc_card_zipcode=dc_card_state=dc_card_country=dc_base_amount=4.00dc_tax_amount=0.00dc_capture_amount=4.00dc_cashback_amount=0.00dc_shipping_amount=0.00
117
+ RESPONSE
118
+ end
119
+
120
+ def failed_authorization_response
121
+ 'dc_merchant_name=dc_merchant_address=dc_merchant_city=dc_merchant_state=dc_merchant_zip=dc_merchant_phone=dc_device_id=dc_transaction_date=dc_transaction_action=dc_approval_code=dc_response_code=FEdc_response_message=dc_number [Input is invalid. The credit card number is bad.], System [error.System], dc_transaction_id=dc_posture=dc_invoice_number=dc_notes=dc_card_name=dc_card_brand=dc_card_exp=dc_card_number=dc_card_address=dc_card_city=dc_card_zipcode=dc_card_state=dc_card_country=dc_base_amount=dc_tax_amount=dc_capture_amount=dc_cashback_amount=dc_shipping_amount='
122
+ end
123
+ end