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,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
@@ -0,0 +1,170 @@
1
+ require 'test_helper'
2
+
3
+ class CreditCardMethodsTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::CreditCardMethods
5
+
6
+ class CreditCard
7
+ include ActiveMerchant::Billing::CreditCardMethods
8
+ end
9
+
10
+ def maestro_card_numbers
11
+ %w[
12
+ 5000000000000000 5099999999999999 5600000000000000
13
+ 5899999999999999 6000000000000000 6999999999999999
14
+ ]
15
+ end
16
+
17
+ def non_maestro_card_numbers
18
+ %w[
19
+ 4999999999999999 5100000000000000 5599999999999999
20
+ 5900000000000000 5999999999999999 7000000000000000
21
+ ]
22
+ end
23
+
24
+ def test_should_be_able_to_identify_valid_expiry_months
25
+ assert_false valid_month?(-1)
26
+ assert_false valid_month?(13)
27
+ assert_false valid_month?(nil)
28
+ assert_false valid_month?('')
29
+
30
+ 1.upto(12) { |m| assert valid_month?(m) }
31
+ end
32
+
33
+ def test_should_be_able_to_identify_valid_expiry_years
34
+ assert_false valid_expiry_year?(-1)
35
+ assert_false valid_expiry_year?(Time.now.year + 21)
36
+
37
+ 0.upto(20) { |n| assert valid_expiry_year?(Time.now.year + n) }
38
+ end
39
+
40
+ def test_should_be_able_to_identify_valid_start_years
41
+ assert valid_start_year?(1988)
42
+ assert valid_start_year?(2007)
43
+ assert valid_start_year?(3000)
44
+
45
+ assert_false valid_start_year?(1987)
46
+ end
47
+
48
+ def test_should_be_able_to_identify_valid_issue_numbers
49
+ assert valid_issue_number?(1)
50
+ assert valid_issue_number?(10)
51
+ assert valid_issue_number?('12')
52
+ assert valid_issue_number?(0)
53
+
54
+ assert_false valid_issue_number?(-1)
55
+ assert_false valid_issue_number?(123)
56
+ assert_false valid_issue_number?('CAT')
57
+ end
58
+
59
+ def test_should_ensure_type_from_credit_card_class_is_not_frozen
60
+ assert_false CreditCard.type?('4242424242424242').frozen?
61
+ end
62
+
63
+ def test_should_be_dankort_card_type
64
+ assert_equal 'dankort', CreditCard.type?('5019717010103742')
65
+ end
66
+
67
+ def test_should_detect_visa_dankort_as_visa
68
+ assert_equal 'visa', CreditCard.type?('4571100000000000')
69
+ end
70
+
71
+ def test_should_detect_electron_dk_as_visa
72
+ assert_equal 'visa', CreditCard.type?('4175001000000000')
73
+ end
74
+
75
+ def test_should_detect_diners_club
76
+ assert_equal 'diners_club', CreditCard.type?('36148010000000')
77
+ end
78
+
79
+ def test_should_detect_diners_club_dk
80
+ assert_equal 'diners_club', CreditCard.type?('30401000000000')
81
+ end
82
+
83
+ def test_should_detect_maestro_dk_as_maestro
84
+ assert_equal 'maestro', CreditCard.type?('6769271000000000')
85
+ end
86
+
87
+ def test_should_detect_maestro_cards
88
+ assert_equal 'maestro', CreditCard.type?('5020100000000000')
89
+
90
+ maestro_card_numbers.each { |number| assert_equal 'maestro', CreditCard.type?(number) }
91
+ non_maestro_card_numbers.each { |number| assert_not_equal 'maestro', CreditCard.type?(number) }
92
+ end
93
+
94
+ def test_should_detect_mastercard
95
+ assert_equal 'master', CreditCard.type?('6771890000000000')
96
+ assert_equal 'master', CreditCard.type?('5413031000000000')
97
+ end
98
+
99
+ def test_should_detect_forbrugsforeningen
100
+ assert_equal 'forbrugsforeningen', CreditCard.type?('6007221000000000')
101
+ end
102
+
103
+ def test_should_detect_laser_card
104
+ # 16 digits
105
+ assert_equal 'laser', CreditCard.type?('6304985028090561')
106
+
107
+ # 18 digits
108
+ assert_equal 'laser', CreditCard.type?('630498502809056151')
109
+
110
+ # 19 digits
111
+ assert_equal 'laser', CreditCard.type?('6304985028090561515')
112
+
113
+ # 17 digits
114
+ assert_not_equal 'laser', CreditCard.type?('63049850280905615')
115
+
116
+ # 15 digits
117
+ assert_not_equal 'laser', CreditCard.type?('630498502809056')
118
+
119
+ # Alternate format
120
+ assert_equal 'laser', CreditCard.type?('6706950000000000000')
121
+ end
122
+
123
+ def test_should_detect_when_an_argument_type_does_not_match_calculated_type
124
+ assert CreditCard.matching_type?('4175001000000000', 'visa')
125
+ assert_false CreditCard.matching_type?('4175001000000000', 'master')
126
+ end
127
+
128
+ def test_detecting_full_range_of_maestro_card_numbers
129
+ maestro = '50000000000'
130
+
131
+ assert_equal 11, maestro.length
132
+ assert_not_equal 'maestro', CreditCard.type?(maestro)
133
+
134
+ while maestro.length < 19
135
+ maestro << '0'
136
+ assert_equal 'maestro', CreditCard.type?(maestro)
137
+ end
138
+
139
+ assert_equal 19, maestro.length
140
+
141
+ maestro << '0'
142
+ assert_not_equal 'maestro', CreditCard.type?(maestro)
143
+ end
144
+
145
+ def test_matching_discover_card
146
+ assert CreditCard.matching_type?('6011000000000000', 'discover')
147
+ assert CreditCard.matching_type?('6500000000000000', 'discover')
148
+
149
+ assert_false CreditCard.matching_type?('6010000000000000', 'discover')
150
+ assert_false CreditCard.matching_type?('6600000000000000', 'discover')
151
+ end
152
+
153
+ def test_16_digit_maestro_uk
154
+ number = '6759000000000000'
155
+ assert_equal 16, number.length
156
+ assert_equal 'switch', CreditCard.type?(number)
157
+ end
158
+
159
+ def test_18_digit_maestro_uk
160
+ number = '675900000000000000'
161
+ assert_equal 18, number.length
162
+ assert_equal 'switch', CreditCard.type?(number)
163
+ end
164
+
165
+ def test_19_digit_maestro_uk
166
+ number = '6759000000000000000'
167
+ assert_equal 19, number.length
168
+ assert_equal 'switch', CreditCard.type?(number)
169
+ end
170
+ end