mattbauer-activemerchant 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. data/CHANGELOG +459 -0
  2. data/CONTRIBUTERS +118 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README +134 -0
  5. data/Rakefile +153 -0
  6. data/gem-public_cert.pem +20 -0
  7. data/init.rb +3 -0
  8. data/lib/active_merchant.rb +60 -0
  9. data/lib/active_merchant/billing/avs_result.rb +98 -0
  10. data/lib/active_merchant/billing/base.rb +57 -0
  11. data/lib/active_merchant/billing/check.rb +68 -0
  12. data/lib/active_merchant/billing/credit_card.rb +159 -0
  13. data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
  14. data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
  15. data/lib/active_merchant/billing/cvv_result.rb +38 -0
  16. data/lib/active_merchant/billing/expiry_date.rb +34 -0
  17. data/lib/active_merchant/billing/gateway.rb +158 -0
  18. data/lib/active_merchant/billing/gateways.rb +3 -0
  19. data/lib/active_merchant/billing/gateways/authorize_net.rb +657 -0
  20. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +703 -0
  21. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  22. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
  23. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  24. data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
  25. data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
  26. data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
  27. data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
  28. data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
  29. data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
  30. data/lib/active_merchant/billing/gateways/elavon.rb +106 -0
  31. data/lib/active_merchant/billing/gateways/eway.rb +277 -0
  32. data/lib/active_merchant/billing/gateways/exact.rb +222 -0
  33. data/lib/active_merchant/billing/gateways/first_pay.rb +172 -0
  34. data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
  35. data/lib/active_merchant/billing/gateways/linkpoint.rb +396 -0
  36. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  37. data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
  38. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  39. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  40. data/lib/active_merchant/billing/gateways/moneris.rb +295 -0
  41. data/lib/active_merchant/billing/gateways/moneris_usa.rb +258 -0
  42. data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
  43. data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
  44. data/lib/active_merchant/billing/gateways/ogone.rb +259 -0
  45. data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
  46. data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
  47. data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
  48. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
  49. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
  50. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  51. data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
  52. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
  53. data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
  54. data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
  55. data/lib/active_merchant/billing/gateways/paypal.rb +121 -0
  56. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +325 -0
  57. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
  58. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  59. data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
  60. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  61. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  62. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  63. data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
  64. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  65. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  66. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  67. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  68. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
  69. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  70. data/lib/active_merchant/billing/gateways/sage_pay.rb +308 -0
  71. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  72. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  73. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  74. data/lib/active_merchant/billing/gateways/skip_jack.rb +442 -0
  75. data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
  76. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  77. data/lib/active_merchant/billing/gateways/transax.rb +26 -0
  78. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  79. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  80. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  81. data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
  82. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  83. data/lib/active_merchant/billing/integrations.rb +22 -0
  84. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  85. data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
  86. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  87. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  88. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  89. data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
  90. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
  91. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
  92. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  93. data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
  94. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  95. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  96. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
  97. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  98. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  99. data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
  100. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  101. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  102. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  103. data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
  104. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  105. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  106. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  107. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  108. data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
  109. data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -0
  110. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  111. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  112. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  113. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  114. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  115. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  116. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  117. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  118. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  119. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  120. data/lib/active_merchant/billing/response.rb +32 -0
  121. data/lib/active_merchant/lib/connection.rb +170 -0
  122. data/lib/active_merchant/lib/country.rb +319 -0
  123. data/lib/active_merchant/lib/error.rb +4 -0
  124. data/lib/active_merchant/lib/post_data.rb +22 -0
  125. data/lib/active_merchant/lib/posts_data.rb +47 -0
  126. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  127. data/lib/active_merchant/lib/utils.rb +18 -0
  128. data/lib/active_merchant/lib/validateable.rb +76 -0
  129. data/lib/certs/cacert.pem +7815 -0
  130. data/lib/support/gateway_support.rb +58 -0
  131. data/script/destroy +14 -0
  132. data/script/generate +14 -0
  133. data/test/fixtures.yml +353 -0
  134. data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
  135. data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
  136. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  137. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  138. data/test/remote/gateways/remote_braintree_test.rb +154 -0
  139. data/test/remote/gateways/remote_card_stream_test.rb +148 -0
  140. data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
  141. data/test/remote/gateways/remote_data_cash_test.rb +357 -0
  142. data/test/remote/gateways/remote_efsnet_test.rb +81 -0
  143. data/test/remote/gateways/remote_elavon_test.rb +66 -0
  144. data/test/remote/gateways/remote_eway_test.rb +74 -0
  145. data/test/remote/gateways/remote_exact_test.rb +60 -0
  146. data/test/remote/gateways/remote_first_pay_test.rb +87 -0
  147. data/test/remote/gateways/remote_instapay_test.rb +61 -0
  148. data/test/remote/gateways/remote_linkpoint_test.rb +112 -0
  149. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
  150. data/test/remote/gateways/remote_merchant_ware_test.rb +113 -0
  151. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  152. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  153. data/test/remote/gateways/remote_moneris_test.rb +118 -0
  154. data/test/remote/gateways/remote_moneris_usa_test.rb +115 -0
  155. data/test/remote/gateways/remote_net_registry_test.rb +85 -0
  156. data/test/remote/gateways/remote_netbilling_test.rb +70 -0
  157. data/test/remote/gateways/remote_ogone_test.rb +108 -0
  158. data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
  159. data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
  160. data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
  161. data/test/remote/gateways/remote_payflow_test.rb +237 -0
  162. data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
  163. data/test/remote/gateways/remote_payment_express_test.rb +136 -0
  164. data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
  165. data/test/remote/gateways/remote_paypal_test.rb +178 -0
  166. data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
  167. data/test/remote/gateways/remote_psigate_test.rb +50 -0
  168. data/test/remote/gateways/remote_psl_card_test.rb +125 -0
  169. data/test/remote/gateways/remote_quickpay_test.rb +190 -0
  170. data/test/remote/gateways/remote_realex_test.rb +224 -0
  171. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  172. data/test/remote/gateways/remote_sage_pay_test.rb +219 -0
  173. data/test/remote/gateways/remote_sage_test.rb +87 -0
  174. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  175. data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
  176. data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
  177. data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
  178. data/test/remote/gateways/remote_skipjack_test.rb +105 -0
  179. data/test/remote/gateways/remote_trans_first_test.rb +34 -0
  180. data/test/remote/gateways/remote_transax_test.rb +112 -0
  181. data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
  182. data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
  183. data/test/remote/gateways/remote_verifi_test.rb +107 -0
  184. data/test/remote/gateways/remote_viaklix_test.rb +43 -0
  185. data/test/remote/gateways/remote_wirecard_test.rb +111 -0
  186. data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
  187. data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
  188. data/test/test_helper.rb +182 -0
  189. data/test/unit/avs_result_test.rb +59 -0
  190. data/test/unit/base_test.rb +55 -0
  191. data/test/unit/check_test.rb +88 -0
  192. data/test/unit/connection_test.rb +129 -0
  193. data/test/unit/country_code_test.rb +33 -0
  194. data/test/unit/country_test.rb +64 -0
  195. data/test/unit/credit_card_formatting_test.rb +19 -0
  196. data/test/unit/credit_card_methods_test.rb +179 -0
  197. data/test/unit/credit_card_test.rb +318 -0
  198. data/test/unit/cvv_result_test.rb +33 -0
  199. data/test/unit/expiry_date_test.rb +32 -0
  200. data/test/unit/gateways/authorize_net_cim_test.rb +638 -0
  201. data/test/unit/gateways/authorize_net_test.rb +290 -0
  202. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  203. data/test/unit/gateways/beanstream_test.rb +108 -0
  204. data/test/unit/gateways/bogus_test.rb +46 -0
  205. data/test/unit/gateways/braintree_test.rb +126 -0
  206. data/test/unit/gateways/card_stream_test.rb +90 -0
  207. data/test/unit/gateways/cyber_source_test.rb +188 -0
  208. data/test/unit/gateways/data_cash_test.rb +133 -0
  209. data/test/unit/gateways/efsnet_test.rb +123 -0
  210. data/test/unit/gateways/elavon_test.rb +139 -0
  211. data/test/unit/gateways/eway_test.rb +118 -0
  212. data/test/unit/gateways/exact_test.rb +156 -0
  213. data/test/unit/gateways/first_pay_test.rb +125 -0
  214. data/test/unit/gateways/gateway_test.rb +48 -0
  215. data/test/unit/gateways/instapay_test.rb +102 -0
  216. data/test/unit/gateways/linkpoint_test.rb +167 -0
  217. data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
  218. data/test/unit/gateways/merchant_ware_test.rb +188 -0
  219. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  220. data/test/unit/gateways/moneris_test.rb +185 -0
  221. data/test/unit/gateways/moneris_usa_test.rb +183 -0
  222. data/test/unit/gateways/net_registry_test.rb +416 -0
  223. data/test/unit/gateways/netbilling_test.rb +54 -0
  224. data/test/unit/gateways/ogone_test.rb +256 -0
  225. data/test/unit/gateways/pay_junction_test.rb +123 -0
  226. data/test/unit/gateways/pay_secure_test.rb +71 -0
  227. data/test/unit/gateways/payflow_express_test.rb +173 -0
  228. data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
  229. data/test/unit/gateways/payflow_test.rb +305 -0
  230. data/test/unit/gateways/payflow_uk_test.rb +30 -0
  231. data/test/unit/gateways/payment_express_test.rb +195 -0
  232. data/test/unit/gateways/paypal_express_test.rb +382 -0
  233. data/test/unit/gateways/paypal_test.rb +569 -0
  234. data/test/unit/gateways/plugnpay_test.rb +86 -0
  235. data/test/unit/gateways/psigate_test.rb +169 -0
  236. data/test/unit/gateways/psl_card_test.rb +64 -0
  237. data/test/unit/gateways/quickpay_test.rb +112 -0
  238. data/test/unit/gateways/realex_test.rb +151 -0
  239. data/test/unit/gateways/sage_bankcard_test.rb +162 -0
  240. data/test/unit/gateways/sage_pay_test.rb +139 -0
  241. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  242. data/test/unit/gateways/secure_pay_au_test.rb +207 -0
  243. data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
  244. data/test/unit/gateways/secure_pay_test.rb +87 -0
  245. data/test/unit/gateways/skip_jack_test.rb +133 -0
  246. data/test/unit/gateways/trans_first_test.rb +112 -0
  247. data/test/unit/gateways/trust_commerce_test.rb +90 -0
  248. data/test/unit/gateways/usa_epay_test.rb +128 -0
  249. data/test/unit/gateways/verifi_test.rb +96 -0
  250. data/test/unit/gateways/viaklix_test.rb +78 -0
  251. data/test/unit/gateways/wirecard_test.rb +250 -0
  252. data/test/unit/generators/test_gateway_generator.rb +46 -0
  253. data/test/unit/generators/test_generator_helper.rb +20 -0
  254. data/test/unit/generators/test_integration_generator.rb +53 -0
  255. data/test/unit/integrations/action_view_helper_test.rb +50 -0
  256. data/test/unit/integrations/bogus_module_test.rb +20 -0
  257. data/test/unit/integrations/chronopay_module_test.rb +13 -0
  258. data/test/unit/integrations/gestpay_module_test.rb +14 -0
  259. data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
  260. data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
  261. data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
  262. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
  263. data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
  264. data/test/unit/integrations/helpers/paypal_helper_test.rb +171 -0
  265. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  266. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
  267. data/test/unit/integrations/hi_trust_module_test.rb +13 -0
  268. data/test/unit/integrations/nochex_module_test.rb +13 -0
  269. data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
  270. data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
  271. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
  272. data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
  273. data/test/unit/integrations/notifications/notification_test.rb +54 -0
  274. data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
  275. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  276. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
  277. data/test/unit/integrations/paypal_module_test.rb +28 -0
  278. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  279. data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
  280. data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
  281. data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
  282. data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
  283. data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
  284. data/test/unit/integrations/returns/return_test.rb +11 -0
  285. data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
  286. data/test/unit/integrations/two_checkout_module_test.rb +13 -0
  287. data/test/unit/post_data_test.rb +55 -0
  288. data/test/unit/posts_data_test.rb +48 -0
  289. data/test/unit/response_test.rb +28 -0
  290. data/test/unit/utils_test.rb +7 -0
  291. data/test/unit/validateable_test.rb +60 -0
  292. metadata +396 -0
