ghazel-activemerchant 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. data/CHANGELOG +473 -0
  2. data/CONTRIBUTORS +126 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README +135 -0
  5. data/Rakefile +153 -0
  6. data/gem-public_cert.pem +20 -0
  7. data/init.rb +3 -0
  8. data/lib/active_merchant.rb +60 -0
  9. data/lib/active_merchant/billing/avs_result.rb +98 -0
  10. data/lib/active_merchant/billing/base.rb +57 -0
  11. data/lib/active_merchant/billing/check.rb +68 -0
  12. data/lib/active_merchant/billing/credit_card.rb +159 -0
  13. data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
  14. data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
  15. data/lib/active_merchant/billing/cvv_result.rb +38 -0
  16. data/lib/active_merchant/billing/expiry_date.rb +34 -0
  17. data/lib/active_merchant/billing/gateway.rb +158 -0
  18. data/lib/active_merchant/billing/gateways.rb +3 -0
  19. data/lib/active_merchant/billing/gateways/authorize_net.rb +657 -0
  20. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +736 -0
  21. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  22. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
  23. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  24. data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
  25. data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
  26. data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
  27. data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
  28. data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
  29. data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
  30. data/lib/active_merchant/billing/gateways/elavon.rb +106 -0
  31. data/lib/active_merchant/billing/gateways/eway.rb +277 -0
  32. data/lib/active_merchant/billing/gateways/exact.rb +222 -0
  33. data/lib/active_merchant/billing/gateways/first_pay.rb +172 -0
  34. data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
  35. data/lib/active_merchant/billing/gateways/jetpay.rb +270 -0
  36. data/lib/active_merchant/billing/gateways/linkpoint.rb +449 -0
  37. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  38. data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
  39. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  40. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  41. data/lib/active_merchant/billing/gateways/moneris.rb +205 -0
  42. data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
  43. data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
  44. data/lib/active_merchant/billing/gateways/ogone.rb +279 -0
  45. data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
  46. data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
  47. data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
  48. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
  49. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
  50. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  51. data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
  52. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
  53. data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
  54. data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
  55. data/lib/active_merchant/billing/gateways/paypal.rb +121 -0
  56. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +326 -0
  57. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
  58. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  59. data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
  60. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  61. data/lib/active_merchant/billing/gateways/paypal_express_recurring.rb +310 -0
  62. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  63. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  64. data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
  65. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  66. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  67. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  68. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  69. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +116 -0
  70. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  71. data/lib/active_merchant/billing/gateways/sage_pay.rb +308 -0
  72. data/lib/active_merchant/billing/gateways/sallie_mae.rb +144 -0
  73. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  74. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  75. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  76. data/lib/active_merchant/billing/gateways/skip_jack.rb +452 -0
  77. data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
  78. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  79. data/lib/active_merchant/billing/gateways/transax.rb +26 -0
  80. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  81. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  82. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  83. data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
  84. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  85. data/lib/active_merchant/billing/integrations.rb +22 -0
  86. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  87. data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
  88. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  89. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  90. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  91. data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
  92. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
  93. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
  94. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  95. data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
  96. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  97. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  98. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
  99. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  100. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  101. data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
  102. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  103. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  104. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  105. data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
  106. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  107. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  108. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  109. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  110. data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
  111. data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -0
  112. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  113. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  114. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  115. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  116. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  117. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  118. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  119. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  120. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  121. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  122. data/lib/active_merchant/billing/response.rb +32 -0
  123. data/lib/active_merchant/lib/connection.rb +170 -0
  124. data/lib/active_merchant/lib/country.rb +319 -0
  125. data/lib/active_merchant/lib/error.rb +4 -0
  126. data/lib/active_merchant/lib/post_data.rb +22 -0
  127. data/lib/active_merchant/lib/posts_data.rb +47 -0
  128. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  129. data/lib/active_merchant/lib/utils.rb +18 -0
  130. data/lib/active_merchant/lib/validateable.rb +76 -0
  131. data/lib/certs/cacert.pem +7815 -0
  132. data/lib/support/gateway_support.rb +58 -0
  133. data/script/destroy +14 -0
  134. data/script/generate +14 -0
  135. data/test/fixtures.yml +355 -0
  136. data/test/remote/gateways/remote_authorize_net_cim_test.rb +460 -0
  137. data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
  138. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  139. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  140. data/test/remote/gateways/remote_braintree_test.rb +154 -0
  141. data/test/remote/gateways/remote_card_stream_test.rb +148 -0
  142. data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
  143. data/test/remote/gateways/remote_data_cash_test.rb +357 -0
  144. data/test/remote/gateways/remote_efsnet_test.rb +81 -0
  145. data/test/remote/gateways/remote_elavon_test.rb +66 -0
  146. data/test/remote/gateways/remote_eway_test.rb +74 -0
  147. data/test/remote/gateways/remote_exact_test.rb +60 -0
  148. data/test/remote/gateways/remote_first_pay_test.rb +87 -0
  149. data/test/remote/gateways/remote_instapay_test.rb +61 -0
  150. data/test/remote/gateways/remote_jetpay_test.rb +103 -0
  151. data/test/remote/gateways/remote_linkpoint_test.rb +121 -0
  152. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
  153. data/test/remote/gateways/remote_merchant_ware_test.rb +113 -0
  154. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  155. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  156. data/test/remote/gateways/remote_moneris_test.rb +82 -0
  157. data/test/remote/gateways/remote_net_registry_test.rb +85 -0
  158. data/test/remote/gateways/remote_netbilling_test.rb +70 -0
  159. data/test/remote/gateways/remote_ogone_test.rb +115 -0
  160. data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
  161. data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
  162. data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
  163. data/test/remote/gateways/remote_payflow_test.rb +237 -0
  164. data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
  165. data/test/remote/gateways/remote_payment_express_test.rb +136 -0
  166. data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
  167. data/test/remote/gateways/remote_paypal_test.rb +191 -0
  168. data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
  169. data/test/remote/gateways/remote_psigate_test.rb +50 -0
  170. data/test/remote/gateways/remote_psl_card_test.rb +125 -0
  171. data/test/remote/gateways/remote_quickpay_test.rb +190 -0
  172. data/test/remote/gateways/remote_realex_test.rb +224 -0
  173. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  174. data/test/remote/gateways/remote_sage_pay_test.rb +219 -0
  175. data/test/remote/gateways/remote_sage_test.rb +87 -0
  176. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  177. data/test/remote/gateways/remote_sallie_mae_test.rb +51 -0
  178. data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
  179. data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
  180. data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
  181. data/test/remote/gateways/remote_skipjack_test.rb +105 -0
  182. data/test/remote/gateways/remote_trans_first_test.rb +34 -0
  183. data/test/remote/gateways/remote_transax_test.rb +112 -0
  184. data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
  185. data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
  186. data/test/remote/gateways/remote_verifi_test.rb +107 -0
  187. data/test/remote/gateways/remote_viaklix_test.rb +43 -0
  188. data/test/remote/gateways/remote_wirecard_test.rb +111 -0
  189. data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
  190. data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
  191. data/test/test_helper.rb +182 -0
  192. data/test/unit/avs_result_test.rb +59 -0
  193. data/test/unit/base_test.rb +55 -0
  194. data/test/unit/check_test.rb +88 -0
  195. data/test/unit/connection_test.rb +129 -0
  196. data/test/unit/country_code_test.rb +33 -0
  197. data/test/unit/country_test.rb +64 -0
  198. data/test/unit/credit_card_formatting_test.rb +19 -0
  199. data/test/unit/credit_card_methods_test.rb +179 -0
  200. data/test/unit/credit_card_test.rb +318 -0
  201. data/test/unit/cvv_result_test.rb +33 -0
  202. data/test/unit/expiry_date_test.rb +32 -0
  203. data/test/unit/gateways/authorize_net_cim_test.rb +676 -0
  204. data/test/unit/gateways/authorize_net_test.rb +290 -0
  205. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  206. data/test/unit/gateways/beanstream_test.rb +108 -0
  207. data/test/unit/gateways/bogus_test.rb +46 -0
  208. data/test/unit/gateways/braintree_test.rb +126 -0
  209. data/test/unit/gateways/card_stream_test.rb +90 -0
  210. data/test/unit/gateways/cyber_source_test.rb +188 -0
  211. data/test/unit/gateways/data_cash_test.rb +133 -0
  212. data/test/unit/gateways/efsnet_test.rb +123 -0
  213. data/test/unit/gateways/elavon_test.rb +139 -0
  214. data/test/unit/gateways/eway_test.rb +118 -0
  215. data/test/unit/gateways/exact_test.rb +156 -0
  216. data/test/unit/gateways/first_pay_test.rb +125 -0
  217. data/test/unit/gateways/gateway_test.rb +48 -0
  218. data/test/unit/gateways/instapay_test.rb +102 -0
  219. data/test/unit/gateways/jetpay_test.rb +185 -0
  220. data/test/unit/gateways/linkpoint_test.rb +184 -0
  221. data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
  222. data/test/unit/gateways/merchant_ware_test.rb +188 -0
  223. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  224. data/test/unit/gateways/moneris_test.rb +158 -0
  225. data/test/unit/gateways/net_registry_test.rb +416 -0
  226. data/test/unit/gateways/netbilling_test.rb +54 -0
  227. data/test/unit/gateways/ogone_test.rb +319 -0
  228. data/test/unit/gateways/pay_junction_test.rb +123 -0
  229. data/test/unit/gateways/pay_secure_test.rb +71 -0
  230. data/test/unit/gateways/payflow_express_test.rb +173 -0
  231. data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
  232. data/test/unit/gateways/payflow_test.rb +305 -0
  233. data/test/unit/gateways/payflow_uk_test.rb +30 -0
  234. data/test/unit/gateways/payment_express_test.rb +195 -0
  235. data/test/unit/gateways/paypal_express_test.rb +382 -0
  236. data/test/unit/gateways/paypal_test.rb +569 -0
  237. data/test/unit/gateways/plugnpay_test.rb +86 -0
  238. data/test/unit/gateways/psigate_test.rb +169 -0
  239. data/test/unit/gateways/psl_card_test.rb +64 -0
  240. data/test/unit/gateways/quickpay_test.rb +112 -0
  241. data/test/unit/gateways/realex_test.rb +151 -0
  242. data/test/unit/gateways/sage_bankcard_test.rb +196 -0
  243. data/test/unit/gateways/sage_pay_test.rb +139 -0
  244. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  245. data/test/unit/gateways/sallie_mae_test.rb +53 -0
  246. data/test/unit/gateways/secure_pay_au_test.rb +207 -0
  247. data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
  248. data/test/unit/gateways/secure_pay_test.rb +87 -0
  249. data/test/unit/gateways/skip_jack_test.rb +213 -0
  250. data/test/unit/gateways/trans_first_test.rb +112 -0
  251. data/test/unit/gateways/trust_commerce_test.rb +90 -0
  252. data/test/unit/gateways/usa_epay_test.rb +128 -0
  253. data/test/unit/gateways/verifi_test.rb +96 -0
  254. data/test/unit/gateways/viaklix_test.rb +78 -0
  255. data/test/unit/gateways/wirecard_test.rb +250 -0
  256. data/test/unit/generators/test_gateway_generator.rb +46 -0
  257. data/test/unit/generators/test_generator_helper.rb +20 -0
  258. data/test/unit/generators/test_integration_generator.rb +53 -0
  259. data/test/unit/integrations/action_view_helper_test.rb +50 -0
  260. data/test/unit/integrations/bogus_module_test.rb +20 -0
  261. data/test/unit/integrations/chronopay_module_test.rb +13 -0
  262. data/test/unit/integrations/gestpay_module_test.rb +14 -0
  263. data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
  264. data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
  265. data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
  266. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
  267. data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
  268. data/test/unit/integrations/helpers/paypal_helper_test.rb +171 -0
  269. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  270. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
  271. data/test/unit/integrations/hi_trust_module_test.rb +13 -0
  272. data/test/unit/integrations/nochex_module_test.rb +13 -0
  273. data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
  274. data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
  275. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
  276. data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
  277. data/test/unit/integrations/notifications/notification_test.rb +54 -0
  278. data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
  279. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  280. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
  281. data/test/unit/integrations/paypal_module_test.rb +28 -0
  282. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  283. data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
  284. data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
  285. data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
  286. data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
  287. data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
  288. data/test/unit/integrations/returns/return_test.rb +11 -0
  289. data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
  290. data/test/unit/integrations/two_checkout_module_test.rb +13 -0
  291. data/test/unit/post_data_test.rb +55 -0
  292. data/test/unit/posts_data_test.rb +48 -0
  293. data/test/unit/response_test.rb +28 -0
  294. data/test/unit/utils_test.rb +7 -0
  295. data/test/unit/validateable_test.rb +60 -0
  296. metadata +368 -0
