johnideal-activemerchant 1.4.4

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 (300) hide show
  1. data/.gitignore +2 -0
  2. data/CHANGELOG +448 -0
  3. data/CONTRIBUTERS +106 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README +134 -0
  6. data/Rakefile +167 -0
  7. data/VERSION +1 -0
  8. data/activemerchant.gemspec +484 -0
  9. data/gem-public_cert.pem +20 -0
  10. data/generators/gateway/USAGE +5 -0
  11. data/generators/gateway/gateway_generator.rb +61 -0
  12. data/generators/gateway/templates/gateway.rb +77 -0
  13. data/generators/gateway/templates/gateway_test.rb +49 -0
  14. data/generators/gateway/templates/remote_gateway_test.rb +57 -0
  15. data/generators/integration/USAGE +5 -0
  16. data/generators/integration/integration_generator.rb +68 -0
  17. data/generators/integration/templates/helper.rb +34 -0
  18. data/generators/integration/templates/helper_test.rb +54 -0
  19. data/generators/integration/templates/integration.rb +18 -0
  20. data/generators/integration/templates/module_test.rb +9 -0
  21. data/generators/integration/templates/notification.rb +100 -0
  22. data/generators/integration/templates/notification_test.rb +41 -0
  23. data/init.rb +3 -0
  24. data/lib/active_merchant/billing/avs_result.rb +98 -0
  25. data/lib/active_merchant/billing/base.rb +57 -0
  26. data/lib/active_merchant/billing/check.rb +68 -0
  27. data/lib/active_merchant/billing/credit_card.rb +159 -0
  28. data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
  29. data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
  30. data/lib/active_merchant/billing/cvv_result.rb +38 -0
  31. data/lib/active_merchant/billing/expiry_date.rb +34 -0
  32. data/lib/active_merchant/billing/gateway.rb +158 -0
  33. data/lib/active_merchant/billing/gateways/authorize_net.rb +657 -0
  34. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +703 -0
  35. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
  36. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  37. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  38. data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
  39. data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
  40. data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
  41. data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
  42. data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
  43. data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
  44. data/lib/active_merchant/billing/gateways/eway.rb +277 -0
  45. data/lib/active_merchant/billing/gateways/exact.rb +222 -0
  46. data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
  47. data/lib/active_merchant/billing/gateways/linkpoint.rb +396 -0
  48. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  49. data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
  50. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  51. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  52. data/lib/active_merchant/billing/gateways/moneris.rb +205 -0
  53. data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
  54. data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
  55. data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
  56. data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
  57. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
  58. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
  59. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  60. data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
  61. data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
  62. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
  63. data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
  64. data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
  65. data/lib/active_merchant/billing/gateways/paymentech_orbital/paymentech_orbital_response.rb +72 -0
  66. data/lib/active_merchant/billing/gateways/paymentech_orbital.rb +170 -0
  67. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +325 -0
  68. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
  69. data/lib/active_merchant/billing/gateways/paypal.rb +108 -0
  70. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  71. data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
  72. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  73. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  74. data/lib/active_merchant/billing/gateways/protx.rb +307 -0
  75. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  76. data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
  77. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  78. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  79. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  80. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
  81. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  82. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  83. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  84. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  85. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  86. data/lib/active_merchant/billing/gateways/skip_jack.rb +442 -0
  87. data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
  88. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  89. data/lib/active_merchant/billing/gateways/transax.rb +26 -0
  90. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  91. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  92. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  93. data/lib/active_merchant/billing/gateways/viaklix.rb +165 -0
  94. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  95. data/lib/active_merchant/billing/gateways.rb +3 -0
  96. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  97. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  98. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  99. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  100. data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
  101. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
  102. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
  103. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  104. data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
  105. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  106. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  107. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
  108. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  109. data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
  110. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  111. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  112. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  113. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  114. data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
  115. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  116. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  117. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  118. data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
  119. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  120. data/lib/active_merchant/billing/integrations/paypal/helper.rb +118 -0
  121. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  122. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  123. data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
  124. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  125. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  126. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  127. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  128. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  129. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  130. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  131. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  132. data/lib/active_merchant/billing/integrations.rb +22 -0
  133. data/lib/active_merchant/billing/response.rb +32 -0
  134. data/lib/active_merchant/lib/connection.rb +171 -0
  135. data/lib/active_merchant/lib/country.rb +319 -0
  136. data/lib/active_merchant/lib/error.rb +4 -0
  137. data/lib/active_merchant/lib/post_data.rb +22 -0
  138. data/lib/active_merchant/lib/posts_data.rb +47 -0
  139. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  140. data/lib/active_merchant/lib/utils.rb +18 -0
  141. data/lib/active_merchant/lib/validateable.rb +76 -0
  142. data/lib/active_merchant.rb +60 -0
  143. data/lib/certs/cacert.pem +7815 -0
  144. data/lib/support/gateway_support.rb +58 -0
  145. data/script/destroy +14 -0
  146. data/script/generate +14 -0
  147. data/test/fixtures.yml +335 -0
  148. data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
  149. data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
  150. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  151. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  152. data/test/remote/gateways/remote_braintree_test.rb +154 -0
  153. data/test/remote/gateways/remote_card_stream_test.rb +148 -0
  154. data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
  155. data/test/remote/gateways/remote_data_cash_test.rb +357 -0
  156. data/test/remote/gateways/remote_efsnet_test.rb +81 -0
  157. data/test/remote/gateways/remote_eway_test.rb +74 -0
  158. data/test/remote/gateways/remote_exact_test.rb +60 -0
  159. data/test/remote/gateways/remote_instapay_test.rb +61 -0
  160. data/test/remote/gateways/remote_linkpoint_test.rb +112 -0
  161. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
  162. data/test/remote/gateways/remote_merchant_ware_test.rb +113 -0
  163. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  164. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  165. data/test/remote/gateways/remote_moneris_test.rb +82 -0
  166. data/test/remote/gateways/remote_net_registry_test.rb +85 -0
  167. data/test/remote/gateways/remote_netbilling_test.rb +70 -0
  168. data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
  169. data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
  170. data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
  171. data/test/remote/gateways/remote_payflow_test.rb +237 -0
  172. data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
  173. data/test/remote/gateways/remote_payment_express_test.rb +136 -0
  174. data/test/remote/gateways/remote_paymentech_orbital_test.rb +57 -0
  175. data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
  176. data/test/remote/gateways/remote_paypal_test.rb +167 -0
  177. data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
  178. data/test/remote/gateways/remote_protx_test.rb +219 -0
  179. data/test/remote/gateways/remote_psigate_test.rb +50 -0
  180. data/test/remote/gateways/remote_psl_card_test.rb +125 -0
  181. data/test/remote/gateways/remote_quickpay_test.rb +190 -0
  182. data/test/remote/gateways/remote_realex_test.rb +224 -0
  183. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  184. data/test/remote/gateways/remote_sage_test.rb +87 -0
  185. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  186. data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
  187. data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
  188. data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
  189. data/test/remote/gateways/remote_skipjack_test.rb +105 -0
  190. data/test/remote/gateways/remote_trans_first_test.rb +34 -0
  191. data/test/remote/gateways/remote_transax_test.rb +112 -0
  192. data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
  193. data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
  194. data/test/remote/gateways/remote_verifi_test.rb +107 -0
  195. data/test/remote/gateways/remote_viaklix_test.rb +43 -0
  196. data/test/remote/gateways/remote_wirecard_test.rb +111 -0
  197. data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
  198. data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
  199. data/test/test_helper.rb +182 -0
  200. data/test/unit/avs_result_test.rb +59 -0
  201. data/test/unit/base_test.rb +55 -0
  202. data/test/unit/check_test.rb +88 -0
  203. data/test/unit/connection_test.rb +129 -0
  204. data/test/unit/country_code_test.rb +33 -0
  205. data/test/unit/country_test.rb +64 -0
  206. data/test/unit/credit_card_formatting_test.rb +19 -0
  207. data/test/unit/credit_card_methods_test.rb +170 -0
  208. data/test/unit/credit_card_test.rb +318 -0
  209. data/test/unit/cvv_result_test.rb +33 -0
  210. data/test/unit/expiry_date_test.rb +32 -0
  211. data/test/unit/gateways/authorize_net_cim_test.rb +638 -0
  212. data/test/unit/gateways/authorize_net_test.rb +290 -0
  213. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  214. data/test/unit/gateways/beanstream_test.rb +108 -0
  215. data/test/unit/gateways/bogus_test.rb +46 -0
  216. data/test/unit/gateways/braintree_test.rb +126 -0
  217. data/test/unit/gateways/card_stream_test.rb +90 -0
  218. data/test/unit/gateways/cyber_source_test.rb +188 -0
  219. data/test/unit/gateways/data_cash_test.rb +133 -0
  220. data/test/unit/gateways/efsnet_test.rb +123 -0
  221. data/test/unit/gateways/eway_test.rb +118 -0
  222. data/test/unit/gateways/exact_test.rb +156 -0
  223. data/test/unit/gateways/gateway_test.rb +48 -0
  224. data/test/unit/gateways/instapay_test.rb +102 -0
  225. data/test/unit/gateways/linkpoint_test.rb +167 -0
  226. data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
  227. data/test/unit/gateways/merchant_ware_test.rb +188 -0
  228. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  229. data/test/unit/gateways/moneris_test.rb +158 -0
  230. data/test/unit/gateways/net_registry_test.rb +416 -0
  231. data/test/unit/gateways/netbilling_test.rb +54 -0
  232. data/test/unit/gateways/pay_junction_test.rb +123 -0
  233. data/test/unit/gateways/pay_secure_test.rb +71 -0
  234. data/test/unit/gateways/payflow_express_test.rb +173 -0
  235. data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
  236. data/test/unit/gateways/payflow_test.rb +305 -0
  237. data/test/unit/gateways/payflow_uk_test.rb +30 -0
  238. data/test/unit/gateways/payment_express_test.rb +195 -0
  239. data/test/unit/gateways/paymentech_orbital_test.rb +117 -0
  240. data/test/unit/gateways/paypal_express_test.rb +382 -0
  241. data/test/unit/gateways/paypal_test.rb +520 -0
  242. data/test/unit/gateways/plugnpay_test.rb +86 -0
  243. data/test/unit/gateways/protx_test.rb +139 -0
  244. data/test/unit/gateways/psigate_test.rb +169 -0
  245. data/test/unit/gateways/psl_card_test.rb +64 -0
  246. data/test/unit/gateways/quickpay_test.rb +112 -0
  247. data/test/unit/gateways/realex_test.rb +151 -0
  248. data/test/unit/gateways/sage_bankcard_test.rb +162 -0
  249. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  250. data/test/unit/gateways/secure_pay_au_test.rb +207 -0
  251. data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
  252. data/test/unit/gateways/secure_pay_test.rb +87 -0
  253. data/test/unit/gateways/skip_jack_test.rb +133 -0
  254. data/test/unit/gateways/trans_first_test.rb +112 -0
  255. data/test/unit/gateways/trust_commerce_test.rb +90 -0
  256. data/test/unit/gateways/usa_epay_test.rb +128 -0
  257. data/test/unit/gateways/verifi_test.rb +96 -0
  258. data/test/unit/gateways/viaklix_test.rb +78 -0
  259. data/test/unit/gateways/wirecard_test.rb +250 -0
  260. data/test/unit/generators/test_gateway_generator.rb +46 -0
  261. data/test/unit/generators/test_generator_helper.rb +20 -0
  262. data/test/unit/generators/test_integration_generator.rb +53 -0
  263. data/test/unit/integrations/action_view_helper_test.rb +50 -0
  264. data/test/unit/integrations/bogus_module_test.rb +20 -0
  265. data/test/unit/integrations/chronopay_module_test.rb +13 -0
  266. data/test/unit/integrations/gestpay_module_test.rb +14 -0
  267. data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
  268. data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
  269. data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
  270. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
  271. data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
  272. data/test/unit/integrations/helpers/paypal_helper_test.rb +162 -0
  273. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  274. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
  275. data/test/unit/integrations/hi_trust_module_test.rb +13 -0
  276. data/test/unit/integrations/nochex_module_test.rb +13 -0
  277. data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
  278. data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
  279. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
  280. data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
  281. data/test/unit/integrations/notifications/notification_test.rb +54 -0
  282. data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
  283. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  284. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
  285. data/test/unit/integrations/paypal_module_test.rb +28 -0
  286. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  287. data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
  288. data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
  289. data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
  290. data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
  291. data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
  292. data/test/unit/integrations/returns/return_test.rb +11 -0
  293. data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
  294. data/test/unit/integrations/two_checkout_module_test.rb +13 -0
  295. data/test/unit/post_data_test.rb +55 -0
  296. data/test/unit/posts_data_test.rb +48 -0
  297. data/test/unit/response_test.rb +28 -0
  298. data/test/unit/utils_test.rb +7 -0
  299. data/test/unit/validateable_test.rb +60 -0
  300. metadata +503 -0
