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,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
@@ -0,0 +1,158 @@
1
+ require 'test_helper'
2
+
3
+ class MonerisTest < Test::Unit::TestCase
4
+ def setup
5
+ Base.mode = :test
6
+
7
+ @gateway = MonerisGateway.new(
8
+ :login => 'store1',
9
+ :password => 'yesguy'
10
+ )
11
+
12
+ @amount = 100
13
+ @credit_card = credit_card('4242424242424242')
14
+ @options = { :order_id => '1', :billing_address => address }
15
+ end
16
+
17
+ def test_successful_purchase
18
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
19
+
20
+ assert response = @gateway.authorize(100, @credit_card, @options)
21
+ assert_success response
22
+ assert_equal '58-0_3;1026.1', response.authorization
23
+ end
24
+
25
+ def test_failed_purchase
26
+ @gateway.expects(:ssl_post).returns(failed_purchase_response)
27
+
28
+ assert response = @gateway.authorize(100, @credit_card, @options)
29
+ assert_failure response
30
+ end
31
+
32
+ def test_amount_style
33
+ assert_equal '10.34', @gateway.send(:amount, 1034)
34
+
35
+ assert_raise(ArgumentError) do
36
+ @gateway.send(:amount, '10.34')
37
+ end
38
+ end
39
+
40
+ def test_purchase_is_valid_xml
41
+
42
+ params = {
43
+ :order_id => "order1",
44
+ :amount => "1.01",
45
+ :pan => "4242424242424242",
46
+ :expdate => "0303",
47
+ :crypt_type => 7,
48
+ }
49
+
50
+ assert data = @gateway.send(:post_data, 'preauth', params)
51
+ assert REXML::Document.new(data)
52
+ assert_equal xml_capture_fixture.size, data.size
53
+ end
54
+
55
+ def test_purchase_is_valid_xml
56
+
57
+ params = {
58
+ :order_id => "order1",
59
+ :amount => "1.01",
60
+ :pan => "4242424242424242",
61
+ :expdate => "0303",
62
+ :crypt_type => 7,
63
+ }
64
+
65
+ assert data = @gateway.send(:post_data, 'purchase', params)
66
+ assert REXML::Document.new(data)
67
+ assert_equal xml_purchase_fixture.size, data.size
68
+ end
69
+
70
+ def test_capture_is_valid_xml
71
+
72
+ params = {
73
+ :order_id => "order1",
74
+ :amount => "1.01",
75
+ :pan => "4242424242424242",
76
+ :expdate => "0303",
77
+ :crypt_type => 7,
78
+ }
79
+
80
+ assert data = @gateway.send(:post_data, 'preauth', params)
81
+ assert REXML::Document.new(data)
82
+ assert_equal xml_capture_fixture.size, data.size
83
+ end
84
+
85
+ def test_supported_countries
86
+ assert_equal ['CA'], MonerisGateway.supported_countries
87
+ end
88
+
89
+ def test_supported_card_types
90
+ assert_equal [:visa, :master, :american_express], MonerisGateway.supported_cardtypes
91
+ end
92
+
93
+ def test_should_raise_error_if_transaction_param_empty_on_credit_request
94
+ [nil, '', '1234'].each do |invalid_transaction_param|
95
+ assert_raise(ArgumentError) { @gateway.void(invalid_transaction_param) }
96
+ end
97
+ end
98
+
99
+ private
100
+ def successful_purchase_response
101
+ <<-RESPONSE
102
+ <?xml version="1.0"?>
103
+ <response>
104
+ <receipt>
105
+ <ReceiptId>1026.1</ReceiptId>
106
+ <ReferenceNum>661221050010170010</ReferenceNum>
107
+ <ResponseCode>027</ResponseCode>
108
+ <ISO>01</ISO>
109
+ <AuthCode>013511</AuthCode>
110
+ <TransTime>18:41:13</TransTime>
111
+ <TransDate>2008-01-05</TransDate>
112
+ <TransType>00</TransType>
113
+ <Complete>true</Complete>
114
+ <Message>APPROVED * =</Message>
115
+ <TransAmount>1.00</TransAmount>
116
+ <CardType>V</CardType>
117
+ <TransID>58-0_3</TransID>
118
+ <TimedOut>false</TimedOut>
119
+ </receipt>
120
+ </response>
121
+
122
+ RESPONSE
123
+ end
124
+
125
+ def failed_purchase_response
126
+ <<-RESPONSE
127
+ <?xml version="1.0"?>
128
+ <response>
129
+ <receipt>
130
+ <ReceiptId>1026.1</ReceiptId>
131
+ <ReferenceNum>661221050010170010</ReferenceNum>
132
+ <ResponseCode>481</ResponseCode>
133
+ <ISO>01</ISO>
134
+ <AuthCode>013511</AuthCode>
135
+ <TransTime>18:41:13</TransTime>
136
+ <TransDate>2008-01-05</TransDate>
137
+ <TransType>00</TransType>
138
+ <Complete>true</Complete>
139
+ <Message>DECLINED * =</Message>
140
+ <TransAmount>1.00</TransAmount>
141
+ <CardType>V</CardType>
142
+ <TransID>97-2-0</TransID>
143
+ <TimedOut>false</TimedOut>
144
+ </receipt>
145
+ </response>
146
+
147
+ RESPONSE
148
+ end
149
+
150
+ def xml_purchase_fixture
151
+ '<request><store_id>store1</store_id><api_token>yesguy</api_token><purchase><amount>1.01</amount><pan>4242424242424242</pan><expdate>0303</expdate><crypt_type>7</crypt_type><order_id>order1</order_id></purchase></request>'
152
+ end
153
+
154
+ def xml_capture_fixture
155
+ '<request><store_id>store1</store_id><api_token>yesguy</api_token><preauth><amount>1.01</amount><pan>4242424242424242</pan><expdate>0303</expdate><crypt_type>7</crypt_type><order_id>order1</order_id></preauth></request>'
156
+ end
157
+
158
+ end