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,133 @@
1
+ require 'test_helper'
2
+
3
+ class DataCashTest < Test::Unit::TestCase
4
+ # 100 Cents
5
+ AMOUNT = 100
6
+
7
+ def setup
8
+ @gateway = DataCashGateway.new(
9
+ :login => 'LOGIN',
10
+ :password => 'PASSWORD'
11
+ )
12
+
13
+ @credit_card = credit_card('4242424242424242')
14
+
15
+ @address = {
16
+ :name => 'Mark McBride',
17
+ :address1 => 'Flat 12/3',
18
+ :address2 => '45 Main Road',
19
+ :city => 'London',
20
+ :state => 'None',
21
+ :country => 'GBR',
22
+ :zip => 'A987AA',
23
+ :phone => '(555)555-5555'
24
+ }
25
+
26
+ @options = {
27
+ :order_id => generate_unique_id,
28
+ :billing_address => @address
29
+ }
30
+ end
31
+
32
+ def test_successful_purchase
33
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
34
+
35
+ response = @gateway.purchase(@amount, @credit_card, @options)
36
+ assert_instance_of Response, response
37
+ assert_success response
38
+ assert response.test?
39
+ assert_equal 'The transaction was successful', response.message
40
+ assert_equal '4400200050664928;123456789;', response.authorization
41
+ end
42
+
43
+ def test_unsuccessful_purchase
44
+ @gateway.expects(:ssl_post).returns(failed_purchase_response)
45
+
46
+ response = @gateway.purchase(@amount, @credit_card, @options)
47
+ assert_instance_of Response, response
48
+ assert_failure response
49
+ assert response.test?
50
+ assert_equal 'Invalid reference number', response.message
51
+ end
52
+
53
+ def test_error_response
54
+ @gateway.expects(:ssl_post).returns(failed_purchase_response)
55
+
56
+ response = @gateway.purchase(@amount, @credit_card, @options)
57
+ assert_instance_of Response, response
58
+ assert_failure response
59
+ assert response.test?
60
+ assert_equal 'Invalid reference number', response.message
61
+ end
62
+
63
+ def test_supported_countries
64
+ assert_equal ['GB'], DataCashGateway.supported_countries
65
+ end
66
+
67
+ def test_supported_card_types
68
+ assert_equal [ :visa, :master, :american_express, :discover, :diners_club, :jcb, :maestro, :switch, :solo, :laser ], DataCashGateway.supported_cardtypes
69
+ end
70
+
71
+ def test_purchase_with_missing_order_id_option
72
+ assert_raise(ArgumentError){ @gateway.purchase(100, @credit_card, {}) }
73
+ end
74
+
75
+ def test_authorize_with_missing_order_id_option
76
+ assert_raise(ArgumentError){ @gateway.authorize(100, @credit_card, {}) }
77
+ end
78
+
79
+ def test_purchase_does_not_raise_exception_with_missing_billing_address
80
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
81
+ assert @gateway.authorize(100, @credit_card, {:order_id => generate_unique_id }).is_a?(ActiveMerchant::Billing::Response)
82
+ end
83
+
84
+ def test_continuous_authority_purchase_with_missing_continuous_authority_reference
85
+ assert_raise(ArgumentError) do
86
+ @gateway.authorize(100, "a;b;", @options)
87
+ end
88
+ end
89
+
90
+ def test_successful_continuous_authority_purchase
91
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
92
+
93
+ response = @gateway.purchase(@amount, '4400200050664928;123456789;10000000', @options)
94
+ assert_instance_of Response, response
95
+ assert_success response
96
+ assert response.test?
97
+ assert_equal 'The transaction was successful', response.message
98
+ end
99
+
100
+ private
101
+ def failed_purchase_response
102
+ <<-XML
103
+ <Response>
104
+ <status>22</status>
105
+ <time>1196414665</time>
106
+ <mode>TEST</mode>
107
+ <country>United Kingdom</country>
108
+ <merchantreference>2d24cc91284c1ed5c65d8821f1e752c7</merchantreference>
109
+ <issuer>Clydesdale Bank PLC</issuer>
110
+ <reason>Invalid reference number</reason>
111
+ <card_scheme>Solo</card_scheme>
112
+ <datacash_reference>4400200050664928</datacash_reference>
113
+ </Response>
114
+ XML
115
+ end
116
+
117
+ def successful_purchase_response
118
+ <<-XML
119
+ <Response>
120
+ <status>1</status>
121
+ <time>1196414665</time>
122
+ <mode>TEST</mode>
123
+ <country>United Kingdom</country>
124
+ <merchantreference>2d24cc91284c1ed5c65d8821f1e752c7</merchantreference>
125
+ <issuer>Clydesdale Bank PLC</issuer>
126
+ <reason>The transaction was successful</reason>
127
+ <card_scheme>Visa</card_scheme>
128
+ <datacash_reference>4400200050664928</datacash_reference>
129
+ <authcode>123456789</authcode>
130
+ </Response>
131
+ XML
132
+ end
133
+ end
@@ -0,0 +1,123 @@
1
+ require 'test_helper'
2
+
3
+ class EfsnetTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = EfsnetGateway.new(
7
+ :login => 'LOGIN',
8
+ :password => 'PASSWORD'
9
+ )
10
+
11
+ @credit_card = credit_card('4242424242424242')
12
+ @amount = 100
13
+ @options = { :order_id => 1, :billing_address => address }
14
+ end
15
+
16
+ def test_successful_purchase
17
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
18
+
19
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
20
+ assert_instance_of Response, response
21
+ assert_success response
22
+ assert response.test?
23
+ assert_equal '100018347764;1.00', response.authorization
24
+ assert_equal 'Approved', response.message
25
+
26
+ end
27
+
28
+ def test_unsuccessful_purchase
29
+ @gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
30
+
31
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
32
+ assert_instance_of Response, response
33
+ assert_failure response
34
+ assert response.test?
35
+ assert_equal 'Declined', response.message
36
+ end
37
+
38
+ def test_authorize_is_valid_xml
39
+ params = {
40
+ :order_id => "order1",
41
+ :transaction_amount => "1.01",
42
+ :account_number => "4242424242424242",
43
+ :expiration_month => "12",
44
+ :expiration_year => "2029",
45
+ }
46
+
47
+ assert data = @gateway.send(:post_data, :credit_card_authorize, params)
48
+ assert REXML::Document.new(data)
49
+ end
50
+
51
+ def test_settle_is_valid_xml
52
+ params = {
53
+ :order_id => "order1",
54
+ :transaction_amount => "1.01",
55
+ :original_transaction_amount => "1.01",
56
+ :original_transaction_id => "1",
57
+ }
58
+
59
+ assert data = @gateway.send(:post_data, :credit_card_settle, params)
60
+ assert REXML::Document.new(data)
61
+ end
62
+
63
+ def test_avs_result
64
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
65
+
66
+ response = @gateway.purchase(@amount, @credit_card, @options)
67
+ assert_equal 'N', response.avs_result['code']
68
+ end
69
+
70
+ def test_cvv_result
71
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
72
+
73
+ response = @gateway.purchase(@amount, @credit_card, @options)
74
+ assert_equal 'M', response.cvv_result['code']
75
+ end
76
+
77
+ private
78
+ def successful_purchase_response
79
+ <<-XML
80
+ <?xml version="1.0"?>
81
+ <Reply>
82
+ <TransactionReply>
83
+ <ResponseCode>0</ResponseCode>
84
+ <ResultCode>00</ResultCode>
85
+ <ResultMessage>APPROVED</ResultMessage>
86
+ <TransactionID>100018347764</TransactionID>
87
+ <AVSResponseCode>N</AVSResponseCode>
88
+ <CVVResponseCode>M</CVVResponseCode>
89
+ <ApprovalNumber>123456</ApprovalNumber>
90
+ <AuthorizationNumber>123456</AuthorizationNumber>
91
+ <TransactionDate>080117</TransactionDate>
92
+ <TransactionTime>163222</TransactionTime>
93
+ <ReferenceNumber>1</ReferenceNumber>
94
+ <AccountNumber>XXXXXXXXXXXX2224</AccountNumber>
95
+ <TransactionAmount>1.00</TransactionAmount>
96
+ </TransactionReply>
97
+ </Reply>
98
+ XML
99
+ end
100
+
101
+ def unsuccessful_purchase_response
102
+ <<-XML
103
+ <?xml version="1.0"?>
104
+ <Reply>
105
+ <TransactionReply>
106
+ <ResponseCode>256</ResponseCode>
107
+ <ResultCode>04</ResultCode>
108
+ <ResultMessage>DECLINED</ResultMessage>
109
+ <TransactionID>100018347784</TransactionID>
110
+ <AVSResponseCode>N</AVSResponseCode>
111
+ <CVVResponseCode/>
112
+ <ApprovalNumber/>
113
+ <AuthorizationNumber/>
114
+ <TransactionDate>080117</TransactionDate>
115
+ <TransactionTime>163946</TransactionTime>
116
+ <ReferenceNumber>1</ReferenceNumber>
117
+ <AccountNumber>XXXXXXXXXXXX2224</AccountNumber>
118
+ <TransactionAmount>1.56</TransactionAmount>
119
+ </TransactionReply>
120
+ </Reply>
121
+ XML
122
+ end
123
+ end
@@ -0,0 +1,139 @@
1
+ require 'test_helper'
2
+
3
+ class ElavonTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = ElavonGateway.new(
6
+ :login => 'login',
7
+ :user => 'user',
8
+ :password => 'password'
9
+ )
10
+
11
+ @credit_card = credit_card
12
+ @amount = 100
13
+
14
+ @options = {
15
+ :order_id => '1',
16
+ :billing_address => address,
17
+ :description => 'Store Purchase'
18
+ }
19
+ end
20
+
21
+ def test_successful_purchase
22
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
23
+
24
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
25
+ assert_success response
26
+ assert_equal '123456', response.authorization
27
+ assert response.test?
28
+ end
29
+
30
+ def test_successful_authorization
31
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
32
+
33
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
34
+ assert_instance_of Response, response
35
+ assert_success response
36
+
37
+ assert_equal '123456', response.authorization
38
+ assert_equal "APPROVED", response.message
39
+ assert response.test?
40
+ end
41
+
42
+ def test_failed_authorization
43
+ @gateway.expects(:ssl_post).returns(failed_authorization_response)
44
+
45
+ assert response = @gateway.authorize(@amount, @credit_card)
46
+ assert_instance_of Response, response
47
+ assert_failure response
48
+ end
49
+
50
+ def test_unsuccessful_purchase
51
+ @gateway.expects(:ssl_post).returns(failed_purchase_response)
52
+
53
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
54
+ assert_failure response
55
+ assert response.test?
56
+ end
57
+
58
+ def test_invalid_login
59
+ @gateway.expects(:ssl_post).returns(invalid_login_response)
60
+
61
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
62
+
63
+ assert_equal '7000', response.params['result']
64
+ assert_equal 'The VirtualMerchant ID and/or User ID supplied in the authorization request is invalid.', response.message
65
+ assert_failure response
66
+ end
67
+
68
+ def test_supported_countries
69
+ assert_equal ['US', 'CA'], ElavonGateway.supported_countries
70
+ end
71
+
72
+ def test_supported_card_types
73
+ assert_equal [:visa, :master, :american_express, :discover], ElavonGateway.supported_cardtypes
74
+ end
75
+
76
+ def test_avs_result
77
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
78
+ response = @gateway.purchase(@amount, @credit_card)
79
+ assert_equal 'X', response.avs_result['code']
80
+ end
81
+
82
+ def test_cvv_result
83
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
84
+ response = @gateway.purchase(@amount, @credit_card)
85
+ assert_equal 'P', response.cvv_result['code']
86
+ end
87
+
88
+ private
89
+ def successful_purchase_response
90
+ "ssl_card_number=42********4242
91
+ ssl_exp_date=0910
92
+ ssl_amount=1.00
93
+ ssl_invoice_number=
94
+ ssl_description=Test Transaction
95
+ ssl_result=0
96
+ ssl_result_message=APPROVED
97
+ ssl_txn_id=00000000-0000-0000-0000-00000000000
98
+ ssl_approval_code=123456
99
+ ssl_cvv2_response=P
100
+ ssl_avs_response=X
101
+ ssl_account_balance=0.00
102
+ ssl_txn_time=08/07/2009 09:54:18 PM"
103
+ end
104
+
105
+ def failed_purchase_response
106
+ "errorCode=5000
107
+ errorName=Credit Card Number Invalid
108
+ errorMessage=The Credit Card Number supplied in the authorization request appears to be invalid."
109
+ end
110
+
111
+ def invalid_login_response
112
+ <<-RESPONSE
113
+ ssl_result=7000\r
114
+ ssl_result_message=The VirtualMerchant ID and/or User ID supplied in the authorization request is invalid.\r
115
+ RESPONSE
116
+ end
117
+
118
+ def successful_authorization_response
119
+ "ssl_card_number=42********4242
120
+ ssl_exp_date=0910
121
+ ssl_amount=1.00
122
+ ssl_invoice_number=
123
+ ssl_description=Test Transaction
124
+ ssl_result=0
125
+ ssl_result_message=APPROVED
126
+ ssl_txn_id=00000000-0000-0000-0000-00000000000
127
+ ssl_approval_code=123456
128
+ ssl_cvv2_response=P
129
+ ssl_avs_response=X
130
+ ssl_account_balance=0.00
131
+ ssl_txn_time=08/07/2009 09:56:11 PM"
132
+ end
133
+
134
+ def failed_authorization_response
135
+ "errorCode=5000
136
+ errorName=Credit Card Number Invalid
137
+ errorMessage=The Credit Card Number supplied in the authorization request appears to be invalid."
138
+ end
139
+ end
@@ -0,0 +1,118 @@
1
+ require 'test_helper'
2
+
3
+ class EwayTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = EwayGateway.new(
6
+ :login => '87654321'
7
+ )
8
+
9
+ @credit_card = credit_card('4646464646464646')
10
+
11
+ @options = {
12
+ :order_id => '1230123',
13
+ :email => 'bob@testbob.com',
14
+ :billing_address => {
15
+ :address1 => '1234 First St.',
16
+ :address2 => 'Apt. 1',
17
+ :city => 'Melbourne',
18
+ :state => 'ACT',
19
+ :country => 'AU',
20
+ :zip => '12345'
21
+ },
22
+ :description => 'purchased items'
23
+ }
24
+ end
25
+
26
+ def test_successful_purchase
27
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
28
+
29
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
30
+ assert_instance_of Response, response
31
+ assert_success response
32
+ assert_equal '123456', response.authorization
33
+ end
34
+
35
+ def test_failed_purchase
36
+ @gateway.expects(:ssl_post).returns(failed_purchase_response)
37
+
38
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
39
+ assert_instance_of Response, response
40
+ assert_failure response
41
+ end
42
+
43
+ def test_amount_style
44
+ assert_equal '1034', @gateway.send(:amount, 1034)
45
+
46
+ assert_raise(ArgumentError) do
47
+ @gateway.send(:amount, '10.34')
48
+ end
49
+ end
50
+
51
+ def test_ensure_does_not_respond_to_authorize
52
+ assert !@gateway.respond_to?(:authorize)
53
+ end
54
+
55
+ def test_ensure_does_not_respond_to_capture
56
+ assert !@gateway.respond_to?(:capture)
57
+ end
58
+
59
+ def test_test_url_without_cvn
60
+ assert_equal EwayGateway::TEST_URL, @gateway.send(:gateway_url, false, true)
61
+ end
62
+
63
+ def test_test_url_with_cvn
64
+ assert_equal EwayGateway::TEST_CVN_URL, @gateway.send(:gateway_url, true, true)
65
+ end
66
+
67
+ def test_live_url_without_cvn
68
+ assert_equal EwayGateway::LIVE_URL, @gateway.send(:gateway_url, false, false)
69
+ end
70
+
71
+ def test_live_url_with_cvn
72
+ assert_equal EwayGateway::LIVE_CVN_URL, @gateway.send(:gateway_url, true, false)
73
+ end
74
+
75
+ def test_add_address
76
+ post = {}
77
+ @gateway.send(:add_address, post, @options)
78
+ assert_equal '1234 First St., Apt. 1, Melbourne, ACT, AU', post[:CustomerAddress]
79
+ assert_equal @options[:billing_address][:zip], post[:CustomerPostcode]
80
+ end
81
+
82
+ private
83
+ def successful_purchase_response
84
+ <<-XML
85
+ <?xml version="1.0"?>
86
+ <ewayResponse>
87
+ <ewayTrxnStatus>True</ewayTrxnStatus>
88
+ <ewayTrxnNumber>11292</ewayTrxnNumber>
89
+ <ewayTrxnReference/>
90
+ <ewayTrxnOption1/>
91
+ <ewayTrxnOption2/>
92
+ <ewayTrxnOption3/>
93
+ <ewayAuthCode>123456</ewayAuthCode>
94
+ <ewayReturnAmount>100</ewayReturnAmount>
95
+ <ewayTrxnError>00,Transaction Approved(Test CVN Gateway)</ewayTrxnError>
96
+ </ewayResponse>
97
+ XML
98
+ end
99
+
100
+ def failed_purchase_response
101
+ <<-XML
102
+ <?xml version="1.0"?>
103
+ <ewayResponse>
104
+ <ewayTrxnStatus>False</ewayTrxnStatus>
105
+ <ewayTrxnNumber>11290</ewayTrxnNumber>
106
+ <ewayTrxnReference/>
107
+ <ewayTrxnOption1/>
108
+ <ewayTrxnOption2/>
109
+ <ewayTrxnOption3/>
110
+ <ewayAuthCode/>
111
+ <ewayReturnAmount>100</ewayReturnAmount>
112
+ <ewayTrxnError>eWAY Error: Invalid Expiry Date. Your credit card has not been billed for this transaction.(Test CVN Gateway)</ewayTrxnError>
113
+ </ewayResponse>
114
+ XML
115
+ end
116
+ end
117
+
118
+