ghazel-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 (296) hide show
  1. data/CHANGELOG +473 -0
  2. data/CONTRIBUTORS +126 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README +135 -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 +736 -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/jetpay.rb +270 -0
  36. data/lib/active_merchant/billing/gateways/linkpoint.rb +449 -0
  37. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  38. data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
  39. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  40. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  41. data/lib/active_merchant/billing/gateways/moneris.rb +205 -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 +279 -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 +326 -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/paypal_express_recurring.rb +310 -0
  62. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  63. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  64. data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
  65. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  66. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  67. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  68. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  69. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +116 -0
  70. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  71. data/lib/active_merchant/billing/gateways/sage_pay.rb +308 -0
  72. data/lib/active_merchant/billing/gateways/sallie_mae.rb +144 -0
  73. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  74. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  75. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  76. data/lib/active_merchant/billing/gateways/skip_jack.rb +452 -0
  77. data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
  78. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  79. data/lib/active_merchant/billing/gateways/transax.rb +26 -0
  80. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  81. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  82. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  83. data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
  84. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  85. data/lib/active_merchant/billing/integrations.rb +22 -0
  86. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  87. data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
  88. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  89. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  90. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  91. data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
  92. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
  93. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
  94. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  95. data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
  96. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  97. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  98. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
  99. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  100. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  101. data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
  102. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  103. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  104. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  105. data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
  106. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  107. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  108. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  109. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  110. data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
  111. data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -0
  112. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  113. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  114. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  115. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  116. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  117. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  118. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  119. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  120. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  121. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  122. data/lib/active_merchant/billing/response.rb +32 -0
  123. data/lib/active_merchant/lib/connection.rb +170 -0
  124. data/lib/active_merchant/lib/country.rb +319 -0
  125. data/lib/active_merchant/lib/error.rb +4 -0
  126. data/lib/active_merchant/lib/post_data.rb +22 -0
  127. data/lib/active_merchant/lib/posts_data.rb +47 -0
  128. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  129. data/lib/active_merchant/lib/utils.rb +18 -0
  130. data/lib/active_merchant/lib/validateable.rb +76 -0
  131. data/lib/certs/cacert.pem +7815 -0
  132. data/lib/support/gateway_support.rb +58 -0
  133. data/script/destroy +14 -0
  134. data/script/generate +14 -0
  135. data/test/fixtures.yml +355 -0
  136. data/test/remote/gateways/remote_authorize_net_cim_test.rb +460 -0
  137. data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
  138. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  139. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  140. data/test/remote/gateways/remote_braintree_test.rb +154 -0
  141. data/test/remote/gateways/remote_card_stream_test.rb +148 -0
  142. data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
  143. data/test/remote/gateways/remote_data_cash_test.rb +357 -0
  144. data/test/remote/gateways/remote_efsnet_test.rb +81 -0
  145. data/test/remote/gateways/remote_elavon_test.rb +66 -0
  146. data/test/remote/gateways/remote_eway_test.rb +74 -0
  147. data/test/remote/gateways/remote_exact_test.rb +60 -0
  148. data/test/remote/gateways/remote_first_pay_test.rb +87 -0
  149. data/test/remote/gateways/remote_instapay_test.rb +61 -0
  150. data/test/remote/gateways/remote_jetpay_test.rb +103 -0
  151. data/test/remote/gateways/remote_linkpoint_test.rb +121 -0
  152. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
  153. data/test/remote/gateways/remote_merchant_ware_test.rb +113 -0
  154. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  155. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  156. data/test/remote/gateways/remote_moneris_test.rb +82 -0
  157. data/test/remote/gateways/remote_net_registry_test.rb +85 -0
  158. data/test/remote/gateways/remote_netbilling_test.rb +70 -0
  159. data/test/remote/gateways/remote_ogone_test.rb +115 -0
  160. data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
  161. data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
  162. data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
  163. data/test/remote/gateways/remote_payflow_test.rb +237 -0
  164. data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
  165. data/test/remote/gateways/remote_payment_express_test.rb +136 -0
  166. data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
  167. data/test/remote/gateways/remote_paypal_test.rb +191 -0
  168. data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
  169. data/test/remote/gateways/remote_psigate_test.rb +50 -0
  170. data/test/remote/gateways/remote_psl_card_test.rb +125 -0
  171. data/test/remote/gateways/remote_quickpay_test.rb +190 -0
  172. data/test/remote/gateways/remote_realex_test.rb +224 -0
  173. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  174. data/test/remote/gateways/remote_sage_pay_test.rb +219 -0
  175. data/test/remote/gateways/remote_sage_test.rb +87 -0
  176. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  177. data/test/remote/gateways/remote_sallie_mae_test.rb +51 -0
  178. data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
  179. data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
  180. data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
  181. data/test/remote/gateways/remote_skipjack_test.rb +105 -0
  182. data/test/remote/gateways/remote_trans_first_test.rb +34 -0
  183. data/test/remote/gateways/remote_transax_test.rb +112 -0
  184. data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
  185. data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
  186. data/test/remote/gateways/remote_verifi_test.rb +107 -0
  187. data/test/remote/gateways/remote_viaklix_test.rb +43 -0
  188. data/test/remote/gateways/remote_wirecard_test.rb +111 -0
  189. data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
  190. data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
  191. data/test/test_helper.rb +182 -0
  192. data/test/unit/avs_result_test.rb +59 -0
  193. data/test/unit/base_test.rb +55 -0
  194. data/test/unit/check_test.rb +88 -0
  195. data/test/unit/connection_test.rb +129 -0
  196. data/test/unit/country_code_test.rb +33 -0
  197. data/test/unit/country_test.rb +64 -0
  198. data/test/unit/credit_card_formatting_test.rb +19 -0
  199. data/test/unit/credit_card_methods_test.rb +179 -0
  200. data/test/unit/credit_card_test.rb +318 -0
  201. data/test/unit/cvv_result_test.rb +33 -0
  202. data/test/unit/expiry_date_test.rb +32 -0
  203. data/test/unit/gateways/authorize_net_cim_test.rb +676 -0
  204. data/test/unit/gateways/authorize_net_test.rb +290 -0
  205. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  206. data/test/unit/gateways/beanstream_test.rb +108 -0
  207. data/test/unit/gateways/bogus_test.rb +46 -0
  208. data/test/unit/gateways/braintree_test.rb +126 -0
  209. data/test/unit/gateways/card_stream_test.rb +90 -0
  210. data/test/unit/gateways/cyber_source_test.rb +188 -0
  211. data/test/unit/gateways/data_cash_test.rb +133 -0
  212. data/test/unit/gateways/efsnet_test.rb +123 -0
  213. data/test/unit/gateways/elavon_test.rb +139 -0
  214. data/test/unit/gateways/eway_test.rb +118 -0
  215. data/test/unit/gateways/exact_test.rb +156 -0
  216. data/test/unit/gateways/first_pay_test.rb +125 -0
  217. data/test/unit/gateways/gateway_test.rb +48 -0
  218. data/test/unit/gateways/instapay_test.rb +102 -0
  219. data/test/unit/gateways/jetpay_test.rb +185 -0
  220. data/test/unit/gateways/linkpoint_test.rb +184 -0
  221. data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
  222. data/test/unit/gateways/merchant_ware_test.rb +188 -0
  223. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  224. data/test/unit/gateways/moneris_test.rb +158 -0
  225. data/test/unit/gateways/net_registry_test.rb +416 -0
  226. data/test/unit/gateways/netbilling_test.rb +54 -0
  227. data/test/unit/gateways/ogone_test.rb +319 -0
  228. data/test/unit/gateways/pay_junction_test.rb +123 -0
  229. data/test/unit/gateways/pay_secure_test.rb +71 -0
  230. data/test/unit/gateways/payflow_express_test.rb +173 -0
  231. data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
  232. data/test/unit/gateways/payflow_test.rb +305 -0
  233. data/test/unit/gateways/payflow_uk_test.rb +30 -0
  234. data/test/unit/gateways/payment_express_test.rb +195 -0
  235. data/test/unit/gateways/paypal_express_test.rb +382 -0
  236. data/test/unit/gateways/paypal_test.rb +569 -0
  237. data/test/unit/gateways/plugnpay_test.rb +86 -0
  238. data/test/unit/gateways/psigate_test.rb +169 -0
  239. data/test/unit/gateways/psl_card_test.rb +64 -0
  240. data/test/unit/gateways/quickpay_test.rb +112 -0
  241. data/test/unit/gateways/realex_test.rb +151 -0
  242. data/test/unit/gateways/sage_bankcard_test.rb +196 -0
  243. data/test/unit/gateways/sage_pay_test.rb +139 -0
  244. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  245. data/test/unit/gateways/sallie_mae_test.rb +53 -0
  246. data/test/unit/gateways/secure_pay_au_test.rb +207 -0
  247. data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
  248. data/test/unit/gateways/secure_pay_test.rb +87 -0
  249. data/test/unit/gateways/skip_jack_test.rb +213 -0
  250. data/test/unit/gateways/trans_first_test.rb +112 -0
  251. data/test/unit/gateways/trust_commerce_test.rb +90 -0
  252. data/test/unit/gateways/usa_epay_test.rb +128 -0
  253. data/test/unit/gateways/verifi_test.rb +96 -0
  254. data/test/unit/gateways/viaklix_test.rb +78 -0
  255. data/test/unit/gateways/wirecard_test.rb +250 -0
  256. data/test/unit/generators/test_gateway_generator.rb +46 -0
  257. data/test/unit/generators/test_generator_helper.rb +20 -0
  258. data/test/unit/generators/test_integration_generator.rb +53 -0
  259. data/test/unit/integrations/action_view_helper_test.rb +50 -0
  260. data/test/unit/integrations/bogus_module_test.rb +20 -0
  261. data/test/unit/integrations/chronopay_module_test.rb +13 -0
  262. data/test/unit/integrations/gestpay_module_test.rb +14 -0
  263. data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
  264. data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
  265. data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
  266. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
  267. data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
  268. data/test/unit/integrations/helpers/paypal_helper_test.rb +171 -0
  269. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  270. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
  271. data/test/unit/integrations/hi_trust_module_test.rb +13 -0
  272. data/test/unit/integrations/nochex_module_test.rb +13 -0
  273. data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
  274. data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
  275. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
  276. data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
  277. data/test/unit/integrations/notifications/notification_test.rb +54 -0
  278. data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
  279. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  280. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
  281. data/test/unit/integrations/paypal_module_test.rb +28 -0
  282. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  283. data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
  284. data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
  285. data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
  286. data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
  287. data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
  288. data/test/unit/integrations/returns/return_test.rb +11 -0
  289. data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
  290. data/test/unit/integrations/two_checkout_module_test.rb +13 -0
  291. data/test/unit/post_data_test.rb +55 -0
  292. data/test/unit/posts_data_test.rb +48 -0
  293. data/test/unit/response_test.rb +28 -0
  294. data/test/unit/utils_test.rb +7 -0
  295. data/test/unit/validateable_test.rb +60 -0
  296. metadata +368 -0
