Files
odoo_source/addons/payment_adyen/tests/test_adyen.py
T
Laurent Smet 85e187ebb5 [IMP] payment(_*): Remove dependency to AccountTestCommon
l10n runbot builds are all failing when running at least one test depending of AccountTestCommon because it:
- doesn't create a sandboxed testing environnement to manage the multi-currency, multi-company, the default company's currency, the exchange rates...
- doesn't setup a testing user then all tests are done using the superuser.
- doesn't provide a fully setup chart of accounts: exchange difference journal is not set, accounts have bad types, etc...
- is run sometimes at-install.

--task: 2296213
2020-07-16 07:25:52 +00:00

80 lines
3.2 KiB
Python

# -*- coding: utf-8 -*-
from lxml import objectify
from odoo.addons.payment.tests.common import PaymentAcquirerCommon
from odoo.addons.payment_adyen.controllers.main import AdyenController
from werkzeug import urls
import odoo.tests
class AdyenCommon(PaymentAcquirerCommon):
@classmethod
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
# some CC (always use expiration date 06 / 2016, cvc 737, cid 7373 (amex))
cls.amex = (('370000000000002', '7373'))
cls.dinersclub = (('36006666333344', '737'))
cls.discover = (('6011601160116611', '737'), ('644564456445644', '737'))
cls.jcb = (('3530111333300000', '737'))
cls.mastercard = (('5555444433331111', '737'), ('5555555555554444', '737'))
cls.visa = (('4111 1111 1111 1111', '737'), ('4444333322221111', '737'))
cls.mcdebit = (('5500000000000004', '737'))
cls.visadebit = (('4400000000000008', '737'))
cls.maestro = (('6731012345678906', '737'))
cls.laser = (('630495060000000000', '737'))
cls.hipercard = (('6062828888666688', '737'))
cls.dsmastercard = (('521234567890 1234', '737', 'user', 'password'))
cls.dsvisa = (('4212345678901237', '737', 'user', 'password'))
cls.mistercash = (('6703444444444449', None, 'user', 'password'))
cls.adyen = cls.env.ref('payment.payment_acquirer_adyen')
cls.adyen.write({
'adyen_merchant_account': 'dummy',
'adyen_skin_code': 'dummy',
'adyen_skin_hmac_key': 'dummy',
'state': 'test',
})
@odoo.tests.tagged('post_install', '-at_install', 'external', '-standard')
class AdyenForm(AdyenCommon):
def test_10_adyen_form_render(self):
# be sure not to do stupid things
adyen = self.adyen
self.assertEqual(adyen.state, 'test', 'test without test environment')
# ----------------------------------------
# Test: button direct rendering
# ----------------------------------------
base_url = self.env['ir.config_parameter'].get_param('web.base.url')
form_values = {
'merchantAccount': 'OpenERPCOM',
'merchantReference': 'test_ref0',
'skinCode': 'cbqYWvVL',
'paymentAmount': '1',
'currencyCode': 'EUR',
'resURL': urls.url_join(base_url, AdyenController._return_url),
}
# render the button
res = adyen.render(
'test_ref0', 0.01, self.currency_euro.id,
partner_id=None,
partner_values=self.buyer_values)
# check form result
tree = objectify.fromstring(res)
self.assertEqual(tree.get('action'), 'https://test.adyen.com/hpp/pay.shtml', 'adyen: wrong form POST url')
for form_input in tree.input:
if form_input.get('name') in ['submit', 'shipBeforeDate', 'sessionValidity', 'shopperLocale', 'merchantSig']:
continue
self.assertEqual(
form_input.get('value'),
form_values[form_input.get('name')],
'adyen: wrong value for input %s: received %s instead of %s' % (form_input.get('name'), form_input.get('value'), form_values[form_input.get('name')])
)