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,46 @@
1
+ require 'test_helper'
2
+
3
+ class RemoveUsaEpayTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.gateway_mode = :test
6
+ @gateway = UsaEpayGateway.new(fixtures(:usa_epay))
7
+ @creditcard = credit_card('4000100011112224')
8
+ @declined_card = credit_card('4000300011112220')
9
+ @options = { :billing_address => address }
10
+ @amount = 100
11
+ end
12
+
13
+ def test_successful_purchase
14
+ assert response = @gateway.purchase(@amount, @creditcard, @options)
15
+ assert_equal 'Success', response.message
16
+ assert_success response
17
+ end
18
+
19
+ def test_unsuccessful_purchase
20
+ assert response = @gateway.purchase(@amount, @declined_card, @options)
21
+ assert_equal 'Card Declined', response.message
22
+ assert_failure response
23
+ end
24
+
25
+ def test_authorize_and_capture
26
+ assert auth = @gateway.authorize(@amount, @creditcard, @options)
27
+ assert_success auth
28
+ assert_equal 'Success', auth.message
29
+ assert auth.authorization
30
+ assert capture = @gateway.capture(@amount, auth.authorization)
31
+ assert_success capture
32
+ end
33
+
34
+ def test_failed_capture
35
+ assert response = @gateway.capture(@amount, '')
36
+ assert_failure response
37
+ assert_equal 'Unable to find original transaciton.', response.message
38
+ end
39
+
40
+ def test_invalid_key
41
+ gateway = UsaEpayGateway.new(:login => '')
42
+ assert response = gateway.purchase(@amount, @creditcard, @options)
43
+ assert_equal 'Specified source key not found.', response.message
44
+ assert_failure response
45
+ end
46
+ end
@@ -0,0 +1,107 @@
1
+ require 'test_helper'
2
+
3
+ class VerifiTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing
5
+
6
+ def setup
7
+ @gateway = VerifiGateway.new(fixtures(:verify))
8
+
9
+ @credit_card = credit_card('4111111111111111')
10
+
11
+ # Replace with your login and password for the Verifi test environment
12
+ @options = {
13
+ :order_id => '37',
14
+ :email => "test@example.com",
15
+ :billing_address => address
16
+ }
17
+
18
+ @amount = 100
19
+ end
20
+
21
+ def test_successful_purchase
22
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
23
+ assert_success response
24
+ assert_equal 'Transaction was Approved', response.message
25
+ assert !response.authorization.blank?
26
+ end
27
+
28
+ def test_unsuccessful_purchase
29
+ @credit_card.number = 'invalid'
30
+
31
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
32
+ assert_failure response
33
+ assert_equal 'Transaction was Rejected by Gateway', response.message
34
+ end
35
+
36
+ # FOR SOME REASON Verify DOESN'T MIND EXPIRED CARDS
37
+ # I talked to support and they said that they are loose on expiration dates being expired.
38
+ def test_expired_credit_card
39
+ @credit_card.year = (Time.now.year - 3)
40
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
41
+ assert_success response
42
+ assert_equal 'Transaction was Approved', response.message
43
+ end
44
+
45
+ def test_successful_authorization
46
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
47
+ assert_success response
48
+ assert_equal 'Transaction was Approved', response.message
49
+ assert response.authorization
50
+ end
51
+
52
+ def test_authorization_and_capture
53
+ assert authorization = @gateway.authorize(@amount, @credit_card, @options)
54
+ assert_success authorization
55
+ assert authorization
56
+ assert capture = @gateway.capture(@amount, authorization.authorization, @options)
57
+ assert_success capture
58
+ assert_equal 'Transaction was Approved', capture.message
59
+ end
60
+
61
+ def test_authorization_and_void
62
+ assert authorization = @gateway.authorize(@amount, @credit_card, @options)
63
+ assert_success authorization
64
+ assert authorization
65
+ assert void = @gateway.void(authorization.authorization, @options)
66
+ assert_success void
67
+ assert_equal 'Transaction was Approved', void.message
68
+ end
69
+
70
+ # Credits are not enabled on test accounts, so this should always fail
71
+ def test_credit
72
+ assert response = @gateway.credit(@amount, @credit_card, @options)
73
+ assert_match /Credits are not enabled/, response.params['responsetext']
74
+ assert_failure response
75
+ end
76
+
77
+ def test_authorization_and_void
78
+ assert authorization = @gateway.authorize(@amount, @credit_card, @options)
79
+ assert_success authorization
80
+ assert void = @gateway.void(authorization.authorization, @options)
81
+ assert_success void
82
+ assert_equal 'Transaction was Approved', void.message
83
+ assert_match /Transaction Void Successful/, void.params['responsetext']
84
+ end
85
+
86
+ def test_purchase_and_credit
87
+ assert purchase = @gateway.purchase(@amount, @credit_card, @options)
88
+ assert_success purchase
89
+
90
+ assert credit = @gateway.credit(@amount, purchase.authorization, @options)
91
+ assert_success credit
92
+ assert_equal 'Transaction was Approved', credit.message
93
+ end
94
+
95
+ def test_bad_login
96
+ gateway = VerifiGateway.new(
97
+ :login => 'X',
98
+ :password => 'Y'
99
+ )
100
+
101
+ assert response = gateway.purchase(@amount, @credit_card, @options)
102
+ assert_equal 'Transaction was Rejected by Gateway', response.message
103
+ assert_equal 'Authentication Failed', response.params['responsetext']
104
+
105
+ assert_failure response
106
+ end
107
+ end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteViaklixTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = ViaklixGateway.new(fixtures(:viaklix))
6
+
7
+ @credit_card = credit_card
8
+ @bad_credit_card = credit_card('invalid')
9
+
10
+ @options = {
11
+ :order_id => '#1000.1',
12
+ :email => "paul@domain.com",
13
+ :description => 'Test Transaction',
14
+ :billing_address => address
15
+ }
16
+ @amount = 100
17
+ end
18
+
19
+ def test_successful_purchase
20
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
21
+
22
+ assert_success response
23
+ assert response.test?
24
+ assert_equal 'APPROVED', response.message
25
+ assert response.authorization
26
+ end
27
+
28
+ def test_failed_purchase
29
+ assert response = @gateway.purchase(@amount, @bad_credit_card, @options)
30
+
31
+ assert_failure response
32
+ assert response.test?
33
+ assert_equal 'The Credit Card Number supplied in the authorization request appears invalid.', response.message
34
+ end
35
+
36
+ def test_credit
37
+ assert purchase = @gateway.purchase(@amount, @credit_card, @options)
38
+ assert_success purchase
39
+
40
+ assert credit = @gateway.credit(@amount, @credit_card)
41
+ assert_success credit
42
+ end
43
+ end
@@ -0,0 +1,111 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+
3
+ class RemoteWirecardTest < Test::Unit::TestCase
4
+
5
+
6
+ def setup
7
+ test_account = fixtures(:wirecard)
8
+ test_account[:signature] = test_account[:login]
9
+ @gateway = WirecardGateway.new(test_account)
10
+
11
+ @amount = 100
12
+ @credit_card = credit_card('4200000000000000')
13
+ @declined_card = credit_card('4000300011112220')
14
+
15
+ @options = {
16
+ :order_id => 1,
17
+ :billing_address => address,
18
+ :description => 'Wirecard remote test purchase',
19
+ :email => 'soleone@example.com'
20
+ }
21
+
22
+ @german_address = {
23
+ :name => 'Jim Deutsch',
24
+ :address1 => '1234 Meine Street',
25
+ :company => 'Widgets Inc',
26
+ :city => 'Koblenz',
27
+ :state => 'Rheinland-Pfalz',
28
+ :zip => '56070',
29
+ :country => 'DE',
30
+ :phone => '0261 12345 23',
31
+ :fax => '0261 12345 23-4'
32
+ }
33
+ end
34
+
35
+ # Success tested
36
+ def test_successful_authorization
37
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
38
+ assert_success response
39
+ assert response.test?
40
+ assert response.message[/THIS IS A DEMO/]
41
+ assert response.authorization
42
+ end
43
+
44
+ def test_successful_authorize_and_capture
45
+ amount = @amount
46
+ assert auth = @gateway.authorize(amount, @credit_card, @options)
47
+ assert_success auth
48
+ assert auth.message[/THIS IS A DEMO/]
49
+ assert auth.authorization
50
+ assert capture = @gateway.capture(amount, auth.authorization, @options)
51
+ assert_success capture
52
+ end
53
+
54
+ def test_successful_purchase
55
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
56
+ # puts response.message
57
+ assert_success response
58
+ assert response.message[/THIS IS A DEMO/]
59
+ end
60
+
61
+ def test_successful_purchase_with_german_address_german_state_and_german_phone
62
+ assert response = @gateway.purchase(@amount, @credit_card, @options.merge(:billing_address => @german_address))
63
+
64
+ assert_success response
65
+ assert response.message[/THIS IS A DEMO/]
66
+ end
67
+
68
+ def test_successful_purchase_with_german_address_no_state_and_invalid_phone
69
+ assert response = @gateway.purchase(@amount, @credit_card, @options.merge(:billing_address => @german_address.merge({:state => nil, :phone => '1234'})))
70
+
71
+ assert_success response
72
+ assert response.message[/THIS IS A DEMO/]
73
+ end
74
+
75
+ def test_successful_purchase_with_german_address_and_valid_phone
76
+ assert response = @gateway.purchase(@amount, @credit_card, @options.merge(:billing_address => @german_address.merge({:phone => '+049-261-1234-123'})))
77
+
78
+ assert_success response
79
+ assert response.message[/THIS IS A DEMO/]
80
+ end
81
+
82
+ # Failure tested
83
+
84
+ def test_wrong_creditcard_authorization
85
+ assert response = @gateway.authorize(@amount, @declined_card, @options)
86
+ assert_failure response
87
+ assert response.test?
88
+ assert response.message[/credit card number not allowed in demo mode/i]
89
+ end
90
+
91
+ def test_wrong_creditcard_purchase
92
+ assert response = @gateway.purchase(@amount, @declined_card, @options)
93
+ assert response.test?
94
+ assert_failure response
95
+ assert response.message[ /Credit card number not allowed in demo mode/ ], "Got wrong response message"
96
+ end
97
+
98
+ def test_unauthorized_capture
99
+ assert response = @gateway.capture(@amount, "1234567890123456789012")
100
+ assert_failure response
101
+ assert_equal "Could not find referenced transaction for GuWID 1234567890123456789012.", response.message
102
+ end
103
+
104
+ def test_invalid_login
105
+ gateway = WirecardGateway.new(:login => '', :password => '', :signature => '')
106
+ assert response = gateway.purchase(@amount, @credit_card, @options)
107
+ assert_failure response
108
+ assert response.message[ /wrong credentials/ ]
109
+ end
110
+
111
+ end
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteGestpayIntegrationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ # Your Gestpay ShopLogin
8
+ @shop_login = 'SHOPLOGIN'
9
+
10
+ @helper = Gestpay::Helper.new('order-500', @shop_login, :amount => '5.00', :currency => 'EUR')
11
+ end
12
+
13
+ def test_get_encryption_string
14
+ # Extra fields don't work yet
15
+ # @helper.customer :first_name => 'Cody', :last_name => 'Fauser', :email => 'codyfauser@gmail.com'
16
+ response = @helper.send(:get_encrypted_string)
17
+ assert !response.blank?
18
+ end
19
+
20
+ def test_get_encryption_string_fails
21
+ @helper = Gestpay::Helper.new('order-500','99999999', :amount => '5.00', :currency => 'EUR')
22
+ assert_raise(StandardError) do
23
+ assert @helper.send(:get_encrypted_string).blank?
24
+ end
25
+ end
26
+
27
+ def test_unknown_shop_for_decryption_request
28
+ assert_raise(StandardError) do
29
+ Gestpay::Notification.new(raw_query_string)
30
+ end
31
+ end
32
+
33
+ private
34
+ def raw_query_string
35
+ "a=900000&b=F7DEB36478FD84760F9134F23C922697272D57DE6D4518EB9B4D468B769D9A3A8071B6EB160B35CB412FC1820C7CC12D17B3141855B1ED55468613702A2E213DDE9DE5B0209E13C416448AE833525959F05693172D7F0656"
36
+ end
37
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ class RemotePaypalIntegrationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @paypal = Paypal::Notification.new('')
8
+ end
9
+
10
+ def tear_down
11
+ ActiveMerchant::Billing::Base.integration_mode = :test
12
+ end
13
+
14
+ def test_raw
15
+ assert_equal "https://www.sandbox.paypal.com/cgi-bin/webscr", Paypal.service_url
16
+ assert_nothing_raised do
17
+ assert_equal false, @paypal.acknowledge
18
+ end
19
+ end
20
+
21
+ def test_valid_sender_always_true
22
+ ActiveMerchant::Billing::Base.integration_mode = :production
23
+ assert @paypal.valid_sender?(nil)
24
+ assert @paypal.valid_sender?('127.0.0.1')
25
+ end
26
+ end
@@ -0,0 +1,182 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
3
+
4
+ require 'active_merchant'
5
+ require 'rubygems'
6
+ require 'money'
7
+ require 'test/unit'
8
+ require 'mocha'
9
+ require 'yaml'
10
+
11
+ begin
12
+ gem 'actionpack'
13
+ rescue LoadError
14
+ raise StandardError, "The view tests need ActionPack installed as gem to run"
15
+ end
16
+
17
+ require 'action_controller'
18
+ require 'action_controller/test_process'
19
+ require 'active_merchant/billing/integrations/action_view_helper'
20
+
21
+ ActiveMerchant::Billing::Base.mode = :test
22
+
23
+ # Test gateways
24
+ class SimpleTestGateway < ActiveMerchant::Billing::Gateway
25
+ end
26
+
27
+ class SubclassGateway < SimpleTestGateway
28
+ end
29
+
30
+
31
+ module ActiveMerchant
32
+ module Assertions
33
+ def assert_field(field, value)
34
+ clean_backtrace do
35
+ assert_equal value, @helper.fields[field]
36
+ end
37
+ end
38
+
39
+ # Allows the testing of you to check for negative assertions:
40
+ #
41
+ # # Instead of
42
+ # assert !something_that_is_false
43
+ #
44
+ # # Do this
45
+ # assert_false something_that_should_be_false
46
+ #
47
+ # An optional +msg+ parameter is available to help you debug.
48
+ def assert_false(boolean, message = nil)
49
+ message = build_message message, '<?> is not false or nil.', boolean
50
+
51
+ clean_backtrace do
52
+ assert_block message do
53
+ not boolean
54
+ end
55
+ end
56
+ end
57
+
58
+ # A handy little assertion to check for a successful response:
59
+ #
60
+ # # Instead of
61
+ # assert_success response
62
+ #
63
+ # # DRY that up with
64
+ # assert_success response
65
+ #
66
+ # A message will automatically show the inspection of the response
67
+ # object if things go afoul.
68
+ def assert_success(response)
69
+ clean_backtrace do
70
+ assert response.success?, "Response failed: #{response.inspect}"
71
+ end
72
+ end
73
+
74
+ # The negative of +assert_success+
75
+ def assert_failure(response)
76
+ clean_backtrace do
77
+ assert_false response.success?, "Response expected to fail: #{response.inspect}"
78
+ end
79
+ end
80
+
81
+ def assert_valid(validateable)
82
+ clean_backtrace do
83
+ assert validateable.valid?, "Expected to be valid"
84
+ end
85
+ end
86
+
87
+ def assert_not_valid(validateable)
88
+ clean_backtrace do
89
+ assert_false validateable.valid?, "Expected to not be valid"
90
+ end
91
+ end
92
+
93
+ private
94
+ def clean_backtrace(&block)
95
+ yield
96
+ rescue Test::Unit::AssertionFailedError => e
97
+ path = File.expand_path(__FILE__)
98
+ raise Test::Unit::AssertionFailedError, e.message, e.backtrace.reject { |line| File.expand_path(line) =~ /#{path}/ }
99
+ end
100
+ end
101
+
102
+ module Fixtures
103
+ HOME_DIR = RUBY_PLATFORM =~ /mswin32/ ? ENV['HOMEPATH'] : ENV['HOME'] unless defined?(HOME_DIR)
104
+ LOCAL_CREDENTIALS = File.join(HOME_DIR.to_s, '.active_merchant/fixtures.yml') unless defined?(LOCAL_CREDENTIALS)
105
+ DEFAULT_CREDENTIALS = File.join(File.dirname(__FILE__), 'fixtures.yml') unless defined?(DEFAULT_CREDENTIALS)
106
+
107
+ private
108
+ def credit_card(number = '4242424242424242', options = {})
109
+ defaults = {
110
+ :number => number,
111
+ :month => 9,
112
+ :year => Time.now.year + 1,
113
+ :first_name => 'Longbob',
114
+ :last_name => 'Longsen',
115
+ :verification_value => '123',
116
+ :type => 'visa'
117
+ }.update(options)
118
+
119
+ Billing::CreditCard.new(defaults)
120
+ end
121
+
122
+ def check(options = {})
123
+ defaults = {
124
+ :name => 'Jim Smith',
125
+ :routing_number => '244183602',
126
+ :account_number => '15378535',
127
+ :account_holder_type => 'personal',
128
+ :account_type => 'checking',
129
+ :number => '1'
130
+ }.update(options)
131
+
132
+ Billing::Check.new(defaults)
133
+ end
134
+
135
+ def address(options = {})
136
+ {
137
+ :name => 'Jim Smith',
138
+ :address1 => '1234 My Street',
139
+ :address2 => 'Apt 1',
140
+ :company => 'Widgets Inc',
141
+ :city => 'Ottawa',
142
+ :state => 'ON',
143
+ :zip => 'K1C2N6',
144
+ :country => 'CA',
145
+ :phone => '(555)555-5555',
146
+ :fax => '(555)555-6666'
147
+ }.update(options)
148
+ end
149
+
150
+ def all_fixtures
151
+ @@fixtures ||= load_fixtures
152
+ end
153
+
154
+ def fixtures(key)
155
+ data = all_fixtures[key] || raise(StandardError, "No fixture data was found for '#{key}'")
156
+
157
+ data.dup
158
+ end
159
+
160
+ def load_fixtures
161
+ file = File.exists?(LOCAL_CREDENTIALS) ? LOCAL_CREDENTIALS : DEFAULT_CREDENTIALS
162
+ yaml_data = YAML.load(File.read(file))
163
+ symbolize_keys(yaml_data)
164
+
165
+ yaml_data
166
+ end
167
+
168
+ def symbolize_keys(hash)
169
+ return unless hash.is_a?(Hash)
170
+
171
+ hash.symbolize_keys!
172
+ hash.each{|k,v| symbolize_keys(v)}
173
+ end
174
+ end
175
+ end
176
+
177
+ Test::Unit::TestCase.class_eval do
178
+ include ActiveMerchant::Billing
179
+ include ActiveMerchant::Assertions
180
+ include ActiveMerchant::Utils
181
+ include ActiveMerchant::Fixtures
182
+ end