@@ -0,0 +1,40 @@
1
+ require 'test_helper'
2
+
3
+ class QuickpayHelperTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @helper = Quickpay::Helper.new('order-500','24352435', :amount => 500, :currency => 'USD')
8
+ @helper.md5secret "mysecretmd5string"
9
+ @helper.return_url 'http://example.com/ok'
10
+ @helper.cancel_return_url 'http://example.com/cancel'
11
+ @helper.notify_url 'http://example.com/notify'
12
+ end
13
+
14
+ def test_basic_helper_fields
15
+ assert_field 'merchant', '24352435'
16
+ assert_field 'amount', '500'
17
+ assert_field 'ordernumber', 'order500'
18
+ end
19
+
20
+ def test_generate_md5string
21
+ assert_equal '3authorize24352435daorder500500USDhttp://example.com/okhttp://example.com/cancelhttp://example.com/notify00mysecretmd5string',
22
+ @helper.generate_md5string
23
+ end
24
+
25
+ def test_generate_md5check
26
+ assert_equal '31a0a94ce953208d05f3f3d255fff31f', @helper.generate_md5check
27
+ end
28
+
29
+ def test_unknown_mapping
30
+ assert_nothing_raised do
31
+ @helper.company_address :address => '500 Dwemthy Fox Road'
32
+ end
33
+ end
34
+
35
+ def test_setting_invalid_address_field
36
+ fields = @helper.fields.dup
37
+ @helper.billing_address :street => 'My Street'
38
+ assert_equal fields, @helper.fields
39
+ end
40
+ end
@@ -0,0 +1,92 @@
1
+ require 'test_helper'
2
+
3
+ class TwoCheckoutHelperTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @helper = TwoCheckout::Helper.new('order-500','cody@example.com', :amount => '5.00', :currency => 'USD')
8
+ end
9
+
10
+ def teardown
11
+ ActiveMerchant::Billing::Base.integration_mode = :test
12
+ end
13
+
14
+ def test_basic_helper_fields
15
+ assert_field 'sid', 'cody@example.com'
16
+
17
+ assert_field 'total', '5.00'
18
+ assert_field 'cart_order_id', 'order-500'
19
+ end
20
+
21
+ def test_customer_fields
22
+ @helper.customer :first_name => 'Cody', :last_name => 'Fauser', :email => 'cody@example.com', :phone => '(555)555-5555'
23
+ assert_field 'card_holder_name', 'Cody Fauser'
24
+ assert_field 'email', 'cody@example.com'
25
+ assert_field 'phone', '(555)555-5555'
26
+ end
27
+
28
+ def test_address_mapping
29
+ @helper.billing_address :address1 => '1 My Street',
30
+ :address2 => 'Apt. 1',
31
+ :city => 'Leeds',
32
+ :state => 'Yorkshire',
33
+ :zip => 'LS2 7EE',
34
+ :country => 'CA'
35
+
36
+ assert_field 'street_address', '1 My Street'
37
+ assert_field 'street_address2', 'Apt. 1'
38
+ assert_field 'city', 'Leeds'
39
+ assert_field 'state', 'Yorkshire'
40
+ assert_field 'zip', 'LS2 7EE'
41
+ assert_field 'country', 'CA'
42
+ end
43
+
44
+ def test_shipping_address
45
+ @helper.shipping_address :address1 => '1 My Street',
46
+ :address2 => 'Apt. 1',
47
+ :city => 'London',
48
+ :state => 'Whales',
49
+ :zip => 'LS2 7E1',
50
+ :country => 'UK'
51
+
52
+ assert_field 'ship_city', 'London'
53
+ assert_field 'ship_street_address', '1 My Street'
54
+ assert_field 'ship_state', 'Whales'
55
+ assert_field 'ship_zip', 'LS2 7E1'
56
+ assert_field 'ship_country', 'UK'
57
+ end
58
+
59
+ def test_unknown_address_mapping
60
+ @helper.billing_address :farm => 'CA'
61
+ assert_equal 5, @helper.fields.size
62
+ end
63
+
64
+ def test_unknown_mapping
65
+ assert_nothing_raised do
66
+ @helper.company_address :address => '500 Dwemthy Fox Road'
67
+ end
68
+ end
69
+
70
+ def test_setting_invalid_address_field
71
+ fields = @helper.fields.dup
72
+ @helper.billing_address :street => 'My Street'
73
+ assert_equal fields, @helper.fields
74
+ end
75
+
76
+ def test_test_mode
77
+ @helper = TwoCheckout::Helper.new('order-500','cody@example.com', :amount => '5.00', :currency => 'USD')
78
+ assert_field 'demo', 'Y'
79
+ end
80
+
81
+ def test_force_test_mode
82
+ ActiveMerchant::Billing::Base.integration_mode = :production
83
+ @helper = TwoCheckout::Helper.new('order-500','cody@example.com', :amount => '5.00', :currency => 'USD', :test => true)
84
+ assert_field 'demo', 'Y'
85
+ end
86
+
87
+ def test_production_mode
88
+ ActiveMerchant::Billing::Base.integration_mode = :production
89
+ @helper = TwoCheckout::Helper.new('order-500','cody@example.com', :amount => '5.00', :currency => 'USD')
90
+ assert !@helper.fields.has_key?("demo")
91
+ end
92
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class HiTrustModuleTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_notification_method
7
+ assert_instance_of HiTrust::Notification, HiTrust.notification('name=cody')
8
+ end
9
+
10
+ def test_return_method
11
+ assert_instance_of HiTrust::Return, HiTrust.return('name=cody')
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class ChronopayModuleTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_notification_method
7
+ assert_instance_of Nochex::Notification, Nochex.notification('name=cody')
8
+ end
9
+
10
+ def test_return_method
11
+ assert_instance_of Nochex::Return, Nochex.return('name=cody')
12
+ end
13
+ end
@@ -0,0 +1,66 @@
1
+ require 'test_helper'
2
+
3
+ class ChronopayNotificationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @notification = Chronopay::Notification.new(http_raw_data)
8
+ end
9
+
10
+ def test_notification
11
+ assert_instance_of Chronopay::Notification, @notification
12
+ end
13
+
14
+ def test_accessors
15
+ assert @notification.complete?
16
+ assert_equal "Completed", @notification.status
17
+ assert_equal "003176-000000005", @notification.customer_id
18
+ assert_equal "003176-0001", @notification.site_id
19
+ assert_equal "003176-0001-0001", @notification.product_id
20
+ assert_equal "CODY FAUSER", @notification.name
21
+ assert_equal 'XX', @notification.state
22
+ assert_equal 'Ottawa', @notification.city
23
+ assert_equal '138 Clarence St.', @notification.street
24
+ assert_equal 'CAD', @notification.currency
25
+ assert_equal 'first', @notification.item_id
26
+ assert_equal 'second', @notification.custom2
27
+ assert_equal 'third', @notification.custom3
28
+
29
+ # If the date and time are nil then it is a test notification
30
+ assert @notification.test?
31
+ end
32
+
33
+ # docs
34
+ def test_parse_received_at
35
+ # mm/dd/yyyy format
36
+ raw_received = "date=03%2f30%2f2006&time=12%3a30%3a10"
37
+ @notification = Chronopay::Notification.new(raw_received)
38
+ assert_equal CGI.unescape("03%2f30%2f2006"), @notification.params['date']
39
+ assert_equal CGI.unescape("12%3a30%3a10"), @notification.params['time']
40
+ assert_equal Time.local(2006, 3, 30, 12, 30, 10), @notification.received_at
41
+ end
42
+
43
+ def test_compositions
44
+ assert_equal Money.new(50000, 'CAD'), @notification.amount
45
+ end
46
+
47
+ def test_payment_successful_status
48
+ notification = Chronopay::Notification.new('transaction_type=onetime')
49
+ assert_equal 'Completed', notification.status
50
+ end
51
+
52
+ def test_payment_failure_status
53
+ notification = Chronopay::Notification.new('transaction_type=decline')
54
+ assert_equal 'Failed', notification.status
55
+ end
56
+
57
+ def test_acknowledge
58
+ assert @notification.acknowledge
59
+ end
60
+
61
+ private
62
+ def http_raw_data
63
+ "transaction_type=onetime&customer_id=003176-000000005&site_id=003176-0001&product_id=003176-0001-0001&date=&time=&transaction_id=&email=codyfauser%40gmail.com&country=CAN&name=CODY+FAUSER&city=Ottawa&street=138+Clarence+St.&phone=&state=XX&zip=K1N+5P8&language=EN&cs1=first&cs2=second&cs3=third&username=&password=&total=500.00&currency=CAD"
64
+ end
65
+ end
66
+
@@ -0,0 +1,60 @@
1
+ require 'test_helper'
2
+
3
+ class GestpayNotificationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_successful_notification
7
+ Gestpay::Notification.any_instance.expects(:ssl_get).returns('#decryptstring#PAY1_UICCODE=242*P1*PAY1_AMOUNT=1234.56*P1*PAY1_TRANSACTIONRESULT=OK*P1*PAY1_BANKTRANSACTIONID=ABCD1234*P1*PAY1_SHOPTRANSACTIONID=1000#/decryptstring#')
8
+ notification = Gestpay::Notification.new(raw_query_string)
9
+ assert notification.complete?
10
+ assert !notification.test?
11
+ assert_equal "Completed", notification.status
12
+ assert_equal "ABCD1234", notification.transaction_id
13
+ assert_equal "1000", notification.item_id
14
+ assert_equal "1234.56", notification.gross
15
+ assert_equal "EUR", notification.currency
16
+ assert_equal Money.new(123456, 'EUR'), notification.amount
17
+ end
18
+
19
+ def test_failed_notification
20
+ Gestpay::Notification.any_instance.expects(:ssl_get).returns('#decryptstring#PAY1_UICCODE=242*P1*PAY1_AMOUNT=1234.56*P1*PAY1_TRANSACTIONRESULT=KO*P1*PAY1_BANKTRANSACTIONID=ABCD1234*P1*PAY1_SHOPTRANSACTIONID=1000#/decryptstring#')
21
+ notification = Gestpay::Notification.new(raw_query_string)
22
+ assert !notification.complete?
23
+ assert !notification.test?
24
+ assert_equal "Failed", notification.status
25
+ end
26
+
27
+ def test_empty_notification
28
+ Gestpay::Notification.any_instance.stubs(:ssl_get).returns('')
29
+ notification = Gestpay::Notification.new('')
30
+ assert !notification.complete?
31
+ assert !notification.test?
32
+ assert_equal "Failed", notification.status
33
+ end
34
+
35
+ def test_nil_notification
36
+ Gestpay::Notification.any_instance.stubs(:ssl_get).returns('')
37
+ notification = Gestpay::Notification.new(nil)
38
+ assert !notification.complete?
39
+ assert !notification.test?
40
+ assert_equal "Failed", notification.status
41
+ end
42
+
43
+ def test_abandoned_order
44
+ Gestpay::Notification.any_instance.expects(:ssl_get).returns(unencrypted_string)
45
+ notification = Gestpay::Notification.new(raw_query_string)
46
+ assert !notification.complete?
47
+ assert !notification.test?
48
+ assert_equal "Failed", notification.status
49
+ assert_equal '1000', notification.item_id
50
+ end
51
+
52
+ private
53
+ def raw_query_string
54
+ "a=900000&b=F7DEB36478FD84760F9134F23C922697272D57DE6D4518EB9B4D468B769D9A3A8071B6EB160B35CB412FC1820C7CC12D17B3141855B1ED55468613702A2E213DDE9DE5B0209E13C416448AE833525959F05693172D7F0656"
55
+ end
56
+
57
+ def unencrypted_string
58
+ "#decryptstring#PAY1_TRANSACTIONRESULT=KO*P1*PAY1_SHOPTRANSACTIONID=1000*P1*PAY1_BANKTRANSACTIONID=*P1*PAY1_UICCODE=242*P1*PAY1_AMOUNT=50.00*P1*PAY1_AUTHORIZATIONCODE=*P1*PAY1_ERRORCODE=1143*P1*PAY1_ERRORDESCRIPTION=Transazione abbandonata dal compratore*P1*PAY1_CHEMAIL=*P1*PAY1_CHNAME=#/decryptstring#\r\n"
59
+ end
60
+ end
@@ -0,0 +1,59 @@
1
+ require 'test_helper'
2
+
3
+ class HiTrustNotificationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @notification = HiTrust::Notification.new(successful_response)
8
+ end
9
+
10
+ def teardown
11
+ ActiveMerchant::Billing::Base.integration_mode = :test
12
+ end
13
+
14
+ def test_accessors
15
+ assert @notification.complete?
16
+ assert_equal "Completed", @notification.status
17
+ assert_equal "012345678901", @notification.transaction_id
18
+ assert_equal "1000", @notification.item_id
19
+ assert_equal "101010", @notification.account
20
+ assert_equal "5.00", @notification.gross
21
+ assert_equal "USD", @notification.currency
22
+ assert_equal Time.parse("2007-12-01.12.35.40.123456"), @notification.received_at
23
+ assert @notification.test?
24
+ end
25
+
26
+ def test_compositions
27
+ assert_equal Money.new(500, 'USD'), @notification.amount
28
+ end
29
+
30
+ def test_send_acknowledgement
31
+ assert @notification.acknowledge
32
+ end
33
+
34
+ def test_respond_to_acknowledge
35
+ assert @notification.respond_to?(:acknowledge)
36
+ end
37
+
38
+ def test_valid_sender_in_testmode_always_true
39
+ assert @notification.test?
40
+ assert @notification.valid_sender?('127.0.0.1')
41
+ assert @notification.valid_sender?(nil)
42
+ end
43
+
44
+ def test_valid_sender
45
+ ActiveMerchant::Billing::Base.integration_mode = :production
46
+ assert @notification.valid_sender?('203.75.242.8')
47
+ end
48
+
49
+ def test_invalid_sender
50
+ ActiveMerchant::Billing::Base.integration_mode = :production
51
+ assert_false @notification.valid_sender?('127.0.0.1')
52
+ assert_false @notification.valid_sender?(nil)
53
+ end
54
+
55
+ private
56
+ def successful_response
57
+ 'retcode=00&ordernumber=1000&orderstatus=02&authCode=123456&eci=VISA3D&authRRN=012345678901&storeid=101010&approveamount=500&currency=USD&orderdate=2007-12-01.12.35.40.123456'
58
+ end
59
+ end
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+
3
+ class NochexNotificationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @nochex = Nochex::Notification.new(http_raw_data)
8
+ end
9
+
10
+ def test_accessors
11
+ assert @nochex.complete?
12
+ assert_equal "Completed", @nochex.status
13
+ assert_equal "91191", @nochex.transaction_id
14
+ assert_equal "11", @nochex.item_id
15
+ assert_equal "31.66", @nochex.gross
16
+ assert_equal "GBP", @nochex.currency
17
+ assert_equal Time.utc(2006, 9, 27, 22, 30, 53), @nochex.received_at
18
+ assert @nochex.test?
19
+ end
20
+
21
+ def test_compositions
22
+ assert_equal Money.new(3166, 'GBP'), @nochex.amount
23
+ end
24
+
25
+ def test_successful_acknowledgement
26
+ Nochex::Notification.any_instance.expects(:ssl_post).returns('AUTHORISED')
27
+
28
+ assert @nochex.acknowledge
29
+ end
30
+
31
+ def test_failed_acknowledgement
32
+ Nochex::Notification.any_instance.expects(:ssl_post).returns('DECLINED')
33
+
34
+ assert !@nochex.acknowledge
35
+ end
36
+
37
+ def test_respond_to_acknowledge
38
+ assert @nochex.respond_to?(:acknowledge)
39
+ end
40
+
41
+ def test_nil_notification
42
+ Nochex::Notification.any_instance.expects(:ssl_post).returns('DECLINED')
43
+ notification = Nochex::Notification.new(nil)
44
+ assert !notification.acknowledge
45
+ end
46
+
47
+ private
48
+ def http_raw_data
49
+ "transaction_date=27/09/2006 22:30:53&transaction_id=91191&order_id=11&from_email=test2@nochex.com&to_email=test1@nochex.com&amount=31.6600&security_key=L254524366479818252491366&status=test&custom="
50
+ end
51
+ end
@@ -0,0 +1,54 @@
1
+ require 'test_helper'
2
+
3
+ class NotificationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @notification = Notification.new(http_raw_data)
8
+ end
9
+
10
+ def test_raw
11
+ assert_equal http_raw_data, @notification.raw
12
+ end
13
+
14
+ def test_parse
15
+ assert_equal "500.00", @notification.params['mc_gross']
16
+ assert_equal "confirmed", @notification.params['address_status']
17
+ assert_equal "EVMXCLDZJV77Q", @notification.params['payer_id']
18
+ assert_equal "Completed", @notification.params['payment_status']
19
+ assert_equal CGI.unescape("15%3A23%3A54+Apr+15%2C+2005+PDT"), @notification.params['payment_date']
20
+ end
21
+
22
+ def test_accessors
23
+ assert_raise(NotImplementedError){ @notification.status }
24
+ assert_raise(NotImplementedError){ @notification.gross }
25
+ assert_raise(NotImplementedError){ @notification.gross_cents }
26
+ end
27
+
28
+ def test_notification_data_with_period
29
+ notification = Notification.new(http_raw_data_with_period)
30
+ assert_equal 'clicked', notification.params['checkout.x']
31
+ end
32
+
33
+ def test_valid_sender_always_true_in_testmode
34
+ assert_equal ActiveMerchant::Billing::Base.integration_mode, :test
35
+ assert @notification.valid_sender?(nil)
36
+ assert @notification.valid_sender?('localhost')
37
+ end
38
+
39
+ def test_valid_sender_always_true_when_no_ips
40
+ ActiveMerchant::Billing::Base.integration_mode = :production
41
+ assert @notification.valid_sender?(nil)
42
+ assert @notification.valid_sender?('localhost')
43
+ ActiveMerchant::Billing::Base.integration_mode = :test
44
+ end
45
+
46
+ private
47
+ def http_raw_data
48
+ "mc_gross=500.00&address_status=confirmed&payer_id=EVMXCLDZJV77Q&tax=0.00&address_street=164+Waverley+Street&payment_date=15%3A23%3A54+Apr+15%2C+2005+PDT&payment_status=Completed&address_zip=K2P0V6&first_name=Tobias&mc_fee=15.05&address_country_code=CA&address_name=Tobias+Luetke&notify_version=1.7&custom=&payer_status=unverified&business=tobi%40leetsoft.com&address_country=Canada&address_city=Ottawa&quantity=1&payer_email=tobi%40snowdevil.ca&verify_sign=AEt48rmhLYtkZ9VzOGAtwL7rTGxUAoLNsuf7UewmX7UGvcyC3wfUmzJP&txn_id=6G996328CK404320L&payment_type=instant&last_name=Luetke&address_state=Ontario&receiver_email=tobi%40leetsoft.com&payment_fee=&receiver_id=UQ8PDYXJZQD9Y&txn_type=web_accept&item_name=Store+Purchase&mc_currency=CAD&item_number=&test_ipn=1&payment_gross=&shipping=0.00"
49
+ end
50
+
51
+ def http_raw_data_with_period
52
+ "mc_gross=500.00&address_status=confirmed&payer_id=EVMXCLDZJV77Q&tax=0.00&address_street=164+Waverley+Street&payment_date=15%3A23%3A54+Apr+15%2C+2005+PDT&payment_status=Completed&address_zip=K2P0V6&first_name=Tobias&mc_fee=15.05&address_country_code=CA&address_name=Tobias+Luetke&notify_version=1.7&custom=&payer_status=unverified&business=tobi%40leetsoft.com&address_country=Canada&address_city=Ottawa&quantity=1&payer_email=tobi%40snowdevil.ca&verify_sign=AEt48rmhLYtkZ9VzOGAtwL7rTGxUAoLNsuf7UewmX7UGvcyC3wfUmzJP&txn_id=6G996328CK404320L&payment_type=instant&last_name=Luetke&address_state=Ontario&receiver_email=tobi%40leetsoft.com&payment_fee=&receiver_id=UQ8PDYXJZQD9Y&txn_type=web_accept&item_name=Store+Purchase&mc_currency=CAD&item_number=&test_ipn=1&payment_gross=&shipping=0.00&checkout.x=clicked"
53
+ end
54
+ end