@@ -0,0 +1,169 @@
1
+ require 'test_helper'
2
+
3
+ class MerchantESolutionsTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.gateway_mode = :test
6
+
7
+ @gateway = MerchantESolutionsGateway.new(
8
+ :login => 'login',
9
+ :password => 'password'
10
+ )
11
+
12
+ @credit_card = credit_card
13
+ @amount = 100
14
+
15
+ @options = {
16
+ :order_id => '1',
17
+ :billing_address => address,
18
+ :description => 'Store Purchase'
19
+ }
20
+ end
21
+
22
+ def test_successful_purchase
23
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
24
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
25
+ assert_instance_of Response, response
26
+ assert_success response
27
+ assert_equal '5547cc97dae23ea6ad1a4abd33445c91', response.authorization
28
+ assert response.test?
29
+ end
30
+
31
+ def test_unsuccessful_purchase
32
+ @gateway.expects(:ssl_post).returns(failed_purchase_response)
33
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
34
+ assert_failure response
35
+ assert response.test?
36
+ end
37
+
38
+ def test_authorization
39
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
40
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
41
+ assert response.success?
42
+ assert_equal '42e52603e4c83a55890fbbcfb92b8de1', response.authorization
43
+ assert response.test?
44
+ end
45
+
46
+ def test_capture
47
+ @gateway.expects(:ssl_post).returns(successful_capture_response)
48
+ assert response = @gateway.capture(@amount, '42e52603e4c83a55890fbbcfb92b8de1', @options)
49
+ assert response.success?
50
+ assert_equal '42e52603e4c83a55890fbbcfb92b8de1', response.authorization
51
+ assert response.test?
52
+ end
53
+
54
+ def test_credit
55
+ @gateway.expects(:ssl_post).returns(successful_credit_response)
56
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
57
+ assert response.success?
58
+ assert_equal '0a5ca4662ac034a59595acb61e8da025', response.authorization
59
+ assert response.test?
60
+ end
61
+
62
+ def test_void
63
+ @gateway.expects(:ssl_post).returns(successful_void_response)
64
+ assert response = @gateway.void('42e52603e4c83a55890fbbcfb92b8de1')
65
+ assert response.success?
66
+ assert_equal '1b08845c6dee3fa1a73fee2a009d33a7', response.authorization
67
+ assert response.test?
68
+ end
69
+
70
+ def test_store
71
+ @gateway.expects(:ssl_post).returns(successful_store_response)
72
+ assert response = @gateway.store(@credit_card)
73
+ assert response.success?
74
+ assert_equal 'ae641b57b19b3bb89faab44191479872', response.authorization
75
+ assert response.test?
76
+ end
77
+
78
+ def test_unstore
79
+ @gateway.expects(:ssl_post).returns(successful_unstore_response)
80
+ assert response = @gateway.unstore('ae641b57b19b3bb89faab44191479872')
81
+ assert response.success?
82
+ assert_equal 'd79410c91b4b31ba99f5a90558565df9', response.authorization
83
+ assert response.test?
84
+ end
85
+
86
+ def test_successful_avs_check
87
+ @gateway.expects(:ssl_post).returns(successful_purchase_response + '&avs_result=Y')
88
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
89
+ assert_equal response.avs_result['code'], "Y"
90
+ assert_equal response.avs_result['message'], "Street address and 5-digit postal code match."
91
+ assert_equal response.avs_result['street_match'], "Y"
92
+ assert_equal response.avs_result['postal_match'], "Y"
93
+ end
94
+
95
+ def test_unsuccessful_avs_check_with_bad_street_address
96
+ @gateway.expects(:ssl_post).returns(successful_purchase_response + '&avs_result=Z')
97
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
98
+ assert_equal response.avs_result['code'], "Z"
99
+ assert_equal response.avs_result['message'], "Street address does not match, but 5-digit postal code matches."
100
+ assert_equal response.avs_result['street_match'], "N"
101
+ assert_equal response.avs_result['postal_match'], "Y"
102
+ end
103
+
104
+ def test_unsuccessful_avs_check_with_bad_zip
105
+ @gateway.expects(:ssl_post).returns(successful_purchase_response + '&avs_result=A')
106
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
107
+ assert_equal response.avs_result['code'], "A"
108
+ assert_equal response.avs_result['message'], "Street address matches, but 5-digit and 9-digit postal code do not match."
109
+ assert_equal response.avs_result['street_match'], "Y"
110
+ assert_equal response.avs_result['postal_match'], "N"
111
+ end
112
+
113
+ def test_successful_cvv_check
114
+ @gateway.expects(:ssl_post).returns(successful_purchase_response + '&cvv2_result=M')
115
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
116
+ assert_equal response.cvv_result['code'], "M"
117
+ assert_equal response.cvv_result['message'], "Match"
118
+ end
119
+
120
+ def test_unsuccessful_cvv_check
121
+ @gateway.expects(:ssl_post).returns(failed_purchase_response + '&cvv2_result=N')
122
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
123
+ assert_equal response.cvv_result['code'], "N"
124
+ assert_equal response.cvv_result['message'], "No Match"
125
+ end
126
+
127
+ def test_supported_countries
128
+ assert_equal ['US'], MerchantESolutionsGateway.supported_countries
129
+ end
130
+
131
+ def test_supported_card_types
132
+ assert_equal [:visa, :master, :american_express, :discover, :jcb], MerchantESolutionsGateway.supported_cardtypes
133
+ end
134
+
135
+ private
136
+
137
+ def successful_purchase_response
138
+ 'transaction_id=5547cc97dae23ea6ad1a4abd33445c91&error_code=000&auth_response_text=Exact Match&auth_code=12345A'
139
+ end
140
+
141
+ def successful_authorization_response
142
+ 'transaction_id=42e52603e4c83a55890fbbcfb92b8de1&error_code=000&auth_response_text=Exact Match&auth_code=12345A'
143
+ end
144
+
145
+ def successful_credit_response
146
+ 'transaction_id=0a5ca4662ac034a59595acb61e8da025&error_code=000&auth_response_text=Credit Approved'
147
+ end
148
+
149
+ def successful_void_response
150
+ 'transaction_id=1b08845c6dee3fa1a73fee2a009d33a7&error_code=000&auth_response_text=Void Request Accepted'
151
+ end
152
+
153
+ def successful_capture_response
154
+ 'transaction_id=42e52603e4c83a55890fbbcfb92b8de1&error_code=000&auth_response_text=Settle Request Accepted'
155
+ end
156
+
157
+ def successful_store_response
158
+ 'transaction_id=ae641b57b19b3bb89faab44191479872&error_code=000&auth_response_text=Card Data Stored'
159
+ end
160
+
161
+ def successful_unstore_response
162
+ 'transaction_id=d79410c91b4b31ba99f5a90558565df9&error_code=000&auth_response_text=Stored Card Data Deleted'
163
+ end
164
+
165
+ def failed_purchase_response
166
+ 'transaction_id=error&error_code=101&auth_response_text=Invalid%20I%20or%20Key%20Incomplete%20Request'
167
+ end
168
+
169
+ end
@@ -0,0 +1,188 @@
1
+ require 'test_helper'
2
+
3
+ class MerchantWareTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = MerchantWareGateway.new(
6
+ :login => 'login',
7
+ :password => 'password',
8
+ :name => 'name'
9
+ )
10
+
11
+ @credit_card = credit_card
12
+ @amount = 100
13
+
14
+ @options = {
15
+ :order_id => '1',
16
+ :billing_address => address
17
+ }
18
+ end
19
+
20
+ def test_successful_authorization
21
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
22
+
23
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
24
+ assert_instance_of Response, response
25
+ assert_success response
26
+
27
+ assert_equal '4706382;1', response.authorization
28
+ assert_equal "APPROVED", response.message
29
+ assert response.test?
30
+ end
31
+
32
+ def test_soap_fault_during_authorization
33
+ response_500 = stub(:code => "500", :message => "Internal Server Error", :body => fault_authorization_response)
34
+ @gateway.expects(:ssl_post).raises(ActiveMerchant::ResponseError.new(response_500))
35
+
36
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
37
+ assert_instance_of Response, response
38
+ assert_failure response
39
+ assert response.test?
40
+
41
+ assert_nil response.authorization
42
+ assert_equal "Server was unable to process request. ---> strPAN should be at least 13 to at most 19 characters in size. Parameter name: strPAN", response.message
43
+ assert_equal response_500.code, response.params["http_code"]
44
+ assert_equal response_500.message, response.params["http_message"]
45
+ end
46
+
47
+ def test_failed_authorization
48
+ @gateway.expects(:ssl_post).returns(failed_authorization_response)
49
+
50
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
51
+ assert_instance_of Response, response
52
+ assert_failure response
53
+ assert response.test?
54
+
55
+ assert_nil response.authorization
56
+ assert_equal "transaction type not supported by version", response.message
57
+ assert_equal "FAILED", response.params["status"]
58
+ assert_equal "1014", response.params["failure_code"]
59
+ end
60
+
61
+ def test_failed_void
62
+ @gateway.expects(:ssl_post).returns(failed_void_response)
63
+
64
+ assert response = @gateway.void("1")
65
+ assert_instance_of Response, response
66
+ assert_failure response
67
+ assert response.test?
68
+
69
+ assert_nil response.authorization
70
+ assert_equal "decline", response.message
71
+ assert_equal "DECLINED", response.params["status"]
72
+ assert_equal "1012", response.params["failure_code"]
73
+ end
74
+
75
+ def test_avs_result
76
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
77
+
78
+ response = @gateway.authorize(@amount, @credit_card, @options)
79
+ assert_equal 'N', response.avs_result['code']
80
+ end
81
+
82
+ def test_cvv_result
83
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
84
+
85
+ response = @gateway.authorize(@amount, @credit_card, @options)
86
+ assert_equal 'M', response.cvv_result['code']
87
+ end
88
+
89
+ private
90
+
91
+ def successful_authorization_response
92
+ <<-XML
93
+ <?xml version="1.0" encoding="utf-8"?>
94
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
95
+ <soap:Body>
96
+ <IssueKeyedPreAuthResponse xmlns="http://merchantwarehouse.com/MerchantWARE/Client/TransactionRetail">
97
+ <IssueKeyedPreAuthResult>
98
+ <ReferenceID>4706382</ReferenceID>
99
+ <OrderNumber>1</OrderNumber>
100
+ <TXDate>7/3/2009 2:05:04 AM</TXDate>
101
+ <ApprovalStatus>APPROVED</ApprovalStatus>
102
+ <AuthCode>VI0100</AuthCode>
103
+ <CardHolder>Longbob Longsen</CardHolder>
104
+ <Amount>1.00</Amount>
105
+ <Type>5</Type>
106
+ <CardNumber>************4242</CardNumber>
107
+ <CardType>0</CardType>
108
+ <AVSResponse>N</AVSResponse>
109
+ <CVResponse>M</CVResponse>
110
+ <POSEntryType>1</POSEntryType>
111
+ </IssueKeyedPreAuthResult>
112
+ </IssueKeyedPreAuthResponse>
113
+ </soap:Body>
114
+ </soap:Envelope>
115
+ XML
116
+ end
117
+
118
+ def fault_authorization_response
119
+ <<-XML
120
+ <?xml version="1.0" encoding="utf-8"?>
121
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
122
+ <soap:Body>
123
+ <soap:Fault>
124
+ <faultcode>soap:Server</faultcode>
125
+ <faultstring>Server was unable to process request. ---&gt; strPAN should be at least 13 to at most 19 characters in size.
126
+ Parameter name: strPAN</faultstring>
127
+ <detail/>
128
+ </soap:Fault>
129
+ </soap:Body>
130
+ </soap:Envelope>
131
+ XML
132
+ end
133
+
134
+ def failed_authorization_response
135
+ <<-XML
136
+ <?xml version="1.0" encoding="utf-8"?>
137
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
138
+ <soap:Body>
139
+ <IssueKeyedPreAuthResponse xmlns="http://merchantwarehouse.com/MerchantWARE/Client/TransactionRetail">
140
+ <IssueKeyedPreAuthResult>
141
+ <ReferenceID/>
142
+ <OrderNumber>1</OrderNumber>
143
+ <TXDate>7/3/2009 3:04:33 AM</TXDate>
144
+ <ApprovalStatus>FAILED;1014;transaction type not supported by version</ApprovalStatus>
145
+ <AuthCode/>
146
+ <CardHolder>Longbob Longsen</CardHolder>
147
+ <Amount>1.00</Amount>
148
+ <Type>5</Type>
149
+ <CardNumber>*********0123</CardNumber>
150
+ <CardType>0</CardType>
151
+ <AVSResponse/>
152
+ <CVResponse/>
153
+ <POSEntryType>1</POSEntryType>
154
+ </IssueKeyedPreAuthResult>
155
+ </IssueKeyedPreAuthResponse>
156
+ </soap:Body>
157
+ </soap:Envelope>
158
+ XML
159
+ end
160
+
161
+ def failed_void_response
162
+ <<-XML
163
+ <?xml version="1.0" encoding="utf-8"?>
164
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
165
+ <soap:Body>
166
+ <IssueVoidResponse xmlns="http://merchantwarehouse.com/MerchantWARE/Client/TransactionRetail">
167
+ <IssueVoidResult>
168
+ <ReferenceID>4707277</ReferenceID>
169
+ <OrderNumber/>
170
+ <TXDate>7/3/2009 3:28:38 AM</TXDate>
171
+ <ApprovalStatus>DECLINED;1012;decline</ApprovalStatus>
172
+ <AuthCode/>
173
+ <CardHolder/>
174
+ <Amount/>
175
+ <Type>3</Type>
176
+ <CardNumber/>
177
+ <CardType>0</CardType>
178
+ <AVSResponse/>
179
+ <CVResponse/>
180
+ <POSEntryType>0</POSEntryType>
181
+ </IssueVoidResult>
182
+ </IssueVoidResponse>
183
+ </soap:Body>
184
+ </soap:Envelope>
185
+ XML
186
+ end
187
+
188
+ end
@@ -0,0 +1,171 @@
1
+ require 'test_helper'
2
+
3
+ class ModernPaymentsCimTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.mode = :test
6
+
7
+ @gateway = ModernPaymentsCimGateway.new(
8
+ :login => 'login',
9
+ :password => 'password'
10
+ )
11
+
12
+ @credit_card = credit_card
13
+ @amount = 100
14
+
15
+ @options = {
16
+ :order_id => '1',
17
+ :billing_address => address,
18
+ :description => 'Store Purchase'
19
+ }
20
+ end
21
+
22
+ def test_create_customer
23
+ @gateway.expects(:ssl_post).returns(successful_create_customer_response)
24
+
25
+ assert response = @gateway.create_customer(@options)
26
+ assert_instance_of Response, response
27
+ assert response.test?
28
+ assert_success response
29
+ assert_equal "6677348", response.params["create_customer_result"]
30
+ end
31
+
32
+ def test_modify_customer_credit_card
33
+ @gateway.expects(:ssl_post).returns(successful_modify_customer_credit_card_response)
34
+
35
+ assert response = @gateway.modify_customer_credit_card("10001", @credit_card)
36
+ assert_instance_of Response, response
37
+ assert response.test?
38
+ assert_success response
39
+ assert_equal "6677757", response.params["modify_customer_credit_card_result"]
40
+ end
41
+
42
+ def test_successful_credit_card_authorization
43
+ @gateway.expects(:ssl_post).returns(successful_credit_card_authorization_response)
44
+
45
+ assert response = @gateway.authorize_credit_card_payment("10001", @amount)
46
+ assert_instance_of Response, response
47
+ assert response.test?
48
+
49
+ assert_success response
50
+ assert_equal "999", response.params["trans_id"]
51
+ assert_equal "RESPONSECODE=A,AUTHCODE=XXXXXX,DECLINEREASON=,AVSDATA=NYZ,TRANSID=C00 TESTXXXXXXX", response.params["auth_string"]
52
+ assert_equal "RESPONSECODE=A,AUTHCODE=XXXXXX,DECLINEREASON=,AVSDATA=NYZ,TRANSID=C00 TESTXXXXXXX", response.params["message_text"]
53
+ assert_equal "false", response.params["approved"]
54
+ assert_equal nil, response.params["avs_code"]
55
+ assert_equal nil, response.params["auth_code"]
56
+ assert_equal nil, response.params["trans_code"]
57
+ assert_equal "999", response.authorization
58
+ assert_match /RESPONSECODE=A/, response.params["message_text"]
59
+ end
60
+
61
+ def test_unsuccessful_credit_card_authorization
62
+ @gateway.expects(:ssl_post).returns(unsuccessful_credit_card_authorization_response)
63
+
64
+ assert response = @gateway.authorize_credit_card_payment("10001", @amount)
65
+ assert_instance_of Response, response
66
+ assert response.test?
67
+ assert_success response
68
+ assert_equal "999", response.authorization
69
+ assert_match /RESPONSECODE=D/, response.params["message_text"]
70
+ end
71
+
72
+ def test_soap_fault_response
73
+ @gateway.expects(:ssl_post).returns(soap_fault_response)
74
+
75
+ assert response = @gateway.create_customer(@options)
76
+ assert_instance_of Response, response
77
+ assert response.test?
78
+ assert_failure response
79
+ assert_equal "soap:Client", response.params["faultcode"]
80
+ end
81
+
82
+ private
83
+
84
+ def successful_create_customer_response
85
+ <<-XML
86
+ <?xml version="1.0" encoding="utf-8"?>
87
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
88
+ <soap:Body>
89
+ <CreateCustomerResponse xmlns="http://secure.modpay.com:81/ws/">
90
+ <CreateCustomerResult>6677348</CreateCustomerResult>
91
+ </CreateCustomerResponse>
92
+ </soap:Body>
93
+ </soap:Envelope>
94
+ XML
95
+ end
96
+
97
+ def successful_modify_customer_credit_card_response
98
+ <<-XML
99
+ <?xml version="1.0" encoding="utf-8"?>
100
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
101
+ <soap:Body>
102
+ <ModifyCustomerCreditCardResponse xmlns="http://secure.modpay.com:81/ws/">
103
+ <ModifyCustomerCreditCardResult>6677757</ModifyCustomerCreditCardResult>
104
+ </ModifyCustomerCreditCardResponse>
105
+ </soap:Body>
106
+ </soap:Envelope>
107
+ XML
108
+ end
109
+
110
+ def successful_credit_card_authorization_response
111
+ <<-XML
112
+ <?xml version="1.0" encoding="utf-8"?>
113
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
114
+ <soap:Body>
115
+ <AuthorizeCreditCardPaymentResponse xmlns="https://secure.modpay.com/netservices/test/">
116
+ <AuthorizeCreditCardPaymentResult>
117
+ <transId>999</transId>
118
+ <authCode/>
119
+ <avsCode/>
120
+ <transCode/>
121
+ <authString>RESPONSECODE=A,AUTHCODE=XXXXXX,DECLINEREASON=,AVSDATA=NYZ,TRANSID=C00 TESTXXXXXXX</authString>
122
+ <messageText>RESPONSECODE=A,AUTHCODE=XXXXXX,DECLINEREASON=,AVSDATA=NYZ,TRANSID=C00 TESTXXXXXXX</messageText>
123
+ <approved>false</approved>
124
+ </AuthorizeCreditCardPaymentResult>
125
+ </AuthorizeCreditCardPaymentResponse>
126
+ </soap:Body>
127
+ </soap:Envelope>
128
+ XML
129
+ end
130
+
131
+ def unsuccessful_credit_card_authorization_response
132
+ <<-XML
133
+ <?xml version="1.0" encoding="utf-8"?>
134
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
135
+ <soap:Body>
136
+ <AuthorizeCreditCardPaymentResponse xmlns="https://secure.modpay.com/netservices/test/">
137
+ <AuthorizeCreditCardPaymentResult>
138
+ <transId>999</transId>
139
+ <authCode/>
140
+ <avsCode/>
141
+ <transCode/>
142
+ <authString>RESPONSECODE=D,AUTHCODE=,DECLINEREASON.1.TAG=,DECLINEREASON.1.ERRORCLASS=card declined,DECLINEREASON.1.PARAM1=05:DECLINE,DECLINEREASON.1.PARAM2=The authorization is declined,DECLINEREASON.1.MESSAGE=Card was declined: The authorization is declined,AVSDATA</authString>
143
+ <messageText>RESPONSECODE=D,AUTHCODE=,DECLINEREASON.1.TAG=,DECLINEREASON.1.ERRORCLASS=card declined,DECLINEREASON.1.PARAM1=05:DECLINE,DECLINEREASON.1.PARAM2=The authorization is declined,DECLINEREASON.1.MESSAGE=Card was declined: The authorization is declined,AVSDATA</messageText>
144
+ <approved>false</approved>
145
+ </AuthorizeCreditCardPaymentResult>
146
+ </AuthorizeCreditCardPaymentResponse>
147
+ </soap:Body>
148
+ </soap:Envelope>
149
+ XML
150
+ end
151
+
152
+ def soap_fault_response
153
+ <<-XML
154
+ <?xml version="1.0" encoding="utf-8"?>
155
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
156
+ <soap:Body>
157
+ <soap:Fault>
158
+ <faultcode>soap:Client</faultcode>
159
+ <faultstring>System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: h heheheh http://secure.modpay.com:81/ws/CreateCustomer.
160
+ at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
161
+ at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
162
+ at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
163
+ at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean&amp; abortProcessing)</faultstring>
164
+ <detail/>
165
+ </soap:Fault>
166
+ </soap:Body>
167
+ </soap:Envelope>
168
+ XML
169
+ end
170
+
171
+ end