tomriley-active_merchant 1.4.2.3

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 (278) hide show
  1. data/CHANGELOG +442 -0
  2. data/CONTRIBUTERS +102 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README +134 -0
  5. data/Rakefile +153 -0
  6. data/active_merchant.gemspec +15 -0
  7. data/gem-public_cert.pem +20 -0
  8. data/init.rb +4 -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 +28 -0
  17. data/lib/active_merchant/billing/gateway.rb +158 -0
  18. data/lib/active_merchant/billing/gateways/authorize_net.rb +646 -0
  19. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +702 -0
  20. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
  21. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  22. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  23. data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
  24. data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
  25. data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
  26. data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
  27. data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
  28. data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
  29. data/lib/active_merchant/billing/gateways/eway.rb +272 -0
  30. data/lib/active_merchant/billing/gateways/exact.rb +222 -0
  31. data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
  32. data/lib/active_merchant/billing/gateways/linkpoint.rb +396 -0
  33. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  34. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  35. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  36. data/lib/active_merchant/billing/gateways/moneris.rb +205 -0
  37. data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
  38. data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
  39. data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
  40. data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
  41. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
  42. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
  43. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  44. data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
  45. data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
  46. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
  47. data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
  48. data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
  49. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +325 -0
  50. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
  51. data/lib/active_merchant/billing/gateways/paypal.rb +108 -0
  52. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  53. data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
  54. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  55. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  56. data/lib/active_merchant/billing/gateways/protx.rb +349 -0
  57. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  58. data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
  59. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  60. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  61. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  62. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
  63. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  64. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  65. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  66. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  67. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  68. data/lib/active_merchant/billing/gateways/skip_jack.rb +442 -0
  69. data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
  70. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  71. data/lib/active_merchant/billing/gateways/transax.rb +26 -0
  72. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  73. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  74. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  75. data/lib/active_merchant/billing/gateways/viaklix.rb +165 -0
  76. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  77. data/lib/active_merchant/billing/gateways.rb +3 -0
  78. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  79. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  80. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  81. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  82. data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
  83. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
  84. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
  85. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  86. data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
  87. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  88. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  89. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
  90. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  91. data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
  92. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  93. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  94. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  95. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  96. data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
  97. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  98. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  99. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  100. data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
  101. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  102. data/lib/active_merchant/billing/integrations/paypal/helper.rb +118 -0
  103. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  104. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  105. data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
  106. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  107. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  108. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  109. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  110. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  111. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  112. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  113. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  114. data/lib/active_merchant/billing/integrations.rb +22 -0
  115. data/lib/active_merchant/billing/response.rb +32 -0
  116. data/lib/active_merchant/lib/connection.rb +170 -0
  117. data/lib/active_merchant/lib/country.rb +319 -0
  118. data/lib/active_merchant/lib/error.rb +4 -0
  119. data/lib/active_merchant/lib/post_data.rb +22 -0
  120. data/lib/active_merchant/lib/posts_data.rb +47 -0
  121. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  122. data/lib/active_merchant/lib/utils.rb +18 -0
  123. data/lib/active_merchant/lib/validateable.rb +76 -0
  124. data/lib/active_merchant.rb +60 -0
  125. data/lib/certs/cacert.pem +7815 -0
  126. data/lib/support/gateway_support.rb +58 -0
  127. data/script/destroy +14 -0
  128. data/script/generate +14 -0
  129. data/test/fixtures.yml +330 -0
  130. data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
  131. data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
  132. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  133. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  134. data/test/remote/gateways/remote_braintree_test.rb +154 -0
  135. data/test/remote/gateways/remote_card_stream_test.rb +148 -0
  136. data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
  137. data/test/remote/gateways/remote_data_cash_test.rb +357 -0
  138. data/test/remote/gateways/remote_efsnet_test.rb +81 -0
  139. data/test/remote/gateways/remote_eway_test.rb +74 -0
  140. data/test/remote/gateways/remote_exact_test.rb +60 -0
  141. data/test/remote/gateways/remote_instapay_test.rb +61 -0
  142. data/test/remote/gateways/remote_linkpoint_test.rb +112 -0
  143. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
  144. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  145. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  146. data/test/remote/gateways/remote_moneris_test.rb +82 -0
  147. data/test/remote/gateways/remote_net_registry_test.rb +85 -0
  148. data/test/remote/gateways/remote_netbilling_test.rb +70 -0
  149. data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
  150. data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
  151. data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
  152. data/test/remote/gateways/remote_payflow_test.rb +237 -0
  153. data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
  154. data/test/remote/gateways/remote_payment_express_test.rb +136 -0
  155. data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
  156. data/test/remote/gateways/remote_paypal_test.rb +167 -0
  157. data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
  158. data/test/remote/gateways/remote_protx_test.rb +219 -0
  159. data/test/remote/gateways/remote_psigate_test.rb +50 -0
  160. data/test/remote/gateways/remote_psl_card_test.rb +125 -0
  161. data/test/remote/gateways/remote_quickpay_test.rb +190 -0
  162. data/test/remote/gateways/remote_realex_test.rb +224 -0
  163. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  164. data/test/remote/gateways/remote_sage_test.rb +87 -0
  165. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  166. data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
  167. data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
  168. data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
  169. data/test/remote/gateways/remote_skipjack_test.rb +105 -0
  170. data/test/remote/gateways/remote_trans_first_test.rb +34 -0
  171. data/test/remote/gateways/remote_transax_test.rb +112 -0
  172. data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
  173. data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
  174. data/test/remote/gateways/remote_verifi_test.rb +107 -0
  175. data/test/remote/gateways/remote_viaklix_test.rb +43 -0
  176. data/test/remote/gateways/remote_wirecard_test.rb +111 -0
  177. data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
  178. data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
  179. data/test/test_helper.rb +182 -0
  180. data/test/unit/avs_result_test.rb +59 -0
  181. data/test/unit/base_test.rb +55 -0
  182. data/test/unit/check_test.rb +88 -0
  183. data/test/unit/connection_test.rb +129 -0
  184. data/test/unit/country_code_test.rb +33 -0
  185. data/test/unit/country_test.rb +64 -0
  186. data/test/unit/credit_card_formatting_test.rb +19 -0
  187. data/test/unit/credit_card_methods_test.rb +170 -0
  188. data/test/unit/credit_card_test.rb +318 -0
  189. data/test/unit/cvv_result_test.rb +33 -0
  190. data/test/unit/expiry_date_test.rb +21 -0
  191. data/test/unit/gateways/authorize_net_cim_test.rb +638 -0
  192. data/test/unit/gateways/authorize_net_test.rb +290 -0
  193. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  194. data/test/unit/gateways/beanstream_test.rb +108 -0
  195. data/test/unit/gateways/bogus_test.rb +46 -0
  196. data/test/unit/gateways/braintree_test.rb +126 -0
  197. data/test/unit/gateways/card_stream_test.rb +90 -0
  198. data/test/unit/gateways/cyber_source_test.rb +188 -0
  199. data/test/unit/gateways/data_cash_test.rb +133 -0
  200. data/test/unit/gateways/efsnet_test.rb +123 -0
  201. data/test/unit/gateways/eway_test.rb +118 -0
  202. data/test/unit/gateways/exact_test.rb +156 -0
  203. data/test/unit/gateways/gateway_test.rb +48 -0
  204. data/test/unit/gateways/instapay_test.rb +102 -0
  205. data/test/unit/gateways/linkpoint_test.rb +167 -0
  206. data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
  207. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  208. data/test/unit/gateways/moneris_test.rb +158 -0
  209. data/test/unit/gateways/net_registry_test.rb +416 -0
  210. data/test/unit/gateways/netbilling_test.rb +54 -0
  211. data/test/unit/gateways/pay_junction_test.rb +123 -0
  212. data/test/unit/gateways/pay_secure_test.rb +71 -0
  213. data/test/unit/gateways/payflow_express_test.rb +173 -0
  214. data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
  215. data/test/unit/gateways/payflow_test.rb +305 -0
  216. data/test/unit/gateways/payflow_uk_test.rb +30 -0
  217. data/test/unit/gateways/payment_express_test.rb +195 -0
  218. data/test/unit/gateways/paypal_express_test.rb +382 -0
  219. data/test/unit/gateways/paypal_test.rb +520 -0
  220. data/test/unit/gateways/plugnpay_test.rb +86 -0
  221. data/test/unit/gateways/protx_test.rb +139 -0
  222. data/test/unit/gateways/psigate_test.rb +169 -0
  223. data/test/unit/gateways/psl_card_test.rb +64 -0
  224. data/test/unit/gateways/quickpay_test.rb +112 -0
  225. data/test/unit/gateways/realex_test.rb +151 -0
  226. data/test/unit/gateways/sage_bankcard_test.rb +162 -0
  227. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  228. data/test/unit/gateways/secure_pay_au_test.rb +207 -0
  229. data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
  230. data/test/unit/gateways/secure_pay_test.rb +87 -0
  231. data/test/unit/gateways/skip_jack_test.rb +133 -0
  232. data/test/unit/gateways/trans_first_test.rb +112 -0
  233. data/test/unit/gateways/trust_commerce_test.rb +90 -0
  234. data/test/unit/gateways/usa_epay_test.rb +128 -0
  235. data/test/unit/gateways/verifi_test.rb +96 -0
  236. data/test/unit/gateways/viaklix_test.rb +78 -0
  237. data/test/unit/gateways/wirecard_test.rb +250 -0
  238. data/test/unit/generators/test_gateway_generator.rb +46 -0
  239. data/test/unit/generators/test_generator_helper.rb +20 -0
  240. data/test/unit/generators/test_integration_generator.rb +53 -0
  241. data/test/unit/integrations/action_view_helper_test.rb +50 -0
  242. data/test/unit/integrations/bogus_module_test.rb +20 -0
  243. data/test/unit/integrations/chronopay_module_test.rb +13 -0
  244. data/test/unit/integrations/gestpay_module_test.rb +14 -0
  245. data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
  246. data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
  247. data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
  248. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
  249. data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
  250. data/test/unit/integrations/helpers/paypal_helper_test.rb +162 -0
  251. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  252. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
  253. data/test/unit/integrations/hi_trust_module_test.rb +13 -0
  254. data/test/unit/integrations/nochex_module_test.rb +13 -0
  255. data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
  256. data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
  257. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
  258. data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
  259. data/test/unit/integrations/notifications/notification_test.rb +54 -0
  260. data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
  261. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  262. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
  263. data/test/unit/integrations/paypal_module_test.rb +28 -0
  264. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  265. data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
  266. data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
  267. data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
  268. data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
  269. data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
  270. data/test/unit/integrations/returns/return_test.rb +11 -0
  271. data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
  272. data/test/unit/integrations/two_checkout_module_test.rb +13 -0
  273. data/test/unit/post_data_test.rb +55 -0
  274. data/test/unit/posts_data_test.rb +48 -0
  275. data/test/unit/response_test.rb +28 -0
  276. data/test/unit/utils_test.rb +7 -0
  277. data/test/unit/validateable_test.rb +60 -0
  278. metadata +364 -0
