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,85 @@
1
+ require 'test_helper'
2
+
3
+ class PaypalNotificationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @paypal = Paypal::Notification.new(http_raw_data)
8
+ end
9
+
10
+ def test_accessors
11
+ assert @paypal.complete?
12
+ assert_equal "Completed", @paypal.status
13
+ assert_equal "6G996328CK404320L", @paypal.transaction_id
14
+ assert_equal "web_accept", @paypal.type
15
+ assert_equal "500.00", @paypal.gross
16
+ assert_equal "15.05", @paypal.fee
17
+ assert_equal "CAD", @paypal.currency
18
+ assert_equal 'tobi@leetsoft.com' , @paypal.account
19
+ assert @paypal.test?
20
+ end
21
+
22
+ def test_compositions
23
+ assert_equal Money.new(50000, 'CAD'), @paypal.amount
24
+ end
25
+
26
+ def test_acknowledgement
27
+ Paypal::Notification.any_instance.stubs(:ssl_post).returns('VERIFIED')
28
+ assert @paypal.acknowledge
29
+
30
+ Paypal::Notification.any_instance.stubs(:ssl_post).returns('INVALID')
31
+ assert !@paypal.acknowledge
32
+ end
33
+
34
+ def test_send_acknowledgement
35
+ Paypal::Notification.any_instance.expects(:ssl_post).with(
36
+ "#{Paypal.service_url}?cmd=_notify-validate",
37
+ http_raw_data,
38
+ { 'Content-Length' => "#{http_raw_data.size}", 'User-Agent' => "Active Merchant -- http://activemerchant.org" }
39
+ ).returns('VERIFIED')
40
+
41
+ assert @paypal.acknowledge
42
+ end
43
+
44
+ def test_payment_successful_status
45
+ notification = Paypal::Notification.new('payment_status=Completed')
46
+ assert_equal 'Completed', notification.status
47
+ end
48
+
49
+ def test_payment_pending_status
50
+ notification = Paypal::Notification.new('payment_status=Pending')
51
+ assert_equal 'Pending', notification.status
52
+ end
53
+
54
+ def test_payment_failure_status
55
+ notification = Paypal::Notification.new('payment_status=Failed')
56
+ assert_equal 'Failed', notification.status
57
+ end
58
+
59
+ def test_respond_to_acknowledge
60
+ assert @paypal.respond_to?(:acknowledge)
61
+ end
62
+
63
+ def test_item_id_mapping
64
+ notification = Paypal::Notification.new('item_number=1')
65
+ assert_equal '1', notification.item_id
66
+ end
67
+
68
+ def test_custom_mapped_to_item_id
69
+ notification = Paypal::Notification.new('custom=1')
70
+ assert_equal '1', notification.item_id
71
+ end
72
+
73
+ def test_nil_notification
74
+ notification = Paypal::Notification.new(nil)
75
+
76
+ Paypal::Notification.any_instance.stubs(:ssl_post).returns('INVALID')
77
+ assert !@paypal.acknowledge
78
+ end
79
+
80
+ private
81
+
82
+ def http_raw_data
83
+ "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"
84
+ end
85
+ end
@@ -0,0 +1,69 @@
1
+ require 'test_helper'
2
+
3
+ class QuickpayNotificationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @quickpay = Quickpay::Notification.new(http_raw_data, :md5secret => "mysecretmd5string")
8
+ end
9
+
10
+ def test_accessors
11
+ assert @quickpay.complete?
12
+ assert_equal "000", @quickpay.status
13
+ assert_equal "88", @quickpay.transaction_id
14
+ assert_equal "order-4232", @quickpay.item_id
15
+ assert_equal "89.50", @quickpay.gross
16
+ assert_equal "DKK", @quickpay.currency
17
+ assert_equal Time.parse("2008-11-05 21:57:37"), @quickpay.received_at
18
+ assert @quickpay.test?
19
+ end
20
+
21
+ def test_compositions
22
+ assert_equal Money.new(8950, 'DKK'), @quickpay.amount
23
+ end
24
+
25
+ def test_acknowledgement
26
+ assert @quickpay.acknowledge
27
+ end
28
+
29
+ def test_failed_acknnowledgement
30
+ @quickpay = Quickpay::Notification.new(http_raw_data, :md5secret => "badmd5string")
31
+ assert !@quickpay.acknowledge
32
+ end
33
+
34
+ def test_acknowledgement_with_cardnumber
35
+ @quickpay = Quickpay::Notification.new(http_raw_data_with_cardnumber, :md5secret => "mysecretmd5string")
36
+ assert @quickpay.acknowledge
37
+ end
38
+
39
+ def test_quickpay_attributes
40
+ assert_equal "Authorized", @quickpay.state
41
+ assert_equal "authorize", @quickpay.msgtype
42
+ end
43
+
44
+ def test_generate_md5string
45
+ assert_equal "authorizeorder-42328950DKK081105215737Authorized000Ok000OK89898989info@pinds.com88visa-dkYesmysecretmd5string",
46
+ @quickpay.generate_md5string
47
+ end
48
+
49
+ def test_generate_md5check
50
+ assert_equal "e70bd0e528dc335ac74d5f1c348fe2f4", @quickpay.generate_md5check
51
+ end
52
+
53
+ def test_respond_to_acknowledge
54
+ assert @quickpay.respond_to?(:acknowledge)
55
+ end
56
+
57
+ private
58
+ def http_raw_data
59
+ "msgtype=authorize&ordernumber=order-4232&amount=8950&currency=DKK&time=081105215737&state=Authorized&" +
60
+ "chstat=000&chstatmsg=Ok&qpstat=000&qpstatmsg=OK&merchant=89898989&merchantemail=info@pinds.com&transaction=88&" +
61
+ "cardtype=visa-dk&testmode=Yes&md5check=e70bd0e528dc335ac74d5f1c348fe2f4"
62
+ end
63
+
64
+ def http_raw_data_with_cardnumber
65
+ "msgtype=authorize&ordernumber=order-4232&amount=8950&currency=DKK&time=081105215737&state=Authorized&" +
66
+ "chstat=000&chstatmsg=Ok&qpstat=000&qpstatmsg=OK&merchant=89898989&merchantemail=info@pinds.com&transaction=88&" +
67
+ "cardtype=visa-dk&testmode=Yes&cardnumber=XXXXXXXXXXXX4092&md5check=bded8685e10790a9351a9d51285cec9d"
68
+ end
69
+ end
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ class TwoCheckoutNotificationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @test_notification = TwoCheckout::Notification.new(test_http_raw_data)
8
+ @live_notification = TwoCheckout::Notification.new(live_http_raw_data)
9
+ end
10
+
11
+ def test_accessors
12
+ assert @test_notification.complete?
13
+ assert @test_notification.test?
14
+ assert_equal "Completed", @test_notification.status
15
+
16
+ assert_equal "3644445821", @test_notification.transaction_id
17
+ assert_equal "10", @test_notification.item_id
18
+ assert_equal "31.66", @test_notification.gross
19
+ assert_equal "USD", @test_notification.currency
20
+ assert_equal 'cody@example.com', @test_notification.payer_email
21
+ end
22
+
23
+ def test_live_accessors
24
+ assert @live_notification.complete?
25
+ assert !@live_notification.test?
26
+ end
27
+
28
+ def test_compositions
29
+ assert_equal Money.new(3166, 'USD'), @test_notification.amount
30
+ end
31
+
32
+ def test_acknowledgement
33
+ assert @test_notification.acknowledge
34
+ end
35
+
36
+ def test_verififcation_of_test_notification
37
+ assert !@test_notification.verify('tango')
38
+ @test_notification
39
+
40
+
41
+ assert @live_notification.verify('tango')
42
+
43
+ order = @test_notification.params['order_number']
44
+
45
+ end
46
+
47
+ private
48
+ def test_http_raw_data
49
+ "sid=1232919&fixed=Y&key=B5446FF1061F5522C29CCCA0F95EA375&state=ON&email=cody%40example.com&city=Ottawa&street_address=1+-+8+Clarence+St%2C+Apartment+5&product_id=&cart_order_id=10&tcoid=8032992fe053170efb7e58de35b07d39&country=Canada&order_number=3644445821&merchant_order_id=%231010&option-=&cart_id=10&Product_description=&lang=&demo=Y&pay_method=CC&quantity=1&total=31.66&phone=(555)555-5555&return_url=&credit_card_processed=Y&zip=K1M+3G7&merchant_product_id=10&card_holder_name=Cody+Fauser"
50
+ end
51
+
52
+ def live_http_raw_data
53
+ "sid=1232919&fixed=Y&key=0ee5cd112a9d34952167399c6b55d14f&state=ON&email=cody%40example.com&city=Ottawa&street_address=1+-+8+Clarence+St%2C+Apartment+5&product_id=&cart_order_id=10&tcoid=8032992fe053170efb7e58de35b07d39&country=Canada&order_number=3644445821&merchant_order_id=%231010&option-=&cart_id=10&Product_description=&lang=&pay_method=CC&quantity=1&total=31.66&phone=(555)555-5555&return_url=&credit_card_processed=Y&zip=K1M+3G7&merchant_product_id=10&card_holder_name=Cody+Fauser"
54
+ end
55
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+
3
+ class PaypalModuleTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_notification_method
7
+ assert_instance_of Paypal::Notification, Paypal.notification('name=cody')
8
+ end
9
+
10
+ def test_test_mode
11
+ ActiveMerchant::Billing::Base.integration_mode = :test
12
+ assert_equal 'https://www.sandbox.paypal.com/cgi-bin/webscr', Paypal.service_url
13
+ end
14
+
15
+ def test_production_mode
16
+ ActiveMerchant::Billing::Base.integration_mode = :production
17
+ assert_equal 'https://www.paypal.com/cgi-bin/webscr', Paypal.service_url
18
+ end
19
+
20
+ def test_invalid_mode
21
+ ActiveMerchant::Billing::Base.integration_mode = :zoomin
22
+ assert_raise(StandardError){ Paypal.service_url }
23
+ end
24
+
25
+ def test_return_method
26
+ assert_instance_of Paypal::Return, Paypal.return('name=cody')
27
+ end
28
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class QuickpayModuleTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_notification_method
7
+ assert_instance_of Quickpay::Notification, Quickpay.notification('name=cody')
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ class ChronopayReturnTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_return
7
+ r = Chronopay::Return.new('')
8
+ assert r.success?
9
+ end
10
+ end
11
+
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class GestpayReturnTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_return
7
+ r = Gestpay::Return.new('')
8
+ assert r.success?
9
+ end
10
+ end
@@ -0,0 +1,24 @@
1
+ require 'test_helper'
2
+
3
+ class HiTrustReturnTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_successful_return
7
+ r = HiTrust::Return.new('order_id=&mscssid=&retcode=00&ordernumber=1138742&type=Auth')
8
+ assert r.success?
9
+ assert_equal HiTrust::Return::SUCCESS, r.params['retcode']
10
+ assert_equal HiTrust::Return::CODES[HiTrust::Return::SUCCESS], r.message
11
+ end
12
+
13
+ def test_failed_return
14
+ r = HiTrust::Return.new('retcode=-100')
15
+ assert_false r.success?
16
+ assert_equal HiTrust::Return::CODES['-100'], r.message
17
+ end
18
+
19
+ def test_unknown_return
20
+ r = HiTrust::Return.new('retcode=unknown')
21
+ assert_false r.success?
22
+ assert_nil r.message
23
+ end
24
+ end
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class NochexReturnTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_return
7
+ r = Nochex::Return.new('')
8
+ assert r.success?
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class PaypalReturnTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_return
7
+ r = Paypal::Return.new('')
8
+ assert r.success?
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ class ReturnTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+
7
+ def test_return
8
+ r = Return.new('')
9
+ assert r.success?
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ require 'test_helper'
2
+
3
+ class TwoCheckoutReturnTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_successful_purchase
7
+ r = TwoCheckout::Return.new(successful_purchase)
8
+ assert r.success?
9
+ end
10
+
11
+ def test_pending_purchase
12
+ r = TwoCheckout::Return.new(failed_purchase)
13
+ assert !r.success?
14
+ end
15
+
16
+ private
17
+ def successful_purchase
18
+ 'sid=1232919&fixed=Y&key=C17C887BDCCD0499264FAE9F578CCA66&state=ON&email=codyfauser%40gmail.com&street_address=138+Clarence+St.&city=Ottawa&cart_order_id=9&order_number=3860340141&merchant_order_id=%231009&country=CAN&ip_country=&cart_id=9&lang=en&demo=Y&pay_method=CC&total=118.30&phone=%28613%29555-5555+&credit_card_processed=Y&zip=K1N5P8&street_address2=Apartment+1&card_holder_name=Cody++Fauser'
19
+ end
20
+
21
+ def failed_purchase
22
+ 'sid=1232919&fixed=Y&key=C17C887BDCCD0499264FAE9F578CCA66&state=ON&email=codyfauser%40gmail.com&street_address=138+Clarence+St.&city=Ottawa&cart_order_id=9&order_number=3860340141&merchant_order_id=%231009&country=CAN&ip_country=&cart_id=9&lang=en&demo=Y&pay_method=CC&total=118.30&phone=%28613%29555-5555+&credit_card_processed=K&zip=K1N5P8&street_address2=Apartment+1&card_holder_name=Cody++Fauser'
23
+ end
24
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class TwoCheckoutModuleTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_notification_method
7
+ assert_instance_of TwoCheckout::Notification, TwoCheckout.notification('name=cody')
8
+ end
9
+
10
+ def test_return_method
11
+ assert_instance_of TwoCheckout::Return, TwoCheckout.return('name=cody')
12
+ end
13
+ end
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ class MyPost < PostData
4
+ self.required_fields = [ :ccnumber, :ccexp, :firstname, :lastname, :username, :password, :order_id, :key, :time ]
5
+ end
6
+
7
+ class PostDataTest < Test::Unit::TestCase
8
+
9
+ def setup
10
+
11
+ end
12
+
13
+ def teardown
14
+ PostData.required_fields = []
15
+ end
16
+
17
+ def test_element_assignment
18
+ name = 'Cody Fauser'
19
+ post = PostData.new
20
+
21
+ post[:name] = name
22
+ assert_equal name, post[:name]
23
+ end
24
+
25
+ def test_ignore_blank_fields
26
+ post = PostData.new
27
+ assert_equal 0, post.keys.size
28
+
29
+ post[:name] = ''
30
+ assert_equal 0, post.keys.size
31
+
32
+ post[:name] = nil
33
+ assert_equal 0, post.keys.size
34
+ end
35
+
36
+ def test_dont_ignore_required_blank_fields
37
+ PostData.required_fields = [ :name ]
38
+ post = PostData.new
39
+
40
+ assert_equal 0, post.keys.size
41
+
42
+ post[:name] = ''
43
+ assert_equal 1, post.keys.size
44
+ assert_equal '', post[:name]
45
+
46
+ post[:name] = nil
47
+ assert_equal 1, post.keys.size
48
+ assert_nil post[:name]
49
+ end
50
+
51
+ def test_subclass
52
+ post = MyPost.new
53
+ assert_equal [ :ccnumber, :ccexp, :firstname, :lastname, :username, :password, :order_id, :key, :time ], post.required_fields
54
+ end
55
+ end
@@ -0,0 +1,48 @@
1
+ require 'test_helper'
2
+
3
+ class PostsDataTests < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @url = 'http://example.com'
7
+ @gateway = SimpleTestGateway.new
8
+ end
9
+
10
+ def teardown
11
+ SimpleTestGateway.retry_safe = false
12
+ end
13
+
14
+ def test_single_successful_post
15
+ ActiveMerchant::Connection.any_instance.expects(:request).returns('')
16
+
17
+ assert_nothing_raised do
18
+ @gateway.ssl_post(@url, '')
19
+ end
20
+ end
21
+
22
+ def test_multiple_successful_posts
23
+ ActiveMerchant::Connection.any_instance.expects(:request).times(2).returns('', '')
24
+
25
+ assert_nothing_raised do
26
+ @gateway.ssl_post(@url, '')
27
+ @gateway.ssl_post(@url, '')
28
+ end
29
+ end
30
+
31
+ def test_setting_ssl_strict_outside_class_definition
32
+ assert_equal SimpleTestGateway.ssl_strict, SubclassGateway.ssl_strict
33
+ SimpleTestGateway.ssl_strict = !SimpleTestGateway.ssl_strict
34
+ assert_equal SimpleTestGateway.ssl_strict, SubclassGateway.ssl_strict
35
+ end
36
+
37
+ def test_setting_timeouts
38
+ @gateway.class.open_timeout = 50
39
+ @gateway.class.read_timeout = 37
40
+ ActiveMerchant::Connection.any_instance.expects(:request).returns('')
41
+ ActiveMerchant::Connection.any_instance.expects(:open_timeout=).with(50)
42
+ ActiveMerchant::Connection.any_instance.expects(:read_timeout=).with(37)
43
+
44
+ assert_nothing_raised do
45
+ @gateway.ssl_post(@url, '')
46
+ end
47
+ end
48
+ end