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,59 @@
1
+ require 'test_helper'
2
+
3
+ class AVSResultTest < Test::Unit::TestCase
4
+ def test_nil
5
+ result = AVSResult.new(nil)
6
+ end
7
+
8
+ def test_no_match
9
+ result = AVSResult.new(:code => 'N')
10
+ assert_equal 'N', result.code
11
+ assert_equal 'N', result.street_match
12
+ assert_equal 'N', result.postal_match
13
+ assert_equal AVSResult.messages['N'], result.message
14
+ end
15
+
16
+ def test_only_street_match
17
+ result = AVSResult.new(:code => 'A')
18
+ assert_equal 'A', result.code
19
+ assert_equal 'Y', result.street_match
20
+ assert_equal 'N', result.postal_match
21
+ assert_equal AVSResult.messages['A'], result.message
22
+ end
23
+
24
+ def test_only_postal_match
25
+ result = AVSResult.new(:code => 'W')
26
+ assert_equal 'W', result.code
27
+ assert_equal 'N', result.street_match
28
+ assert_equal 'Y', result.postal_match
29
+ assert_equal AVSResult.messages['W'], result.message
30
+ end
31
+
32
+ def test_nil_data
33
+ result = AVSResult.new(:code => nil)
34
+ assert_nil result.code
35
+ assert_nil result.message
36
+ end
37
+
38
+ def test_empty_data
39
+ result = AVSResult.new(:code => '')
40
+ assert_nil result.code
41
+ assert_nil result.message
42
+ end
43
+
44
+ def test_to_hash
45
+ avs_data = AVSResult.new(:code => 'X').to_hash
46
+ assert_equal 'X', avs_data['code']
47
+ assert_equal AVSResult.messages['X'], avs_data['message']
48
+ end
49
+
50
+ def test_street_match
51
+ avs_data = AVSResult.new(:street_match => 'Y')
52
+ assert_equal 'Y', avs_data.street_match
53
+ end
54
+
55
+ def test_postal_match
56
+ avs_data = AVSResult.new(:postal_match => 'Y')
57
+ assert_equal 'Y', avs_data.postal_match
58
+ end
59
+ end
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ class BaseTest < Test::Unit::TestCase
4
+ def setup
5
+ ActiveMerchant::Billing::Base.mode = :test
6
+ end
7
+
8
+ def teardown
9
+ ActiveMerchant::Billing::Base.mode = :test
10
+ end
11
+
12
+ def test_should_return_a_new_gateway_specified_by_symbol_name
13
+ assert_equal BogusGateway, Base.gateway(:bogus)
14
+ assert_equal MonerisGateway, Base.gateway(:moneris)
15
+ assert_equal AuthorizeNetGateway, Base.gateway(:authorize_net)
16
+ assert_equal UsaEpayGateway, Base.gateway(:usa_epay)
17
+ assert_equal LinkpointGateway, Base.gateway(:linkpoint)
18
+ assert_equal AuthorizedNetGateway, Base.gateway(:authorized_net)
19
+ end
20
+
21
+ def test_should_return_an_integration_by_name
22
+ chronopay = Base.integration(:chronopay)
23
+
24
+ assert_equal Integrations::Chronopay, chronopay
25
+ assert_instance_of Integrations::Chronopay::Notification, chronopay.notification('name=cody')
26
+ end
27
+
28
+ def test_should_set_modes
29
+ Base.mode = :test
30
+ assert_equal :test, Base.mode
31
+ assert_equal :test, Base.gateway_mode
32
+ assert_equal :test, Base.integration_mode
33
+
34
+ Base.mode = :production
35
+ assert_equal :production, Base.mode
36
+ assert_equal :production, Base.gateway_mode
37
+ assert_equal :production, Base.integration_mode
38
+
39
+ Base.mode = :development
40
+ Base.gateway_mode = :test
41
+ Base.integration_mode = :staging
42
+ assert_equal :development, Base.mode
43
+ assert_equal :test, Base.gateway_mode
44
+ assert_equal :staging, Base.integration_mode
45
+ end
46
+
47
+ def test_should_identify_if_test_mode
48
+ Base.gateway_mode = :test
49
+ assert Base.test?
50
+
51
+ Base.gateway_mode = :production
52
+ assert_false Base.test?
53
+ end
54
+
55
+ end
@@ -0,0 +1,88 @@
1
+ require 'test_helper'
2
+
3
+ class CheckTest < Test::Unit::TestCase
4
+ VALID_ABA = '111000025'
5
+ INVALID_ABA = '999999999'
6
+ MALFORMED_ABA = 'I like fish'
7
+
8
+ ACCOUNT_NUMBER = '123456789012'
9
+
10
+ def test_validation
11
+ c = Check.new
12
+ assert !c.valid?
13
+ assert !c.errors.empty?
14
+ end
15
+
16
+ def test_first_name_last_name
17
+ check = Check.new(:name => 'Fred Bloggs')
18
+ assert_equal 'Fred', check.first_name
19
+ assert_equal 'Bloggs', check.last_name
20
+ assert_equal 'Fred Bloggs', check.name
21
+ end
22
+
23
+ def test_nil_name
24
+ check = Check.new(:name => nil)
25
+ assert_nil check.first_name
26
+ assert_nil check.last_name
27
+ assert_equal "", check.name
28
+ end
29
+
30
+ def test_valid
31
+ c = Check.new(:name => 'Fred Bloggs',
32
+ :routing_number => VALID_ABA,
33
+ :account_number => ACCOUNT_NUMBER,
34
+ :account_holder_type => 'personal',
35
+ :account_type => 'checking')
36
+ assert c.valid?
37
+ end
38
+
39
+ def test_invalid_routing_number
40
+ c = Check.new(:routing_number => INVALID_ABA)
41
+ assert !c.valid?
42
+ assert_equal c.errors.on(:routing_number), "is invalid"
43
+ end
44
+
45
+ def test_malformed_routing_number
46
+ c = Check.new(:routing_number => MALFORMED_ABA)
47
+ assert !c.valid?
48
+ assert_equal c.errors.on(:routing_number), "is invalid"
49
+ end
50
+
51
+ def test_account_holder_type
52
+ c = Check.new
53
+ c.account_holder_type = 'business'
54
+ c.valid?
55
+ assert !c.errors.on(:account_holder_type)
56
+
57
+ c.account_holder_type = 'personal'
58
+ c.valid?
59
+ assert !c.errors.on(:account_holder_type)
60
+
61
+ c.account_holder_type = 'pleasure'
62
+ c.valid?
63
+ assert_equal c.errors.on(:account_holder_type), 'must be personal or business'
64
+
65
+ c.account_holder_type = nil
66
+ c.valid?
67
+ assert !c.errors.on(:account_holder_type)
68
+ end
69
+
70
+ def test_account_type
71
+ c = Check.new
72
+ c.account_type = 'checking'
73
+ c.valid?
74
+ assert !c.errors.on(:account_type)
75
+
76
+ c.account_type = 'savings'
77
+ c.valid?
78
+ assert !c.errors.on(:account_type)
79
+
80
+ c.account_type = 'moo'
81
+ c.valid?
82
+ assert_equal c.errors.on(:account_type), "must be checking or savings"
83
+
84
+ c.account_type = nil
85
+ c.valid?
86
+ assert !c.errors.on(:account_type)
87
+ end
88
+ end
@@ -0,0 +1,129 @@
1
+ require 'test_helper'
2
+
3
+ class ConnectionTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @ok = stub(:code => 200, :message => 'OK', :body => 'success')
7
+ @internal_server_error = stub(:code => 500, :message => 'Internal Server Error', :body => 'failure')
8
+
9
+ @endpoint = 'https://example.com/tx.php'
10
+ @connection = ActiveMerchant::Connection.new(@endpoint)
11
+ end
12
+
13
+ def test_connection_endpoint_parses_string_to_uri
14
+ assert_equal URI.parse(@endpoint), @connection.endpoint
15
+ end
16
+
17
+ def test_connection_endpoint_accepts_uri
18
+ endpoint = URI.parse(@endpoint)
19
+ connection = ActiveMerchant::Connection.new(endpoint)
20
+ assert_equal endpoint, connection.endpoint
21
+ end
22
+
23
+ def test_connection_endpoint_raises_uri_error
24
+ assert_raises URI::InvalidURIError do
25
+ ActiveMerchant::Connection.new("not a URI")
26
+ end
27
+ end
28
+
29
+ def test_successful_get_request
30
+ Net::HTTP.any_instance.expects(:get).with('/tx.php', {}).returns(@ok)
31
+ response = @connection.request(:get, nil, {})
32
+ assert_equal 'success', response
33
+ end
34
+
35
+ def test_successful_post_request
36
+ Net::HTTP.any_instance.expects(:post).with('/tx.php', 'data', ActiveMerchant::Connection::RUBY_184_POST_HEADERS).returns(@ok)
37
+ response = @connection.request(:post, 'data', {})
38
+ assert_equal 'success', response
39
+ end
40
+
41
+ def test_get_raises_argument_error_if_passed_data
42
+ assert_raise(ArgumentError) do
43
+ @connection.request(:get, 'data', {})
44
+ end
45
+ end
46
+
47
+ def test_request_raises_when_request_method_not_supported
48
+ assert_raise(ArgumentError) do
49
+ @connection.request(:delete, nil, {})
50
+ end
51
+ end
52
+
53
+ def test_500_response_during_request_raises_client_error
54
+ Net::HTTP.any_instance.stubs(:post).returns(@internal_server_error)
55
+ assert_raises(ActiveMerchant::ResponseError) do
56
+ @connection.request(:post, '', {})
57
+ end
58
+ end
59
+
60
+ def test_default_read_timeout
61
+ assert_equal ActiveMerchant::Connection::READ_TIMEOUT, @connection.read_timeout
62
+ end
63
+
64
+ def test_override_read_timeout
65
+ @connection.read_timeout = 20
66
+ assert_equal 20, @connection.read_timeout
67
+ end
68
+
69
+ def test_default_open_timeout
70
+ @connection.open_timeout = 20
71
+ assert_equal 20, @connection.open_timeout
72
+ end
73
+
74
+ def test_default_verify_peer
75
+ assert_equal ActiveMerchant::Connection::VERIFY_PEER, @connection.verify_peer
76
+ end
77
+
78
+ def test_override_verify_peer
79
+ @connection.verify_peer = false
80
+ assert_equal false, @connection.verify_peer
81
+ end
82
+
83
+ def test_unrecoverable_exception
84
+ Net::HTTP.any_instance.expects(:post).raises(EOFError)
85
+
86
+ assert_raises(ActiveMerchant::ConnectionError) do
87
+ @connection.request(:post, '')
88
+ end
89
+ end
90
+
91
+ def test_failure_then_success_with_recoverable_exception
92
+ Net::HTTP.any_instance.expects(:post).times(2).raises(Errno::ECONNREFUSED).then.returns(@ok)
93
+
94
+ assert_nothing_raised do
95
+ @connection.request(:post, '')
96
+ end
97
+ end
98
+
99
+ def test_failure_limit_reached
100
+ Net::HTTP.any_instance.expects(:post).times(ActiveMerchant::Connection::MAX_RETRIES).raises(Errno::ECONNREFUSED)
101
+
102
+ assert_raises(ActiveMerchant::ConnectionError) do
103
+ @connection.request(:post, '')
104
+ end
105
+ end
106
+
107
+ def test_failure_then_success_with_retry_safe_enabled
108
+ Net::HTTP.any_instance.expects(:post).times(2).raises(EOFError).then.returns(@ok)
109
+
110
+ @connection.retry_safe = true
111
+
112
+ assert_nothing_raised do
113
+ @connection.request(:post, '')
114
+ end
115
+ end
116
+
117
+ def test_mixture_of_failures_with_retry_safe_enabled
118
+ Net::HTTP.any_instance.expects(:post).times(3).raises(Errno::ECONNRESET).
119
+ raises(Errno::ECONNREFUSED).
120
+ raises(EOFError)
121
+
122
+ @connection.retry_safe = true
123
+
124
+ assert_raises(ActiveMerchant::ConnectionError) do
125
+ @connection.request(:post, '')
126
+ end
127
+ end
128
+
129
+ end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ class CountryCodeTest < Test::Unit::TestCase
4
+ include ActiveMerchant
5
+
6
+ def test_alpha2_country_code
7
+ code = CountryCode.new('CA')
8
+ assert_equal 'CA', code.value
9
+ assert_equal 'CA', code.to_s
10
+ assert_equal :alpha2, code.format
11
+ end
12
+
13
+ def test_lower_alpha2_country_code
14
+ code = CountryCode.new('ca')
15
+ assert_equal 'CA', code.value
16
+ assert_equal 'CA', code.to_s
17
+ assert_equal :alpha2, code.format
18
+ end
19
+
20
+ def test_alpha2_country_code
21
+ code = CountryCode.new('CAN')
22
+ assert_equal :alpha3, code.format
23
+ end
24
+
25
+ def test_numeric_code
26
+ code = CountryCode.new('004')
27
+ assert_equal :numeric, code.format
28
+ end
29
+
30
+ def test_invalid_code_format
31
+ assert_raise(CountryCodeFormatError){ CountryCode.new('Canada') }
32
+ end
33
+ end
@@ -0,0 +1,64 @@
1
+ require 'test_helper'
2
+
3
+ class CountryTest < Test::Unit::TestCase
4
+ include ActiveMerchant
5
+
6
+ def test_country_from_hash
7
+ country = Country.new(:name => 'Canada', :alpha2 => 'CA', :alpha3 => 'CAN', :numeric => '124')
8
+ assert_equal 'CA', country.code(:alpha2).to_s
9
+ assert_equal 'CAN', country.code(:alpha3).to_s
10
+ assert_equal '124', country.code(:numeric).to_s
11
+ assert_equal 'Canada', country.to_s
12
+ end
13
+
14
+ def test_country_for_alpha2_code
15
+ country = Country.find('CA')
16
+ assert_equal 'CA', country.code(:alpha2).to_s
17
+ assert_equal 'CAN', country.code(:alpha3).to_s
18
+ assert_equal '124', country.code(:numeric).to_s
19
+ assert_equal 'Canada', country.to_s
20
+ end
21
+
22
+ def test_country_for_alpha3_code
23
+ country = Country.find('CAN')
24
+ assert_equal 'Canada', country.to_s
25
+ end
26
+
27
+ def test_country_for_numeric_code
28
+ country = Country.find('124')
29
+ assert_equal 'Canada', country.to_s
30
+ end
31
+
32
+ def test_find_country_by_name
33
+ country = Country.find('Canada')
34
+ assert_equal 'Canada', country.to_s
35
+ end
36
+
37
+ def test_find_unknown_country_name
38
+ assert_raise(InvalidCountryCodeError) do
39
+ Country.find('Asskickistan')
40
+ end
41
+ end
42
+
43
+ def test_find_australia
44
+ country = Country.find('AU')
45
+ assert_equal 'AU', country.code(:alpha2).to_s
46
+
47
+ country = Country.find('Australia')
48
+ assert_equal 'AU', country.code(:alpha2).to_s
49
+ end
50
+
51
+ def test_find_united_kingdom
52
+ country = Country.find('GB')
53
+ assert_equal 'GB', country.code(:alpha2).to_s
54
+
55
+ country = Country.find('United Kingdom')
56
+ assert_equal 'GB', country.code(:alpha2).to_s
57
+ end
58
+
59
+ def test_raise_on_nil_name
60
+ assert_raise(InvalidCountryCodeError) do
61
+ Country.find(nil)
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,19 @@
1
+ require 'test_helper'
2
+
3
+ class CreditCardFormattingTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::CreditCardFormatting
5
+
6
+ def test_should_format_number_by_rule
7
+ assert_equal 2005, format(2005, :steven_colbert)
8
+
9
+ assert_equal '0005', format(05, :four_digits)
10
+ assert_equal '2005', format(2005, :four_digits)
11
+
12
+ assert_equal '05', format(2005, :two_digits)
13
+ assert_equal '05', format(05, :two_digits)
14
+ assert_equal '08', format(8, :two_digits)
15
+
16
+ assert format(nil, :two_digits).blank?
17
+ assert format('', :two_digits).blank?
18
+ end
19
+ end