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,148 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteCardStreamTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.mode = :test
6
+
7
+ @gateway = CardStreamGateway.new(fixtures(:card_stream))
8
+
9
+ @amex = credit_card('374245455400001',
10
+ :month => '12',
11
+ :year => '2009',
12
+ :verification_value => '4887',
13
+ :type => :american_express
14
+ )
15
+
16
+ @uk_maestro = credit_card('675940410531100173',
17
+ :month => '12',
18
+ :year => '2008',
19
+ :issue_number => '0',
20
+ :verification_value => '134',
21
+ :type => :switch
22
+ )
23
+
24
+ @solo = credit_card('676740340572345678',
25
+ :month => '12',
26
+ :year => '2008',
27
+ :issue_number => '1',
28
+ :verification_value => '773',
29
+ :type => :solo
30
+ )
31
+
32
+ @mastercard = credit_card('5301250070000191',
33
+ :month => '12',
34
+ :year => '2009',
35
+ :verification_value => '419',
36
+ :type => :master
37
+ )
38
+
39
+ @declined_card = credit_card('4000300011112220',
40
+ :month => '9',
41
+ :year => '2009'
42
+ )
43
+
44
+ @mastercard_options = {
45
+ :billing_address => {
46
+ :address1 => '25 The Larches',
47
+ :city => "Narborough",
48
+ :state => "Leicester",
49
+ :zip => 'LE10 2RT'
50
+ },
51
+ :order_id => generate_unique_id,
52
+ :description => 'Store purchase'
53
+ }
54
+
55
+ @uk_maestro_options = {
56
+ :billing_address => {
57
+ :address1 => 'The Parkway',
58
+ :address2 => "Larches Approach",
59
+ :city => "Hull",
60
+ :state => "North Humberside",
61
+ :zip => 'HU7 9OP'
62
+ },
63
+ :order_id => generate_unique_id,
64
+ :description => 'Store purchase'
65
+ }
66
+
67
+ @solo_options = {
68
+ :billing_address => {
69
+ :address1 => '5 Zigzag Road',
70
+ :city => 'Isleworth',
71
+ :state => 'Middlesex',
72
+ :zip => 'TW7 8FF'
73
+ },
74
+ :order_id => generate_unique_id,
75
+ :description => 'Store purchase'
76
+ }
77
+ end
78
+
79
+ def test_successful_mastercard_purchase
80
+ assert response = @gateway.purchase(100, @mastercard, @mastercard_options)
81
+ assert_equal 'APPROVED', response.message
82
+ assert_success response
83
+ assert response.test?
84
+ assert !response.authorization.blank?
85
+ end
86
+
87
+ def test_declined_mastercard_purchase
88
+ assert response = @gateway.purchase(10000, @mastercard, @mastercard_options)
89
+ assert_equal 'CARD DECLINED', response.message
90
+ assert_failure response
91
+ assert response.test?
92
+ end
93
+
94
+ def test_expired_mastercard
95
+ @mastercard.year = 2005
96
+ assert response = @gateway.purchase(100, @mastercard, @mastercard_options)
97
+ assert_equal 'CARD EXPIRED', response.message
98
+ assert_failure response
99
+ assert response.test?
100
+ end
101
+
102
+ def test_successful_maestro_purchase
103
+ assert response = @gateway.purchase(100, @uk_maestro, @uk_maestro_options)
104
+ assert_equal 'APPROVED', response.message
105
+ assert_success response
106
+ end
107
+
108
+ def test_successful_solo_purchase
109
+ assert response = @gateway.purchase(100, @solo, @solo_options)
110
+ assert_equal 'APPROVED', response.message
111
+ assert_success response
112
+ assert response.test?
113
+ assert !response.authorization.blank?
114
+ end
115
+
116
+ def test_successful_amex_purchase
117
+ assert response = @gateway.purchase(100, @amex, :order_id => generate_unique_id)
118
+ assert_equal 'APPROVED', response.message
119
+ assert_success response
120
+ assert response.test?
121
+ assert !response.authorization.blank?
122
+ end
123
+
124
+ def test_maestro_missing_start_date_and_issue_date
125
+ @uk_maestro.issue_number = nil
126
+ assert response = @gateway.purchase(100, @uk_maestro, @uk_maestro_options)
127
+ assert_equal 'ISSUE NUMBER MISSING', response.message
128
+ assert_failure response
129
+ assert response.test?
130
+ end
131
+
132
+ def test_invalid_login
133
+ gateway = CardStreamGateway.new(
134
+ :login => '',
135
+ :password => ''
136
+ )
137
+ assert response = gateway.purchase(100, @mastercard, @mastercard_options)
138
+ assert_equal 'MERCHANT ID MISSING', response.message
139
+ assert_failure response
140
+ end
141
+
142
+ def test_unsupported_merchant_currency
143
+ assert response = @gateway.purchase(100, @mastercard, @mastercard_options.update(:currency => 'USD'))
144
+ assert_equal "ERROR 1052", response.message
145
+ assert_failure response
146
+ assert response.test?
147
+ end
148
+ end
@@ -0,0 +1,144 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteCyberSourceTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.gateway_mode = :test
6
+
7
+ @gateway = CyberSourceGateway.new(fixtures(:cyber_source))
8
+
9
+ @credit_card = credit_card('4111111111111111', :type => 'visa')
10
+ @declined_card = credit_card('801111111111111', :type => 'visa')
11
+
12
+ @amount = 100
13
+
14
+ @options = {
15
+ :billing_address => address,
16
+
17
+ :order_id => generate_unique_id,
18
+ :line_items => [
19
+ {
20
+ :declared_value => 100,
21
+ :quantity => 2,
22
+ :code => 'default',
23
+ :description => 'Giant Walrus',
24
+ :sku => 'WA323232323232323'
25
+ },
26
+ {
27
+ :declared_value => 100,
28
+ :quantity => 2,
29
+ :description => 'Marble Snowcone',
30
+ :sku => 'FAKE1232132113123'
31
+ }
32
+ ],
33
+ :currency => 'USD',
34
+ :email => 'someguy1232@fakeemail.net',
35
+ :ignore_avs => 'true',
36
+ :ignore_cvv => 'true'
37
+ }
38
+
39
+ end
40
+
41
+ def test_successful_authorization
42
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
43
+ assert_equal 'Successful transaction', response.message
44
+ assert_success response
45
+ assert response.test?
46
+ assert !response.authorization.blank?
47
+ end
48
+
49
+ def test_unsuccessful_authorization
50
+ assert response = @gateway.authorize(@amount, @declined_card, @options)
51
+ assert response.test?
52
+ assert_equal 'Invalid account number', response.message
53
+ assert_equal false, response.success?
54
+ end
55
+
56
+ def test_successful_tax_calculation
57
+ assert response = @gateway.calculate_tax(@credit_card, @options)
58
+ assert_equal 'Successful transaction', response.message
59
+ assert response.params['totalTaxAmount']
60
+ assert_not_equal "0", response.params['totalTaxAmount']
61
+ assert_success response
62
+ assert response.test?
63
+ end
64
+
65
+ def test_successful_tax_calculation_with_nexus
66
+ total_line_items_value = @options[:line_items].inject(0) do |sum, item|
67
+ sum += item[:declared_value] * item[:quantity]
68
+ end
69
+
70
+ canada_gst_rate = 0.05
71
+ ontario_pst_rate = 0.08
72
+
73
+
74
+ total_pst = total_line_items_value.to_f * ontario_pst_rate / 100
75
+ total_gst = total_line_items_value.to_f * canada_gst_rate / 100
76
+ total_tax = total_pst + total_gst
77
+
78
+ assert response = @gateway.calculate_tax(@credit_card, @options.merge(:nexus => 'ON'))
79
+ assert_equal 'Successful transaction', response.message
80
+ assert response.params['totalTaxAmount']
81
+ assert_equal total_pst, response.params['totalCountyTaxAmount'].to_f
82
+ assert_equal total_gst, response.params['totalStateTaxAmount'].to_f
83
+ assert_equal total_tax, response.params['totalTaxAmount'].to_f
84
+ assert_success response
85
+ assert response.test?
86
+ end
87
+
88
+ def test_successful_purchase
89
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
90
+ assert_equal 'Successful transaction', response.message
91
+ assert_success response
92
+ assert response.test?
93
+ end
94
+
95
+ def test_unsuccessful_purchase
96
+ assert response = @gateway.purchase(@amount, @declined_card, @options)
97
+ assert_equal 'Invalid account number', response.message
98
+ assert_failure response
99
+ assert response.test?
100
+ end
101
+
102
+ def test_authorize_and_capture
103
+ assert auth = @gateway.authorize(@amount, @credit_card, @options)
104
+ assert_success auth
105
+ assert_equal 'Successful transaction', auth.message
106
+
107
+ assert capture = @gateway.capture(@amount, auth.authorization)
108
+ assert_success capture
109
+ end
110
+
111
+ def test_successful_authorization_and_failed_capture
112
+ assert auth = @gateway.authorize(@amount, @credit_card, @options)
113
+ assert_success auth
114
+ assert_equal 'Successful transaction', auth.message
115
+
116
+ assert capture = @gateway.capture(@amount + 10, auth.authorization, @options)
117
+ assert_failure capture
118
+ assert_equal "The requested amount exceeds the originally authorized amount", capture.message
119
+ end
120
+
121
+ def test_failed_capture_bad_auth_info
122
+ assert auth = @gateway.authorize(@amount, @credit_card, @options)
123
+ assert capture = @gateway.capture(@amount, "a;b;c", @options)
124
+ assert_failure capture
125
+ end
126
+
127
+ def test_invalid_login
128
+ gateway = CyberSourceGateway.new( :login => '', :password => '' )
129
+ assert response = gateway.purchase(@amount, @credit_card, @options)
130
+ assert_match /wsse:InvalidSecurity/, response.message
131
+ assert_failure response
132
+ end
133
+
134
+ def test_successful_credit
135
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
136
+ assert_equal 'Successful transaction', response.message
137
+ assert_success response
138
+ assert response.test?
139
+ assert response = @gateway.credit(@amount, response.authorization)
140
+ assert_equal 'Successful transaction', response.message
141
+ assert_success response
142
+ assert response.test?
143
+ end
144
+ end
@@ -0,0 +1,357 @@
1
+ # Author:: MoneySpyder, www.moneyspyder.co.uk
2
+ require 'test_helper'
3
+
4
+ class RemoteDataCashTest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ # gateway to connect to Datacash
8
+ @gateway = DataCashGateway.new(fixtures(:data_cash))
9
+
10
+ @mastercard = CreditCard.new(
11
+ :number => '5473000000000007',
12
+ :month => 3,
13
+ :year => Date.today.year + 2,
14
+ :first_name => 'Mark',
15
+ :last_name => 'McBride',
16
+ :type => :master,
17
+ :verification_value => '547'
18
+ )
19
+
20
+ @mastercard_declined = CreditCard.new(
21
+ :number => '5473000000000106',
22
+ :month => 3,
23
+ :year => Date.today.year + 2,
24
+ :first_name => 'Mark',
25
+ :last_name => 'McBride',
26
+ :type => :master,
27
+ :verification_value => '547'
28
+ )
29
+
30
+ @visa_delta = CreditCard.new(
31
+ :number => '4539792100000003',
32
+ :month => 3,
33
+ :year => Date.today.year + 2,
34
+ :first_name => 'Mark',
35
+ :last_name => 'McBride',
36
+ :type => :visa,
37
+ :verification_value => '444'
38
+ )
39
+
40
+ @solo = CreditCard.new(
41
+ :first_name => 'Cody',
42
+ :last_name => 'Fauser',
43
+ :number => '633499100000000004',
44
+ :month => 3,
45
+ :year => Date.today.year + 2,
46
+ :type => :solo,
47
+ :issue_number => 5,
48
+ :start_month => 12,
49
+ :start_year => 2006,
50
+ :verification_value => 444
51
+ )
52
+
53
+ @address = {
54
+ :name => 'Mark McBride',
55
+ :address1 => 'Flat 12/3',
56
+ :address2 => '45 Main Road',
57
+ :city => 'Sometown',
58
+ :state => 'Somecounty',
59
+ :zip => 'A987AA',
60
+ :phone => '(555)555-5555'
61
+ }
62
+
63
+ @params = {
64
+ :order_id => generate_unique_id,
65
+ :billing_address => @address
66
+ }
67
+
68
+ @amount = 198
69
+ end
70
+
71
+ # Testing that we can successfully make a purchase in a one step
72
+ # operation
73
+ def test_successful_purchase
74
+ response = @gateway.purchase(@amount, @mastercard, @params)
75
+ assert_success response
76
+ assert response.test?
77
+ end
78
+
79
+ #the amount is changed to £1.99 - the DC test server won't check the
80
+ #address details - this is more a check on the passed ExtendedPolicy
81
+ def test_successful_purchase_without_address_check
82
+ response = @gateway.purchase(199, @mastercard, @params)
83
+ assert_success response
84
+ assert response.test?
85
+ end
86
+
87
+ # Note the Datacash test server regularly times out on switch requests
88
+ def test_successful_purchase_with_solo_card
89
+ response = @gateway.purchase(@amount, @solo, @params)
90
+ assert_success response
91
+ assert response.test?
92
+ end
93
+
94
+ # this card number won't check the address details - testing extended
95
+ # policy
96
+ def test_successful_purchase_without_address_check2
97
+ @solo.number = '633499110000000003'
98
+
99
+ response = @gateway.purchase(@amount, @solo, @params)
100
+ assert_success response
101
+ assert response.test?
102
+ end
103
+
104
+ # Testing purchase with request to set up recurring payment account
105
+ def test_successful_purchase_without_account_set_up_and_repeat_payments
106
+ response = @gateway.purchase(@amount, @mastercard, @params)
107
+ assert_success response
108
+ assert response.authorization.to_s.split(';')[2].blank?
109
+ assert response.test?
110
+ end
111
+
112
+ # Testing purchase with request to set up recurring payment account
113
+ def test_successful_purchase_with_account_set_up_and_repeat_payments
114
+ @params[:set_up_continuous_authority] = true
115
+ response = @gateway.purchase(@amount, @mastercard, @params)
116
+ assert_success response
117
+ assert !response.authorization.to_s.split(';')[2].blank?
118
+ assert response.test?
119
+
120
+ #Make second payment on the continuous authorization that was set up in the first purchase
121
+ second_order_params = { :order_id => generate_unique_id }
122
+ purchase = @gateway.purchase(201, response.params['ca_reference'], second_order_params)
123
+ assert_success purchase
124
+ assert purchase.test?
125
+ end
126
+
127
+ def test_successful_purchase_with_account_set_up_and_repeat_payments_with_visa_delta_card
128
+ @params[:set_up_continuous_authority] = true
129
+ response = @gateway.purchase(@amount, @visa_delta, @params)
130
+ assert_success response
131
+ assert !response.authorization.to_s.split(';')[2].blank?
132
+ assert response.test?
133
+
134
+ #Make second payment on the continuous authorization that was set up in the first purchase
135
+ second_order_params = { :order_id => generate_unique_id }
136
+ purchase = @gateway.purchase(201, response.params['ca_reference'], second_order_params)
137
+ assert_success purchase
138
+ assert purchase.test?
139
+ end
140
+
141
+ def test_purchase_with_account_set_up_for_repeat_payments_fails_for_solo_card
142
+ @params[:set_up_continuous_authority] = true
143
+ response = @gateway.purchase(@amount, @solo, @params)
144
+ assert_equal '92', response.params['status'] # Error code for CA not supported
145
+ assert_equal 'CA Not Supported', response.message
146
+ assert response.test?
147
+ end
148
+
149
+ def test_successful_authorization_and_capture_with_account_set_up_and_second_purchase
150
+ #Authorize first payment
151
+ @params[:set_up_continuous_authority] = true
152
+ first_authorization = @gateway.authorize(@amount, @mastercard, @params)
153
+ assert_success first_authorization
154
+ assert !first_authorization.authorization.to_s.split(';')[2].blank?
155
+ assert first_authorization.test?
156
+
157
+ #Capture first payment
158
+ capture = @gateway.capture(@amount, first_authorization.authorization, @params)
159
+ assert_success capture
160
+ assert capture.test?
161
+
162
+ #Collect second purchase
163
+ second_order_params = { :order_id => generate_unique_id }
164
+ purchase = @gateway.purchase(201, first_authorization.authorization, second_order_params)
165
+ assert_success purchase
166
+ assert purchase.test?
167
+ end
168
+
169
+ def test_duplicate_order_id
170
+ response = @gateway.purchase(@amount, @mastercard, @params)
171
+ assert_success response
172
+
173
+ duplicate_response = @gateway.purchase(@amount, @mastercard, @params)
174
+ assert_failure duplicate_response
175
+ assert_equal 'Duplicate reference', duplicate_response.message
176
+ assert duplicate_response.test?
177
+ end
178
+
179
+ def test_invalid_verification_number
180
+ @mastercard.verification_value = 123
181
+ response = @gateway.purchase(@amount, @mastercard, @params)
182
+ assert_failure response
183
+ assert_equal 'CV2AVS DECLINED', response.message
184
+ assert response.test?
185
+ end
186
+
187
+ def test_invalid_expiry_month
188
+ @mastercard.month = 13
189
+ response = @gateway.purchase(@amount, @mastercard, @params)
190
+ assert_failure response
191
+ assert_equal 'Expiry date invalid', response.message
192
+ assert response.test?
193
+ end
194
+
195
+ def test_invalid_expiry_year
196
+ @mastercard.year = 1999
197
+ response = @gateway.purchase(@amount, @mastercard, @params)
198
+ assert_failure response
199
+ assert_equal 'Card has already expired', response.message
200
+ assert response.test?
201
+ end
202
+
203
+ def test_declined_card
204
+ response = @gateway.purchase(@amount, @mastercard_declined, @params)
205
+ assert_failure response
206
+ assert_equal 'DECLINED', response.message
207
+ assert response.test?
208
+ end
209
+
210
+ def test_successful_authorization_and_capture
211
+ authorization = @gateway.authorize(@amount, @mastercard, @params)
212
+ assert_success authorization
213
+ assert authorization.test?
214
+
215
+ capture = @gateway.capture(@amount, authorization.authorization, @params)
216
+ assert_success capture
217
+ assert capture.test?
218
+ end
219
+
220
+ def test_unsuccessful_capture
221
+ response = @gateway.capture(@amount, ';1234', @params)
222
+ assert_failure response
223
+ assert_equal 'AUTHCODE field required', response.message
224
+ assert response.test?
225
+ end
226
+
227
+ def test_successful_authorization_and_void
228
+ authorization = @gateway.authorize(@amount, @mastercard, @params)
229
+ assert_success authorization
230
+ assert authorization.test?
231
+
232
+ void = @gateway.void(authorization.authorization, @params)
233
+ assert_success void
234
+ assert void.test?
235
+ end
236
+
237
+ def test_successfully_purchase_and_void
238
+ purchase = @gateway.purchase(@amount, @mastercard, @params)
239
+ assert_success purchase
240
+ assert purchase.test?
241
+
242
+ void = @gateway.void(purchase.authorization, @params)
243
+ assert_success void
244
+ assert void.test?
245
+ end
246
+
247
+
248
+ def test_successful_refund
249
+ response = @gateway.credit(@amount, @mastercard, @params)
250
+ assert_success response
251
+ assert !response.params['datacash_reference'].blank?
252
+ assert !response.params['merchantreference'].blank?
253
+
254
+ assert response.test?
255
+ end
256
+
257
+ def test_successful_transaction_refund
258
+ purchase = @gateway.purchase(@amount, @mastercard, @params)
259
+ assert_success purchase
260
+ assert purchase.test?
261
+
262
+ refund = @gateway.credit(@amount, purchase.params['datacash_reference'])
263
+ assert_success refund
264
+ assert !refund.params['datacash_reference'].blank?
265
+ assert !refund.params['merchantreference'].blank?
266
+
267
+ assert refund.test?
268
+ end
269
+
270
+ def test_successful_transaction_refund_with_money_set_to_nil
271
+ purchase = @gateway.purchase(@amount, @mastercard, @params)
272
+ assert_success purchase
273
+ assert purchase.test?
274
+
275
+ refund = @gateway.credit(nil, purchase.params['datacash_reference'])
276
+ assert_success refund
277
+ assert refund.test?
278
+ end
279
+
280
+ def test_successful_transaction_refund_in_two_stages
281
+ purchase = @gateway.purchase(@amount, @mastercard, @params)
282
+ assert_success purchase
283
+ assert purchase.test?
284
+
285
+ first_partial_refund = @gateway.credit(100, purchase.params['datacash_reference'])
286
+ assert_success first_partial_refund
287
+ assert first_partial_refund.test?
288
+
289
+ second_partial_refund = @gateway.credit(98, purchase.params['datacash_reference'])
290
+ assert_success second_partial_refund
291
+ assert second_partial_refund.test?
292
+ end
293
+
294
+ def test_successful_partial_transaction_refund
295
+ purchase = @gateway.purchase(@amount, @mastercard, @params)
296
+ assert_success purchase
297
+ assert purchase.test?
298
+
299
+ partial_refund = @gateway.credit(100, purchase.params['datacash_reference'])
300
+ assert_success partial_refund
301
+ assert partial_refund.test?
302
+ end
303
+
304
+ def test_fail_to_refund_too_much
305
+ purchase = @gateway.purchase(@amount, @mastercard, @params)
306
+ assert_success purchase
307
+ assert purchase.test?
308
+
309
+ refund_too_much = @gateway.credit(500, purchase.params['datacash_reference'])
310
+ assert_failure refund_too_much
311
+ assert_equal 'Refund amount > orig 1.98', refund_too_much.message
312
+ assert refund_too_much.test?
313
+ end
314
+
315
+ def test_fail_to_refund_with_declined_purchase_reference
316
+ declined_purchase = @gateway.purchase(@amount, @mastercard_declined, @params)
317
+ assert_failure declined_purchase
318
+ assert declined_purchase.test?
319
+
320
+ refund = @gateway.credit(@amount, declined_purchase.params['datacash_reference'])
321
+ assert_failure refund
322
+ assert_equal 'Cannot refund transaction', refund.message
323
+ assert refund.test?
324
+ end
325
+
326
+ def test_fail_to_refund_purchase_which_is_already_refunded
327
+ purchase = @gateway.purchase(@amount, @mastercard, @params)
328
+ assert_success purchase
329
+ assert purchase.test?
330
+
331
+ first_refund = @gateway.credit(nil, purchase.params['datacash_reference'])
332
+ assert_success first_refund
333
+ assert first_refund.test?
334
+
335
+ second_refund = @gateway.credit(@amount, purchase.params['datacash_reference'])
336
+ assert_failure second_refund
337
+ assert_equal '1.98 > remaining funds 0.00', second_refund.message
338
+ assert second_refund.test?
339
+ end
340
+
341
+ # Check short merchant references are reformatted
342
+ def test_merchant_reference_that_is_too_short
343
+ @params[:order_id] = @params[:order_id].first(5)
344
+ response = @gateway.purchase(@amount, @mastercard, @params)
345
+ assert_success response
346
+ assert response.test?
347
+ end
348
+
349
+ # Check long merchant references are reformatted
350
+ def test_merchant_reference_that_is_too_long
351
+ @params[:order_id] = "#{@params[:order_id]}1234356"
352
+ response = @gateway.purchase(@amount, @mastercard, @params)
353
+ assert_success response
354
+ assert response.test?
355
+ end
356
+
357
+ end