@@ -0,0 +1,70 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteNetbillingTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = NetbillingGateway.new(fixtures(:netbilling))
7
+
8
+ @credit_card = credit_card('4444111111111119',
9
+ :month => '9',
10
+ :year => '2009',
11
+ :verification_value => nil
12
+ )
13
+
14
+ @address = { :address1 => '1600 Amphitheatre Parkway',
15
+ :city => 'Mountain View',
16
+ :state => 'CA',
17
+ :country => 'US',
18
+ :zip => '94043',
19
+ :phone => '650-253-0001'
20
+ }
21
+
22
+ @options = {
23
+ :billing_address => @address,
24
+ :description => 'Internet purchase'
25
+ }
26
+
27
+ @amount = 100
28
+ end
29
+
30
+ def test_successful_purchase
31
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
32
+ assert_success response
33
+ assert_false response.authorization.blank?
34
+ assert_equal NetbillingGateway::SUCCESS_MESSAGE, response.message
35
+ assert response.test?
36
+ end
37
+
38
+ def test_unsuccessful_purchase
39
+ @credit_card.year = '2006'
40
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
41
+ assert_equal 'CARD EXPIRED', response.message
42
+ assert_failure response
43
+ end
44
+
45
+ def test_authorize_and_capture
46
+ amount = @amount
47
+ assert auth = @gateway.authorize(amount, @credit_card, @options)
48
+ assert_success auth
49
+ assert_equal NetbillingGateway::SUCCESS_MESSAGE, auth.message
50
+ assert auth.authorization
51
+ assert capture = @gateway.capture(amount, auth.authorization)
52
+ assert_success capture
53
+ end
54
+
55
+ def test_failed_capture
56
+ assert response = @gateway.capture(@amount, '1111')
57
+ assert_failure response
58
+ assert_equal NetbillingGateway::FAILURE_MESSAGE, response.message
59
+ end
60
+
61
+ def test_invalid_login
62
+ gateway = NetbillingGateway.new(
63
+ :login => '',
64
+ :password => ''
65
+ )
66
+ assert response = gateway.purchase(@amount, @credit_card, @options)
67
+ assert_equal NetbillingGateway::FAILURE_MESSAGE, response.message
68
+ assert_failure response
69
+ end
70
+ end
@@ -0,0 +1,143 @@
1
+ require 'test_helper'
2
+
3
+ class PayJunctionTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing
5
+
6
+ cattr_accessor :current_invoice
7
+
8
+ AMOUNT = 250
9
+
10
+ def setup
11
+ @gateway = PayJunctionGateway.new(fixtures(:pay_junction))
12
+
13
+ @credit_card = credit_card('4444333322221111', :verification_value => '123')
14
+
15
+ @valid_verification_value = '123'
16
+ @invalid_verification_value = '1234'
17
+
18
+ @valid_address = {
19
+ :address1 => '123 Test St.',
20
+ :address2 => nil,
21
+ :city => 'Somewhere',
22
+ :state => 'CA',
23
+ :zip => '90001'
24
+ }
25
+
26
+ @invalid_address = {
27
+ :address1 => '187 Apple Tree Lane.',
28
+ :address2 => nil,
29
+ :city => 'Woodside',
30
+ :state => 'CA',
31
+ :zip => '94062'
32
+ }
33
+
34
+ @options = { :billing_address => @valid_address, :order_id => generate_unique_id }
35
+ end
36
+
37
+ def test_successful_purchase
38
+ assert response = @gateway.purchase(AMOUNT, @credit_card, @options)
39
+ assert_equal PayJunctionGateway::SUCCESS_MESSAGE, response.message
40
+ assert_equal 'capture', response.params["posture"], 'Should be captured funds'
41
+ assert_equal 'charge', response.params["transaction_action"]
42
+ assert_success response
43
+ assert response.test?
44
+ end
45
+
46
+ def test_successful_purchase_with_cvv
47
+ @credit_card.verification_value = @valid_verification_value
48
+ assert response = @gateway.purchase(AMOUNT, @credit_card, @options)
49
+
50
+ assert_equal PayJunctionGateway::SUCCESS_MESSAGE, response.message
51
+ assert_equal 'capture', response.params["posture"], 'Should be captured funds'
52
+ assert_equal 'charge', response.params["transaction_action"]
53
+
54
+ assert_success response
55
+ end
56
+
57
+ def test_successful_authorize
58
+ assert response = @gateway.authorize( AMOUNT, @credit_card, @options)
59
+
60
+ assert_equal PayJunctionGateway::SUCCESS_MESSAGE, response.message
61
+ assert_equal 'hold', response.params["posture"], 'Should be a held charge'
62
+ assert_equal 'charge', response.params["transaction_action"]
63
+
64
+ assert_success response
65
+ end
66
+
67
+ def test_successful_capture
68
+ auth = @gateway.authorize(AMOUNT, @credit_card, @options)
69
+ assert_success auth
70
+
71
+ response = @gateway.capture(AMOUNT, auth.authorization, @options)
72
+ assert_success response
73
+ assert_equal 'capture', response.params["posture"], 'Should be a capture'
74
+ assert_equal auth.authorization, response.authorization,
75
+ "Should maintain transaction ID across request"
76
+ end
77
+
78
+ def test_successful_credit
79
+ purchase = @gateway.purchase(AMOUNT, @credit_card, @options)
80
+ assert_success purchase
81
+
82
+ assert response = @gateway.credit(success_price, purchase.authorization)
83
+ assert_equal 'refund', response.params["transaction_action"]
84
+
85
+ assert_success response
86
+ end
87
+
88
+ def test_successful_void
89
+ order_id = generate_unique_id
90
+ purchase = @gateway.purchase(AMOUNT, @credit_card, @options)
91
+ assert_success purchase
92
+
93
+ assert response = @gateway.void(AMOUNT, purchase.authorization, :order_id => order_id)
94
+ assert_success response
95
+ assert_equal 'void', response.params["posture"], 'Should be a capture'
96
+ assert_equal purchase.authorization, response.authorization,
97
+ "Should maintain transaction ID across request"
98
+ end
99
+
100
+ def test_successful_instant_purchase
101
+ # this takes advatange of the PayJunction feature where another
102
+ # transaction can be executed if you have the transaction ID of a
103
+ # previous successful transaction.
104
+
105
+ purchase = @gateway.purchase( AMOUNT, @credit_card, @options)
106
+ assert_success purchase
107
+
108
+ assert response = @gateway.purchase(AMOUNT, purchase.authorization, :order_id => generate_unique_id)
109
+
110
+ assert_equal PayJunctionGateway::SUCCESS_MESSAGE, response.message
111
+ assert_equal 'capture', response.params["posture"], 'Should be captured funds'
112
+ assert_equal 'charge', response.params["transaction_action"]
113
+ assert_not_equal purchase.authorization, response.authorization,
114
+ 'Should have recieved new transaction ID'
115
+
116
+ assert_success response
117
+ end
118
+
119
+ def test_successful_recurring
120
+ assert response = @gateway.recurring(AMOUNT, @credit_card,
121
+ :periodicity => :monthly,
122
+ :payments => 12,
123
+ :order_id => generate_unique_id
124
+ )
125
+
126
+ assert_equal PayJunctionGateway::SUCCESS_MESSAGE, response.message
127
+ assert_equal 'charge', response.params["transaction_action"]
128
+
129
+ assert_success response
130
+ end
131
+
132
+ def test_should_send_invoice
133
+ response = @gateway.purchase(AMOUNT, @credit_card, @options)
134
+ assert_success response
135
+
136
+ assert_equal @options[:order_id], response.params["invoice_number"], 'Should have set invoice'
137
+ end
138
+
139
+ private
140
+ def success_price
141
+ 200 + rand(200)
142
+ end
143
+ end
@@ -0,0 +1,39 @@
1
+ require 'test_helper'
2
+
3
+ class RemotePaySecureTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @gateway = PaySecureGateway.new(fixtures(:pay_secure))
7
+
8
+ @credit_card = credit_card('4000100011112224')
9
+ @options = {
10
+ :billing_address => address,
11
+ :order_id => generate_unique_id
12
+ }
13
+ @amount = 100
14
+ end
15
+
16
+ def test_successful_purchase
17
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
18
+ assert_success response
19
+ assert_equal PaySecureGateway::SUCCESS_MESSAGE, response.message
20
+ assert response.test?
21
+ end
22
+
23
+ def test_unsuccessful_purchase
24
+ @credit_card.year = '2006'
25
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
26
+ assert_equal 'Declined, card expired', response.message
27
+ assert_failure response
28
+ end
29
+
30
+ def test_invalid_login
31
+ gateway = PaySecureGateway.new(
32
+ :login => '',
33
+ :password => ''
34
+ )
35
+ assert response = gateway.purchase(@amount, @credit_card, @options)
36
+ assert_equal "MissingField: 'MERCHANT_ID'", response.message
37
+ assert_failure response
38
+ end
39
+ end
@@ -0,0 +1,50 @@
1
+ require 'test_helper'
2
+
3
+ class RemotePayflowTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.gateway_mode = :test
6
+
7
+ @gateway = PayflowExpressGateway.new(fixtures(:payflow))
8
+
9
+ @options = { :billing_address => {
10
+ :name => 'Cody Fauser',
11
+ :address1 => '1234 Shady Brook Lane',
12
+ :city => 'Ottawa',
13
+ :state => 'ON',
14
+ :country => 'CA',
15
+ :zip => '90210',
16
+ :phone => '555-555-5555'
17
+ },
18
+ :email => 'cody@example.com'
19
+ }
20
+ end
21
+
22
+ # Only works with a Payflow 2.0 account or by requesting the addition
23
+ # of Express checkout to an existing Payflow Pro account. This can be done
24
+ # by contacting Payflow sales. The PayPal account used must be a business
25
+ # account and the Payflow Pro account must be in Live mode in order for
26
+ # the tests to work correctly
27
+ def test_set_express_authorization
28
+ @options.update(
29
+ :return_url => 'http://example.com',
30
+ :cancel_return_url => 'http://example.com',
31
+ :email => 'Buyer1@paypal.com'
32
+ )
33
+ response = @gateway.setup_authorization(500, @options)
34
+ assert response.success?
35
+ assert response.test?
36
+ assert !response.params['token'].blank?
37
+ end
38
+
39
+ def test_set_express_purchase
40
+ @options.update(
41
+ :return_url => 'http://example.com',
42
+ :cancel_return_url => 'http://example.com',
43
+ :email => 'Buyer1@paypal.com'
44
+ )
45
+ response = @gateway.setup_purchase(500, @options)
46
+ assert response.success?
47
+ assert response.test?
48
+ assert !response.params['token'].blank?
49
+ end
50
+ end
@@ -0,0 +1,237 @@
1
+ require 'test_helper'
2
+
3
+ class RemotePayflowTest < Test::Unit::TestCase
4
+ def setup
5
+ ActiveMerchant::Billing::Base.gateway_mode = :test
6
+
7
+ @gateway = PayflowGateway.new(fixtures(:payflow))
8
+
9
+ @credit_card = credit_card('5105105105105100',
10
+ :type => 'master'
11
+ )
12
+
13
+ @options = { :billing_address => address,
14
+ :email => 'cody@example.com',
15
+ :customer => 'codyexample'
16
+ }
17
+ end
18
+
19
+ def test_successful_purchase
20
+ assert response = @gateway.purchase(100000, @credit_card, @options)
21
+ assert_equal "Approved", response.message
22
+ assert_success response
23
+ assert response.test?
24
+ assert_not_nil response.authorization
25
+ end
26
+
27
+ def test_declined_purchase
28
+ assert response = @gateway.purchase(210000, @credit_card, @options)
29
+ assert_equal 'Declined', response.message
30
+ assert_failure response
31
+ assert response.test?
32
+ end
33
+
34
+ def test_successful_authorization
35
+ assert response = @gateway.authorize(100, @credit_card, @options)
36
+ assert_equal "Approved", response.message
37
+ assert_success response
38
+ assert response.test?
39
+ assert_not_nil response.authorization
40
+ end
41
+
42
+ def test_authorize_and_capture
43
+ assert auth = @gateway.authorize(100, @credit_card, @options)
44
+ assert_success auth
45
+ assert_equal 'Approved', auth.message
46
+ assert auth.authorization
47
+ assert capture = @gateway.capture(100, auth.authorization)
48
+ assert_success capture
49
+ end
50
+
51
+ def test_authorize_and_partial_capture
52
+ assert auth = @gateway.authorize(100 * 2, @credit_card, @options)
53
+ assert_success auth
54
+ assert_equal 'Approved', auth.message
55
+ assert auth.authorization
56
+
57
+ assert capture = @gateway.capture(100, auth.authorization)
58
+ assert_success capture
59
+ end
60
+
61
+ def test_failed_capture
62
+ assert response = @gateway.capture(100, '999')
63
+ assert_failure response
64
+ assert_equal 'Invalid tender', response.message
65
+ end
66
+
67
+ def test_authorize_and_void
68
+ assert auth = @gateway.authorize(100, @credit_card, @options)
69
+ assert_success auth
70
+ assert_equal 'Approved', auth.message
71
+ assert auth.authorization
72
+ assert void = @gateway.void(auth.authorization)
73
+ assert_success void
74
+ end
75
+
76
+ def test_invalid_login
77
+ gateway = PayflowGateway.new(
78
+ :login => '',
79
+ :password => ''
80
+ )
81
+ assert response = gateway.purchase(100, @credit_card, @options)
82
+ assert_equal 'Invalid vendor account', response.message
83
+ assert_failure response
84
+ end
85
+
86
+ def test_duplicate_request_id
87
+ request_id = Digest::MD5.hexdigest(rand.to_s)
88
+ @gateway.expects(:generate_unique_id).times(2).returns(request_id)
89
+
90
+ response1 = @gateway.purchase(100, @credit_card, @options)
91
+ assert response1.success?
92
+ assert_nil response1.params['duplicate']
93
+
94
+ response2 = @gateway.purchase(100, @credit_card, @options)
95
+ assert response2.success?
96
+ assert response2.params['duplicate']
97
+ end
98
+
99
+ def test_create_recurring_profile
100
+ response = @gateway.recurring(1000, @credit_card, :periodicity => :monthly)
101
+ assert_success response
102
+ assert !response.params['profile_id'].blank?
103
+ assert response.test?
104
+ end
105
+
106
+ def test_create_recurring_profile_with_invalid_date
107
+ response = @gateway.recurring(1000, @credit_card, :periodicity => :monthly, :starting_at => Time.now)
108
+ assert_failure response
109
+ assert_equal 'Field format error: Start or next payment date must be a valid future date', response.message
110
+ assert response.params['profile_id'].blank?
111
+ assert response.test?
112
+ end
113
+
114
+ def test_create_and_cancel_recurring_profile
115
+ response = @gateway.recurring(1000, @credit_card, :periodicity => :monthly)
116
+ assert_success response
117
+ assert !response.params['profile_id'].blank?
118
+ assert response.test?
119
+
120
+ response = @gateway.cancel_recurring(response.params['profile_id'])
121
+ assert_success response
122
+ assert response.test?
123
+ end
124
+
125
+ def test_full_feature_set_for_recurring_profiles
126
+ # Test add
127
+ @options.update(
128
+ :periodicity => :weekly,
129
+ :payments => '12',
130
+ :starting_at => Time.now + 1.day,
131
+ :comment => "Test Profile"
132
+ )
133
+ response = @gateway.recurring(100, @credit_card, @options)
134
+ assert_equal "Approved", response.params['message']
135
+ assert_equal "0", response.params['result']
136
+ assert_success response
137
+ assert response.test?
138
+ assert !response.params['profile_id'].blank?
139
+ @recurring_profile_id = response.params['profile_id']
140
+
141
+ # Test modify
142
+ @options.update(
143
+ :periodicity => :monthly,
144
+ :starting_at => Time.now + 1.day,
145
+ :payments => '4',
146
+ :profile_id => @recurring_profile_id
147
+ )
148
+ response = @gateway.recurring(400, @credit_card, @options)
149
+ assert_equal "Approved", response.params['message']
150
+ assert_equal "0", response.params['result']
151
+ assert_success response
152
+ assert response.test?
153
+
154
+ # Test inquiry
155
+ response = @gateway.recurring_inquiry(@recurring_profile_id)
156
+ assert_equal "0", response.params['result']
157
+ assert_success response
158
+ assert response.test?
159
+
160
+ # Test payment history inquiry
161
+ response = @gateway.recurring_inquiry(@recurring_profile_id, :history => true)
162
+ assert_equal '0', response.params['result']
163
+ assert_success response
164
+ assert response.test?
165
+
166
+ # Test cancel
167
+ response = @gateway.cancel_recurring(@recurring_profile_id)
168
+ assert_equal "Approved", response.params['message']
169
+ assert_equal "0", response.params['result']
170
+ assert_success response
171
+ assert response.test?
172
+ end
173
+
174
+ # Note that this test will only work if you enable reference transactions!!
175
+ def test_reference_purchase
176
+ assert response = @gateway.purchase(10000, @credit_card, @options)
177
+ assert_equal "Approved", response.message
178
+ assert_success response
179
+ assert response.test?
180
+ assert_not_nil pn_ref = response.authorization
181
+
182
+ # now another purchase, by reference
183
+ assert response = @gateway.purchase(10000, pn_ref)
184
+ assert_equal "Approved", response.message
185
+ assert_success response
186
+ assert response.test?
187
+ end
188
+
189
+ def test_recurring_with_initial_authorization
190
+ response = @gateway.recurring(1000, @credit_card,
191
+ :periodicity => :monthly,
192
+ :initial_transaction => {
193
+ :type => :authorization
194
+ }
195
+ )
196
+
197
+ assert_success response
198
+ assert !response.params['profile_id'].blank?
199
+ assert response.test?
200
+ end
201
+
202
+ def test_recurring_with_initial_authorization
203
+ response = @gateway.recurring(1000, @credit_card,
204
+ :periodicity => :monthly,
205
+ :initial_transaction => {
206
+ :type => :purchase,
207
+ :amount => 500
208
+ }
209
+ )
210
+
211
+ assert_success response
212
+ assert !response.params['profile_id'].blank?
213
+ assert response.test?
214
+ end
215
+
216
+ def test_purchase_and_referenced_credit
217
+ amount = 100
218
+
219
+ assert purchase = @gateway.purchase(amount, @credit_card, @options)
220
+ assert_success purchase
221
+ assert_equal 'Approved', purchase.message
222
+ assert !purchase.authorization.blank?
223
+
224
+ assert credit = @gateway.credit(amount, purchase.authorization)
225
+ assert_success credit
226
+ end
227
+
228
+ # The default security setting for Payflow Pro accounts is Allow
229
+ # non-referenced credits = No.
230
+ #
231
+ # Non-referenced credits will fail with Result code 117 (failed the security
232
+ # check) unless Allow non-referenced credits = Yes in PayPal manager
233
+ def test_purchase_and_non_referenced_credit
234
+ assert credit = @gateway.credit(100, @credit_card, @options)
235
+ assert_success credit
236
+ end
237
+ end