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,250 @@
1
+ require 'test_helper'
2
+
3
+ class WirecardTest < Test::Unit::TestCase
4
+ TEST_AUTHORIZATION_GUWID = 'C822580121385121429927'
5
+
6
+ def setup
7
+ @gateway = WirecardGateway.new(:login => '', :password => '', :signature => '')
8
+ @credit_card = credit_card('4200000000000000')
9
+ @declined_card = credit_card('4000300011112220')
10
+ @unsupported_card = credit_card('4200000000000000', :type => :maestro)
11
+
12
+ @amount = 111
13
+
14
+ @options = {
15
+ :order_id => '1',
16
+ :billing_address => address,
17
+ :description => 'Wirecard Purchase',
18
+ :email => 'soleone@example.com'
19
+ }
20
+
21
+ @address_without_state = {
22
+ :name => 'Jim Smith',
23
+ :address1 => '1234 My Street',
24
+ :company => 'Widgets Inc',
25
+ :city => 'Ottawa',
26
+ :zip => 'K12 P2A',
27
+ :country => 'CA',
28
+ :state => nil,
29
+ }
30
+ end
31
+
32
+ def test_successful_authorization
33
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
34
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
35
+ assert_instance_of Response, response
36
+
37
+ assert_success response
38
+ assert response.test?
39
+ assert_equal TEST_AUTHORIZATION_GUWID, response.authorization
40
+ end
41
+
42
+ def test_wrong_credit_card_authorization
43
+ @gateway.expects(:ssl_post).returns(wrong_creditcard_authorization_response)
44
+ assert response = @gateway.authorize(@amount, @declined_card, @options)
45
+ assert_instance_of Response, response
46
+
47
+ assert_failure response
48
+ assert response.test?
49
+ assert_false response.authorization
50
+ assert response.message[/credit card number not allowed in demo mode/i]
51
+ end
52
+
53
+ def test_successful_authorization_and_capture
54
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
55
+ assert response = @gateway.authorize(@amount, @credit_card, @options)
56
+ assert_success response
57
+ assert_equal TEST_AUTHORIZATION_GUWID, response.authorization
58
+
59
+ @gateway.expects(:ssl_post).returns(successful_capture_response)
60
+ assert response = @gateway.capture(@amount, response.authorization, @options)
61
+ assert_success response
62
+ assert response.test?
63
+ assert response.message[/this is a demo/i]
64
+ end
65
+
66
+ def test_unauthorized_capture
67
+ @gateway.expects(:ssl_post).returns(unauthorized_capture_response)
68
+ assert response = @gateway.capture(@amount, "1234567890123456789012", @options)
69
+
70
+ assert_failure response
71
+ assert response.message["Could not find referenced transaction for GuWID 1234567890123456789012."]
72
+ end
73
+
74
+ def test_doesnt_raise_an_error_if_no_state_is_provided_in_address
75
+ options = @options.merge(:billing_address => @address_without_state)
76
+ @gateway.expects(:ssl_post).returns(unauthorized_capture_response)
77
+ assert_nothing_raised do
78
+ @gateway.authorize(@amount, @credit_card, options)
79
+ end
80
+ end
81
+
82
+ private
83
+
84
+ # Authorization success
85
+ def successful_authorization_response
86
+ <<-XML
87
+ <?xml version="1.0" encoding="UTF-8"?>
88
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
89
+ <W_RESPONSE>
90
+ <W_JOB>
91
+ <JobID>test dummy data</JobID>
92
+ <FNC_CC_AUTHORIZATION>
93
+ <FunctionID>Wirecard remote test purchase</FunctionID>
94
+ <CC_TRANSACTION>
95
+ <TransactionID>1</TransactionID>
96
+ <PROCESSING_STATUS>
97
+ <GuWID>C822580121385121429927</GuWID>
98
+ <AuthorizationCode>709678</AuthorizationCode>
99
+ <Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
100
+ <StatusType>INFO</StatusType>
101
+ <FunctionResult>ACK</FunctionResult>
102
+ <TimeStamp>2008-06-19 06:53:33</TimeStamp>
103
+ </PROCESSING_STATUS>
104
+ </CC_TRANSACTION>
105
+ </FNC_CC_AUTHORIZATION>
106
+ </W_JOB>
107
+ </W_RESPONSE>
108
+ </WIRECARD_BXML>
109
+ XML
110
+ end
111
+
112
+ # Authorization failure
113
+ # TODO: replace with real xml string here (current way seems to complicated)
114
+ def wrong_creditcard_authorization_response
115
+ error = <<-XML
116
+ <ERROR>
117
+ <Type>DATA_ERROR</Type>
118
+ <Number>24997</Number>
119
+ <Message>Credit card number not allowed in demo mode.</Message>
120
+ <Advice>Only demo card number '4200000000000000' is allowed for VISA in demo mode.</Advice>
121
+ </ERROR>
122
+ XML
123
+ result_node = '</FunctionResult>'
124
+ auth = 'AuthorizationCode'
125
+ successful_authorization_response.gsub('ACK', 'NOK') \
126
+ .gsub(result_node, result_node + error) \
127
+ .gsub(/<#{auth}>\w+<\/#{auth}>/, "<#{auth}><\/#{auth}>") \
128
+ .gsub(/<Info>.+<\/Info>/, '')
129
+ end
130
+
131
+ # Capture success
132
+ def successful_capture_response
133
+ <<-XML
134
+ <?xml version="1.0" encoding="UTF-8"?>
135
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
136
+ <W_RESPONSE>
137
+ <W_JOB>
138
+ <JobID>test dummy data</JobID>
139
+ <FNC_CC_CAPTURE_AUTHORIZATION>
140
+ <FunctionID>Wirecard remote test purchase</FunctionID>
141
+ <CC_TRANSACTION>
142
+ <TransactionID>1</TransactionID>
143
+ <PROCESSING_STATUS>
144
+ <GuWID>C833707121385268439116</GuWID>
145
+ <AuthorizationCode>915025</AuthorizationCode>
146
+ <Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
147
+ <StatusType>INFO</StatusType>
148
+ <FunctionResult>ACK</FunctionResult>
149
+ <TimeStamp>2008-06-19 07:18:04</TimeStamp>
150
+ </PROCESSING_STATUS>
151
+ </CC_TRANSACTION>
152
+ </FNC_CC_CAPTURE_AUTHORIZATION>
153
+ </W_JOB>
154
+ </W_RESPONSE>
155
+ </WIRECARD_BXML>
156
+ XML
157
+ end
158
+
159
+ # Capture failure
160
+ def unauthorized_capture_response
161
+ <<-XML
162
+ <?xml version="1.0" encoding="UTF-8"?>
163
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
164
+ <W_RESPONSE>
165
+ <W_JOB>
166
+ <JobID>test dummy data</JobID>
167
+ <FNC_CC_CAPTURE_AUTHORIZATION>
168
+ <FunctionID>Test dummy FunctionID</FunctionID>
169
+ <CC_TRANSACTION>
170
+ <TransactionID>a2783d471ccc98825b8c498f1a62ce8f</TransactionID>
171
+ <PROCESSING_STATUS>
172
+ <GuWID>C865683121385576058270</GuWID>
173
+ <AuthorizationCode></AuthorizationCode>
174
+ <StatusType>INFO</StatusType>
175
+ <FunctionResult>NOK</FunctionResult>
176
+ <ERROR>
177
+ <Type>DATA_ERROR</Type>
178
+ <Number>20080</Number>
179
+ <Message>Could not find referenced transaction for GuWID 1234567890123456789012.</Message>
180
+ </ERROR>
181
+ <TimeStamp>2008-06-19 08:09:20</TimeStamp>
182
+ </PROCESSING_STATUS>
183
+ </CC_TRANSACTION>
184
+ </FNC_CC_CAPTURE_AUTHORIZATION>
185
+ </W_JOB>
186
+ </W_RESPONSE>
187
+ </WIRECARD_BXML>
188
+ XML
189
+ end
190
+
191
+ # Purchase success
192
+ def successful_purchase_response
193
+ <<-XML
194
+ <?xml version="1.0" encoding="UTF-8"?>
195
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
196
+ <W_RESPONSE>
197
+ <W_JOB>
198
+ <JobID>test dummy data</JobID>
199
+ <FNC_CC_PURCHASE>
200
+ <FunctionID>Wirecard remote test purchase</FunctionID>
201
+ <CC_TRANSACTION>
202
+ <TransactionID>1</TransactionID>
203
+ <PROCESSING_STATUS>
204
+ <GuWID>C865402121385575982910</GuWID>
205
+ <AuthorizationCode>531750</AuthorizationCode>
206
+ <Info>THIS IS A DEMO TRANSACTION USING CREDIT CARD NUMBER 420000****0000. NO REAL MONEY WILL BE TRANSFERED.</Info>
207
+ <StatusType>INFO</StatusType>
208
+ <FunctionResult>ACK</FunctionResult>
209
+ <TimeStamp>2008-06-19 08:09:19</TimeStamp>
210
+ </PROCESSING_STATUS>
211
+ </CC_TRANSACTION>
212
+ </FNC_CC_PURCHASE>
213
+ </W_JOB>
214
+ </W_RESPONSE>
215
+ </WIRECARD_BXML>
216
+ XML
217
+ end
218
+
219
+ # Purchase failure
220
+ def wrong_creditcard_purchase_response
221
+ <<-XML
222
+ <?xml version="1.0" encoding="UTF-8"?>
223
+ <WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">
224
+ <W_RESPONSE>
225
+ <W_JOB>
226
+ <JobID>test dummy data</JobID>
227
+ <FNC_CC_PURCHASE>
228
+ <FunctionID>Wirecard remote test purchase</FunctionID>
229
+ <CC_TRANSACTION>
230
+ <TransactionID>1</TransactionID>
231
+ <PROCESSING_STATUS>
232
+ <GuWID>C824697121385153203112</GuWID>
233
+ <AuthorizationCode></AuthorizationCode>
234
+ <StatusType>INFO</StatusType>
235
+ <FunctionResult>NOK</FunctionResult>
236
+ <ERROR>
237
+ <Type>DATA_ERROR</Type> <Number>24997</Number>
238
+ <Message>Credit card number not allowed in demo mode.</Message>
239
+ <Advice>Only demo card number '4200000000000000' is allowed for VISA in demo mode.</Advice>
240
+ </ERROR>
241
+ <TimeStamp>2008-06-19 06:58:51</TimeStamp>
242
+ </PROCESSING_STATUS>
243
+ </CC_TRANSACTION>
244
+ </FNC_CC_PURCHASE>
245
+ </W_JOB>
246
+ </W_RESPONSE>
247
+ </WIRECARD_BXML>
248
+ XML
249
+ end
250
+ end
@@ -0,0 +1,46 @@
1
+ require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
2
+
3
+ class TestGatewayGenerator < Test::Unit::TestCase
4
+ include RubiGen::GeneratorTestHelper
5
+
6
+ def setup
7
+ bare_setup
8
+ end
9
+
10
+ def teardown
11
+ bare_teardown
12
+ end
13
+
14
+ # Some generator-related assertions:
15
+ # assert_generated_file(name, &block) # block passed the file contents
16
+ # assert_directory_exists(name)
17
+ # assert_generated_class(name, &block)
18
+ # assert_generated_module(name, &block)
19
+ # assert_generated_test_for(name, &block)
20
+ # The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
21
+ # assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
22
+ #
23
+ # Other helper methods are:
24
+ # app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
25
+ # bare_setup - place this in setup method to create the APP_ROOT folder for each test
26
+ # bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
27
+
28
+ def test_generator_without_options
29
+ name = 'miracle'
30
+
31
+ run_generator('gateway', [ name ], sources)
32
+ assert_generated_file(GatewayGenerator::LIB_DIR + "#{name}.rb")
33
+ assert_generated_file(GatewayGenerator::UNIT_TEST_DIR + "#{name}_test.rb")
34
+ assert_generated_file(GatewayGenerator::REMOTE_TEST_DIR + "remote_#{name}_test.rb")
35
+ end
36
+
37
+ private
38
+ def sources
39
+ [RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
40
+ ]
41
+ end
42
+
43
+ def generator_path
44
+ "generators"
45
+ end
46
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+ require 'fileutils'
3
+
4
+ # Must set before requiring generator libs.
5
+ TMP_ROOT = File.dirname(__FILE__) + "/tmp" unless defined?(TMP_ROOT)
6
+ PROJECT_NAME = "myproject" unless defined?(PROJECT_NAME)
7
+ app_root = File.join(TMP_ROOT, PROJECT_NAME)
8
+ if defined?(APP_ROOT)
9
+ APP_ROOT.replace(app_root)
10
+ else
11
+ APP_ROOT = app_root
12
+ end
13
+
14
+ begin
15
+ require 'rubigen'
16
+ rescue LoadError
17
+ require 'rubygems'
18
+ require 'rubigen'
19
+ end
20
+ require 'rubigen/helpers/generator_test_helper'
@@ -0,0 +1,53 @@
1
+ require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
2
+
3
+ class TestIntegrationGenerator < Test::Unit::TestCase
4
+ include RubiGen::GeneratorTestHelper
5
+
6
+ def setup
7
+ bare_setup
8
+ end
9
+
10
+ def teardown
11
+ bare_teardown
12
+ end
13
+
14
+ # Some generator-related assertions:
15
+ # assert_generated_file(name, &block) # block passed the file contents
16
+ # assert_directory_exists(name)
17
+ # assert_generated_class(name, &block)
18
+ # assert_generated_module(name, &block)
19
+ # assert_generated_test_for(name, &block)
20
+ # The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
21
+ # assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
22
+ #
23
+ # Other helper methods are:
24
+ # app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
25
+ # bare_setup - place this in setup method to create the APP_ROOT folder for each test
26
+ # bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
27
+
28
+ def test_generator_without_options
29
+ name = 'miracle'
30
+
31
+ run_generator('integration', [ name ], sources)
32
+
33
+ lib_dir = IntegrationGenerator::BASE_DIR + name
34
+ test_dir = IntegrationGenerator::TEST_DIR
35
+ assert_generated_file("#{lib_dir}.rb")
36
+ assert_generated_file(lib_dir + "/helper.rb")
37
+ assert_generated_file(lib_dir + "/notification.rb")
38
+
39
+ assert_generated_file(test_dir + "#{name}_module_test.rb")
40
+ assert_generated_file(test_dir + "helpers/#{name}_helper_test.rb")
41
+ assert_generated_file(test_dir + "notifications/#{name}_notification_test.rb")
42
+ end
43
+
44
+ private
45
+ def sources
46
+ [RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
47
+ ]
48
+ end
49
+
50
+ def generator_path
51
+ "generators"
52
+ end
53
+ end
@@ -0,0 +1,50 @@
1
+ require 'test_helper'
2
+
3
+ class ActionViewHelperTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations::ActionViewHelper
5
+ include ActionView::Helpers::FormHelper
6
+ include ActionView::Helpers::FormTagHelper
7
+ include ActionView::Helpers::UrlHelper
8
+ include ActionView::Helpers::TagHelper
9
+ include ActionView::Helpers::TextHelper
10
+
11
+ attr_accessor :output_buffer
12
+
13
+ def setup
14
+ @controller = Class.new do
15
+ attr_reader :url_for_options
16
+ def url_for(options, *parameters_for_method_reference)
17
+ @url_for_options = options
18
+ end
19
+ end
20
+ @controller = @controller.new
21
+ @output_buffer = ''
22
+ end
23
+
24
+
25
+ def test_basic_payment_service
26
+ _erbout = ''
27
+
28
+ payment_service_for('order-1','test', :service => :bogus){}
29
+
30
+ expected = [
31
+ '<form action="http://www.bogus.com" method="post">',
32
+ '<input id="order" name="order" type="hidden" value="order-1" />',
33
+ '<input id="account" name="account" type="hidden" value="test" />',
34
+ "</form>"
35
+ ]
36
+
37
+ _erbout.each_line do |line|
38
+ assert expected.include?(line.chomp), "Failed to match #{line}"
39
+ end
40
+ end
41
+
42
+ def test_payment_service_no_block_given
43
+ assert_raise(ArgumentError){ payment_service_for }
44
+ end
45
+
46
+ protected
47
+ def protect_against_forgery?
48
+ false
49
+ end
50
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ class BogusModuleTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_notification_method
7
+ assert_instance_of Bogus::Notification, Bogus.notification('name=cody')
8
+ end
9
+
10
+ def test_service_url
11
+ new = 'http://www.unbogus.com'
12
+ assert_equal 'http://www.bogus.com', Bogus.service_url
13
+ Bogus.service_url = new
14
+ assert_equal new, Bogus.service_url
15
+ end
16
+
17
+ def test_return_method
18
+ assert_instance_of Bogus::Return, Bogus.return('name=cody')
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class ChronopayModuleTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_notification_method
7
+ assert_instance_of Chronopay::Notification, Chronopay.notification('name=cody')
8
+ end
9
+
10
+ def test_return_method
11
+ assert_instance_of Chronopay::Return, Chronopay.return('name=cody')
12
+ end
13
+ end