@@ -0,0 +1,196 @@
1
+ require 'test_helper'
2
+
3
+ class SageBankcardGatewayTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = SageBankcardGateway.new(
6
+ :login => 'login',
7
+ :password => 'password'
8
+ )
9
+
10
+ @credit_card = credit_card
11
+ @amount = 100
12
+
13
+ @options = {
14
+ :order_id => '1',
15
+ :billing_address => address,
16
+ :description => 'Store Purchase'
17
+ }
18
+ end
19
+
20
+ def test_successful_authorization
21
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
22
+
23
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
24
+ assert_instance_of Response, response
25
+ assert_success response
26
+
27
+ assert_equal "APPROVED", response.message
28
+ assert_equal "1234567890;bankcard", response.authorization
29
+
30
+ assert_equal "A", response.params["success"]
31
+ assert_equal "911911", response.params["code"]
32
+ assert_equal "APPROVED", response.params["message"]
33
+ assert_equal "00", response.params["front_end"]
34
+ assert_equal "M", response.params["cvv_result"]
35
+ assert_equal "X", response.params["avs_result"]
36
+ assert_equal "00", response.params["risk"]
37
+ assert_equal "1234567890", response.params["reference"]
38
+ assert_equal "1000", response.params["order_number"]
39
+ assert_equal "0", response.params["recurring"]
40
+ end
41
+
42
+ def test_successful_purchase
43
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
44
+
45
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
46
+ assert_instance_of Response, response
47
+ assert_success response
48
+
49
+ assert_equal "APPROVED 000001", response.message
50
+ assert_equal "B5O89VPdf0;bankcard", response.authorization
51
+
52
+ assert_equal "A", response.params["success"]
53
+ assert_equal "000001", response.params["code"]
54
+ assert_equal "APPROVED 000001", response.params["message"]
55
+ assert_equal "10", response.params["front_end"]
56
+ assert_equal "M", response.params["cvv_result"]
57
+ assert_equal "", response.params["avs_result"]
58
+ assert_equal "00", response.params["risk"]
59
+ assert_equal "B5O89VPdf0", response.params["reference"]
60
+ assert_equal "e81cab9e6144a160da82", response.params["order_number"]
61
+ assert_equal "0", response.params["recurring"]
62
+ end
63
+
64
+ def test_declined_purchase
65
+ @gateway.expects(:ssl_post).returns(declined_purchase_response)
66
+
67
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
68
+ assert_failure response
69
+ assert response.test?
70
+ assert_equal "DECLINED", response.message
71
+ assert_equal "A5O89kkix0;bankcard", response.authorization
72
+
73
+ assert_equal "E", response.params["success"]
74
+ assert_equal "000002", response.params["code"]
75
+ assert_equal "DECLINED", response.params["message"]
76
+ assert_equal "10", response.params["front_end"]
77
+ assert_equal "N", response.params["cvv_result"]
78
+ assert_equal "", response.params["avs_result"]
79
+ assert_equal "00", response.params["risk"]
80
+ assert_equal "A5O89kkix0", response.params["reference"]
81
+ assert_equal "3443d6426188f8256b8f", response.params["order_number"]
82
+ assert_equal "0", response.params["recurring"]
83
+ end
84
+
85
+ def test_successful_capture
86
+ @gateway.expects(:ssl_post).returns(successful_capture_response)
87
+
88
+ assert response = @gateway.capture(@amount, "A5O89kkix0")
89
+ assert_instance_of Response, response
90
+ assert_success response
91
+
92
+ assert_equal "APPROVED 000001", response.message
93
+ assert_equal "B5O8AdFhu0;bankcard", response.authorization
94
+
95
+ assert_equal "A", response.params["success"]
96
+ assert_equal "000001", response.params["code"]
97
+ assert_equal "APPROVED 000001", response.params["message"]
98
+ assert_equal "10", response.params["front_end"]
99
+ assert_equal "P", response.params["cvv_result"]
100
+ assert_equal "", response.params["avs_result"]
101
+ assert_equal "00", response.params["risk"]
102
+ assert_equal "B5O8AdFhu0", response.params["reference"]
103
+ assert_equal "ID5O8AdFhw", response.params["order_number"]
104
+ assert_equal "0", response.params["recurring"]
105
+ end
106
+
107
+ def test_invalid_login
108
+ @gateway.expects(:ssl_post).returns(invalid_login_response)
109
+
110
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
111
+ assert_failure response
112
+ assert response.test?
113
+ assert_equal "SECURITY VIOLATION", response.message
114
+ assert_equal "0000000000;bankcard", response.authorization
115
+
116
+ assert_equal "X", response.params["success"]
117
+ assert_equal "911911", response.params["code"]
118
+ assert_equal "SECURITY VIOLATION", response.params["message"]
119
+ assert_equal "00", response.params["front_end"]
120
+ assert_equal "P", response.params["cvv_result"]
121
+ assert_equal "", response.params["avs_result"]
122
+ assert_equal "00", response.params["risk"]
123
+ assert_equal "0000000000", response.params["reference"]
124
+ assert_equal "", response.params["order_number"]
125
+ assert_equal "0", response.params["recurring"]
126
+ end
127
+
128
+ def test_avs_result
129
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
130
+
131
+ response = @gateway.purchase(@amount, @credit_card, @options)
132
+ assert_equal 'X', response.avs_result['code']
133
+ end
134
+
135
+ def test_cvv_result
136
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
137
+
138
+ response = @gateway.purchase(@amount, @credit_card, @options)
139
+ assert_equal 'M', response.cvv_result['code']
140
+ end
141
+
142
+ def test_us_address_with_state
143
+ post = {}
144
+ options = {
145
+ :billing_address => { :country => "US", :state => "CA"}
146
+ }
147
+ @gateway.send(:add_addresses, post, options)
148
+
149
+ assert_equal "US", post[:C_country]
150
+ assert_equal "CA", post[:C_state]
151
+ end
152
+
153
+ def test_us_address_without_state
154
+ post = {}
155
+ options = {
156
+ :billing_address => { :country => "US", :state => ""}
157
+ }
158
+ @gateway.send(:add_addresses, post, options)
159
+
160
+ assert_equal "US", post[:C_country]
161
+ assert_equal "", post[:C_state]
162
+ end
163
+
164
+
165
+ def test_international_address_without_state
166
+ post = {}
167
+ options = {
168
+ :billing_address => { :country => "JP", :state => ""}
169
+ }
170
+ @gateway.send(:add_addresses, post, options)
171
+
172
+ assert_equal "JP", post[:C_country]
173
+ assert_equal "Outside of United States", post[:C_state]
174
+ end
175
+
176
+ private
177
+ def successful_authorization_response
178
+ "\002A911911APPROVED 00MX001234567890\0341000\0340\034\003"
179
+ end
180
+
181
+ def successful_purchase_response
182
+ "\002A000001APPROVED 000001 10M 00B5O89VPdf0\034e81cab9e6144a160da82\0340\034\003"
183
+ end
184
+
185
+ def successful_capture_response
186
+ "\002A000001APPROVED 000001 10P 00B5O8AdFhu0\034ID5O8AdFhw\0340\034\003"
187
+ end
188
+
189
+ def declined_purchase_response
190
+ "\002E000002DECLINED 10N 00A5O89kkix0\0343443d6426188f8256b8f\0340\034\003"
191
+ end
192
+
193
+ def invalid_login_response
194
+ "\002X911911SECURITY VIOLATION 00P 000000000000\034\0340\034\003"
195
+ end
196
+ end
@@ -0,0 +1,139 @@
1
+ require 'test_helper'
2
+
3
+ class SagePayTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = SagePayGateway.new(
6
+ :login => 'X'
7
+ )
8
+
9
+ @credit_card = credit_card('4242424242424242', :type => 'visa')
10
+ @options = {
11
+ :billing_address => {
12
+ :name => 'Tekin Suleyman',
13
+ :address1 => 'Flat 10 Lapwing Court',
14
+ :address2 => 'West Didsbury',
15
+ :city => "Manchester",
16
+ :county => 'Greater Manchester',
17
+ :country => 'GB',
18
+ :zip => 'M20 2PS'
19
+ },
20
+ :order_id => '1',
21
+ :description => 'Store purchase',
22
+ :ip => '86.150.65.37',
23
+ :email => 'tekin@tekin.co.uk',
24
+ :phone => '0161 123 4567'
25
+ }
26
+ @amount = 100
27
+ end
28
+
29
+ def test_successful_purchase
30
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
31
+
32
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
33
+ assert_instance_of Response, response
34
+ assert_equal "1;B8AE1CF6-9DEF-C876-1BB4-9B382E6CE520;4193753;OHMETD7DFK;purchase", response.authorization
35
+ assert_success response
36
+ end
37
+
38
+ def test_unsuccessful_purchase
39
+ @gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
40
+
41
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
42
+ assert_instance_of Response, response
43
+ assert_failure response
44
+ end
45
+
46
+ def test_purchase_url
47
+ assert_equal 'https://test.sagepay.com/gateway/service/vspdirect-register.vsp', @gateway.send(:url_for, :purchase)
48
+ end
49
+
50
+ def test_capture_url
51
+ assert_equal 'https://test.sagepay.com/gateway/service/release.vsp', @gateway.send(:url_for, :capture)
52
+ end
53
+
54
+ def test_electron_cards
55
+ # Visa range
56
+ assert_no_match SagePayGateway::ELECTRON, '4245180000000000'
57
+
58
+ # First electron range
59
+ assert_match SagePayGateway::ELECTRON, '4245190000000000'
60
+
61
+ # Second range
62
+ assert_match SagePayGateway::ELECTRON, '4249620000000000'
63
+ assert_match SagePayGateway::ELECTRON, '4249630000000000'
64
+
65
+ # Third
66
+ assert_match SagePayGateway::ELECTRON, '4508750000000000'
67
+
68
+ # Fourth
69
+ assert_match SagePayGateway::ELECTRON, '4844060000000000'
70
+ assert_match SagePayGateway::ELECTRON, '4844080000000000'
71
+
72
+ # Fifth
73
+ assert_match SagePayGateway::ELECTRON, '4844110000000000'
74
+ assert_match SagePayGateway::ELECTRON, '4844550000000000'
75
+
76
+ # Sixth
77
+ assert_match SagePayGateway::ELECTRON, '4917300000000000'
78
+ assert_match SagePayGateway::ELECTRON, '4917590000000000'
79
+
80
+ # Seventh
81
+ assert_match SagePayGateway::ELECTRON, '4918800000000000'
82
+
83
+ # Visa
84
+ assert_no_match SagePayGateway::ELECTRON, '4918810000000000'
85
+
86
+ # 19 PAN length
87
+ assert_match SagePayGateway::ELECTRON, '4249620000000000000'
88
+
89
+ # 20 PAN length
90
+ assert_no_match SagePayGateway::ELECTRON, '42496200000000000'
91
+ end
92
+
93
+ def test_avs_result
94
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
95
+
96
+ response = @gateway.purchase(@amount, @credit_card, @options)
97
+ assert_equal 'Y', response.avs_result['postal_match']
98
+ assert_equal 'N', response.avs_result['street_match']
99
+ end
100
+
101
+ def test_cvv_result
102
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
103
+
104
+ response = @gateway.purchase(@amount, @credit_card, @options)
105
+ assert_equal 'N', response.cvv_result['code']
106
+ end
107
+
108
+ private
109
+
110
+ def successful_purchase_response
111
+ <<-RESP
112
+ VPSProtocol=2.23
113
+ Status=OK
114
+ StatusDetail=0000 : The Authorisation was Successful.
115
+ VPSTxId=B8AE1CF6-9DEF-C876-1BB4-9B382E6CE520
116
+ SecurityKey=OHMETD7DFK
117
+ TxAuthNo=4193753
118
+ AVSCV2=NO DATA MATCHES
119
+ AddressResult=NOTMATCHED
120
+ PostCodeResult=MATCHED
121
+ CV2Result=NOTMATCHED
122
+ 3DSecureStatus=NOTCHECKED
123
+ RESP
124
+ end
125
+
126
+ def unsuccessful_purchase_response
127
+ <<-RESP
128
+ VPSProtocol=2.23
129
+ Status=NOTAUTHED
130
+ StatusDetail=VSP Direct transaction from VSP Simulator.
131
+ VPSTxId=7BBA9078-8489-48CD-BF0D-10B0E6B0EF30
132
+ SecurityKey=DKDYLDYLXV
133
+ AVSCV2=ALL MATCH
134
+ AddressResult=MATCHED
135
+ PostCodeResult=MATCHED
136
+ CV2Result=MATCHED
137
+ RESP
138
+ end
139
+ end
@@ -0,0 +1,71 @@
1
+ require 'test_helper'
2
+
3
+ class SageVirtualCheckTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = SageVirtualCheckGateway.new(
6
+ :login => 'login',
7
+ :password => 'password'
8
+ )
9
+
10
+ @check = check
11
+
12
+ @options = {
13
+ :order_id => generate_unique_id,
14
+ :billing_address => address,
15
+ :shipping_address => address,
16
+ :email => 'longbob@example.com',
17
+ :drivers_license_state => 'CA',
18
+ :drivers_license_number => '12345689',
19
+ :date_of_birth => Date.new(1978, 8, 11),
20
+ :ssn => '078051120'
21
+ }
22
+ end
23
+
24
+ def test_successful_purchase
25
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
26
+
27
+ assert response = @gateway.purchase(@amount, @check, @options)
28
+ assert_instance_of Response, response
29
+ assert_success response
30
+
31
+ assert_equal "ACCEPTED", response.message
32
+ assert_equal "C5O8NUdNt0;virtual_check", response.authorization
33
+
34
+ assert_equal "A", response.params["success"]
35
+ assert_equal "", response.params["code"]
36
+ assert_equal "ACCEPTED", response.params["message"]
37
+ assert_equal "00", response.params["risk"]
38
+ assert_equal "C5O8NUdNt0", response.params["reference"]
39
+ assert_equal "89be635e663b05eca587", response.params["order_number"]
40
+ assert_equal "0", response.params["authentication_indicator"]
41
+ assert_equal "NONE", response.params["authentication_disclosure"]
42
+ end
43
+
44
+ def test_declined_purchase
45
+ @gateway.expects(:ssl_post).returns(declined_purchase_response)
46
+
47
+ assert response = @gateway.purchase(@amount, @check, @options)
48
+ assert_failure response
49
+ assert response.test?
50
+ assert_equal "INVALID C_RTE", response.message
51
+ assert_equal "C5O8NR6Nr0;virtual_check", response.authorization
52
+
53
+ assert_equal "X", response.params["success"]
54
+ assert_equal "900016", response.params["code"]
55
+ assert_equal "INVALID C_RTE", response.params["message"]
56
+ assert_equal "00", response.params["risk"]
57
+ assert_equal "C5O8NR6Nr0", response.params["reference"]
58
+ assert_equal "d98cf50f7a2430fe04ad", response.params["order_number"]
59
+ assert_equal "0", response.params["authentication_indicator"]
60
+ assert_equal nil, response.params["authentication_disclosure"]
61
+ end
62
+
63
+ private
64
+ def successful_purchase_response
65
+ "\002A ACCEPTED 00C5O8NUdNt0\03489be635e663b05eca587\0340\034NONE\034\003"
66
+ end
67
+
68
+ def declined_purchase_response
69
+ "\002X900016INVALID C_RTE 00C5O8NR6Nr0\034d98cf50f7a2430fe04ad\0340\034\034\003"
70
+ end
71
+ end
@@ -0,0 +1,53 @@
1
+ require 'test_helper'
2
+
3
+ class SallieMaeTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = SallieMaeGateway.new(
6
+ :login => 'FAKEACCOUNT'
7
+ )
8
+
9
+ @credit_card = credit_card
10
+ @amount = 100
11
+
12
+ @options = {
13
+ :order_id => '1',
14
+ :billing_address => address,
15
+ :description => 'Store Purchase'
16
+ }
17
+ end
18
+
19
+ def test_successful_purchase
20
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
21
+
22
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
23
+ assert_success response
24
+ end
25
+
26
+ def test_unsuccessful_request
27
+ @gateway.expects(:ssl_post).returns(failed_purcahse_response)
28
+
29
+ assert response = @gateway.purchase(@amount, @credit_card, @options)
30
+ assert_failure response
31
+ end
32
+
33
+ def test_non_test_account
34
+ assert !@gateway.test?
35
+ end
36
+
37
+ def test_test_account
38
+ gateway = SallieMaeGateway.new(:login => "TEST0")
39
+ assert !@gateway.test?
40
+ end
41
+
42
+ private
43
+
44
+ # Place raw successful response from gateway here
45
+ def successful_purchase_response
46
+ "Status=Accepted"
47
+ end
48
+
49
+ # Place raw failed response from gateway here
50
+ def failed_purcahse_response
51
+ "Status=Declined"
52
+ end
53
+ end