@@ -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
@@ -0,0 +1,81 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteEfsnetTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ Base.gateway_mode = :test
7
+
8
+ @gateway = EfsnetGateway.new(fixtures(:efsnet))
9
+
10
+ @credit_card = credit_card('4000100011112224')
11
+
12
+ @amount = 100
13
+ @declined_amount = 156
14
+
15
+ @options = { :order_id => generate_unique_id,
16
+ :billing_address => address
17
+ }
18
+ end
19
+
20
+ def test_successful_purchase
21
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
22
+ assert_success response
23
+ assert_equal 'Approved', response.message
24
+ assert response.test?
25
+ end
26
+
27
+ def test_successful_force
28
+ assert response = @gateway.force(@amount, '123456', @credit_card, @options)
29
+ assert_success response
30
+ assert_equal 'Approved', response.message
31
+ end
32
+
33
+ def test_successful_voice_authorize
34
+ assert response = @gateway.voice_authorize(@amount, '123456', @credit_card, @options)
35
+ assert_success response
36
+ assert_equal 'Accepted', response.message
37
+ end
38
+
39
+ def test_unsuccessful_purchase
40
+ assert response = @gateway.purchase(@declined_amount, @credit_card, @options)
41
+ assert_failure response
42
+ assert_equal 'Declined', response.message
43
+ end
44
+
45
+ def test_authorize_and_capture
46
+ amount = @amount
47
+ assert auth = @gateway.authorize(amount, @credit_card, @options)
48
+ assert_success auth
49
+ assert_equal 'Approved', auth.message
50
+ assert auth.authorization
51
+
52
+ assert capture = @gateway.capture(amount, auth.authorization, @options)
53
+ assert_success capture
54
+ end
55
+
56
+ def test_purchase_and_void
57
+ amount = @amount
58
+ assert purchase = @gateway.purchase(amount, @credit_card, @options)
59
+ assert_success purchase
60
+ assert_equal 'Approved', purchase.message
61
+ assert purchase.authorization
62
+ assert void = @gateway.void(purchase.authorization, @options)
63
+ assert_success void
64
+ end
65
+
66
+ def test_failed_capture
67
+ assert response = @gateway.capture(@amount, '1;1', @options)
68
+ assert_failure response
69
+ assert_equal 'Bad original transaction', response.message
70
+ end
71
+
72
+ def test_invalid_login
73
+ gateway = EfsnetGateway.new(
74
+ :login => '',
75
+ :password => ''
76
+ )
77
+ assert response = gateway.purchase(@amount, @credit_card, @options)
78
+ assert_equal 'Invalid credentials', response.message
79
+ assert_failure response
80
+ end
81
+ end
@@ -0,0 +1,74 @@
1
+ require 'test_helper'
2
+
3
+ class EwayTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.gateway_mode = :test
6
+ @gateway = EwayGateway.new(fixtures(:eway))
7
+
8
+ @credit_card_success = credit_card('4444333322221111')
9
+
10
+ @credit_card_fail = credit_card('1234567812345678',
11
+ :month => Time.now.month,
12
+ :year => Time.now.year
13
+ )
14
+
15
+ @params = {
16
+ :order_id => '1230123',
17
+ :email => 'bob@testbob.com',
18
+ :billing_address => { :address1 => '47 Bobway',
19
+ :city => 'Bobville',
20
+ :state => 'WA',
21
+ :country => 'AU',
22
+ :zip => '2000'
23
+ } ,
24
+ :description => 'purchased items'
25
+ }
26
+ end
27
+
28
+ def test_invalid_amount
29
+ assert response = @gateway.purchase(101, @credit_card_success, @params)
30
+ assert_failure response
31
+ assert response.test?
32
+ assert_equal EwayGateway::MESSAGES["01"], response.message
33
+ end
34
+
35
+ def test_purchase_success_with_verification_value
36
+ assert response = @gateway.purchase(100, @credit_card_success, @params)
37
+ assert_equal '123456', response.authorization
38
+ assert_success response
39
+ assert response.test?
40
+ assert_equal EwayGateway::MESSAGES["00"], response.message
41
+ end
42
+
43
+ def test_invalid_expiration_date
44
+ @credit_card_success.year = 2005
45
+ assert response = @gateway.purchase(100, @credit_card_success, @params)
46
+ assert_failure response
47
+ assert response.test?
48
+ end
49
+
50
+ def test_purchase_with_invalid_verification_value
51
+ @credit_card_success.verification_value = 'AAA'
52
+ assert response = @gateway.purchase(100, @credit_card_success, @params)
53
+ assert_nil response.authorization
54
+ assert_failure response
55
+ assert response.test?
56
+ end
57
+
58
+ def test_purchase_success_without_verification_value
59
+ @credit_card_success.verification_value = nil
60
+
61
+ assert response = @gateway.purchase(100, @credit_card_success, @params)
62
+ assert_equal '123456', response.authorization
63
+ assert_success response
64
+ assert response.test?
65
+ assert_equal EwayGateway::MESSAGES["00"], response.message
66
+ end
67
+
68
+ def test_purchase_error
69
+ assert response = @gateway.purchase(100, @credit_card_fail, @params)
70
+ assert_nil response.authorization
71
+ assert_equal false, response.success?
72
+ assert response.test?
73
+ end
74
+ end
@@ -0,0 +1,60 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteExactTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+
7
+ @gateway = ExactGateway.new(fixtures(:exact))
8
+ @credit_card = credit_card
9
+ @amount = 100
10
+ @options = {
11
+ :order_id => '1',
12
+ :billing_address => address,
13
+ :description => 'Store Purchase'
14
+ }
15
+ end
16
+
17
+ def test_successful_purchase
18
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
19
+ assert_match /Transaction Normal/, response.message
20
+ assert_success response
21
+ end
22
+
23
+ def test_unsuccessful_purchase
24
+ # ask for error 13 response (Amount Error) via dollar amount 5,000 + error
25
+ @amount = 501300
26
+ assert response = @gateway.purchase(@amount, @credit_card, @options )
27
+ assert_match /Transaction Normal/, response.message
28
+ assert_failure response
29
+ end
30
+
31
+ def test_purchase_and_credit
32
+ assert purchase = @gateway.purchase(@amount, @credit_card, @options)
33
+ assert_success purchase
34
+ assert purchase.authorization
35
+ assert credit = @gateway.credit(@amount, purchase.authorization)
36
+ assert_success credit
37
+ end
38
+
39
+ def test_authorize_and_capture
40
+ assert auth = @gateway.authorize(@amount, @credit_card, @options)
41
+ assert_success auth
42
+ assert auth.authorization
43
+ assert capture = @gateway.capture(@amount, auth.authorization)
44
+ assert_success capture
45
+ end
46
+
47
+ def test_failed_capture
48
+ assert response = @gateway.capture(@amount, '')
49
+ assert_failure response
50
+ assert_match /Precondition Failed/i, response.message
51
+ end
52
+
53
+ def test_invalid_login
54
+ gateway = ExactGateway.new( :login => "NotARealUser",
55
+ :password => "NotARealPassword" )
56
+ assert response = gateway.purchase(@amount, @credit_card, @options)
57
+ assert_equal "Invalid Logon", response.message
58
+ assert_failure response
59
+ end
60
+ end
@@ -0,0 +1,61 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteInstapayTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = InstapayGateway.new(fixtures(:instapay))
7
+
8
+ @amount = 100
9
+ @credit_card = credit_card('5454545454545454')
10
+ @declined_card = credit_card('4000300011112220')
11
+
12
+ @options = {
13
+ :order_id => generate_unique_id,
14
+ :billing_address => address,
15
+ :shipping_address => address,
16
+ :description => 'Store Purchase'
17
+ }
18
+ end
19
+
20
+ def test_successful_purchase
21
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
22
+ assert_success response
23
+ assert_equal InstapayGateway::SUCCESS_MESSAGE, response.message
24
+ end
25
+
26
+ def test_failed_purchase
27
+ assert response = @gateway.purchase(@amount, @declined_card, @options)
28
+ assert_failure response
29
+ end
30
+
31
+ def test_succesful_authorization
32
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
33
+ assert_success response
34
+ assert_equal InstapayGateway::SUCCESS_MESSAGE, response.message
35
+ end
36
+
37
+ def test_failed_authorization
38
+ assert response = @gateway.authorize(@amount, @declined_card, @options)
39
+ assert_failure response
40
+ end
41
+
42
+ def test_authorization_and_capture
43
+ assert authorization = @gateway.authorize(@amount, @credit_card, @options)
44
+ assert_success authorization
45
+
46
+ assert capture = @gateway.capture(@amount, authorization.authorization)
47
+ assert_success capture
48
+ assert_equal InstapayGateway::SUCCESS_MESSAGE, capture.message
49
+ end
50
+
51
+ def test_invalid_login
52
+ gateway = InstapayGateway.new(
53
+ :login => 'X',
54
+ :password => 'Y'
55
+ )
56
+
57
+ assert response = gateway.purchase(@amount, @credit_card)
58
+ assert_failure response
59
+ assert_equal "Invalid merchant", response.message
60
+ end
61
+ end