Odoo18-Base/odoo/addons/test_apikeys/tests/test_flow.py

52 lines
1.8 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
import logging
from odoo import api
from odoo.tests import tagged, get_db_name, HttpCase
from odoo.addons.auth_totp.tests.test_totp import TestTOTPMixin
_logger = logging.getLogger(__name__)
@tagged('post_install', '-at_install')
class TestAPIKeys(TestTOTPMixin, HttpCase):
def setUp(self):
super().setUp()
self.messages = []
@api.model
def log(inst, *args, **kwargs):
self.messages.append((inst, args, kwargs))
self.registry['ir.logging'].send_key = log
@self.addCleanup
def remove_callback():
del self.registry['ir.logging'].send_key
def test_addremove(self):
db = get_db_name()
self.start_tour('/odoo', 'apikeys_tour_setup', login=self.user_test.login)
self.assertEqual(len(self.user_test.api_key_ids), 1, "the test user should now have a key")
[(_, [key], [])] = self.messages
uid = self.xmlrpc_common.authenticate(db, self.user_test.login, key, {})
[r] = self.xmlrpc_object.execute_kw(
db, uid, key,
'res.users', 'read', [uid, ['login']]
)
self.assertEqual(
r['login'], self.user_test.login,
"the key should be usable as a way to perform RPC calls"
)
self.start_tour('/odoo', 'apikeys_tour_teardown', login=self.user_test.login)
def test_apikeys_totp(self):
db = get_db_name()
self.install_totphook()
self.start_tour('/odoo', 'apikeys_tour_setup', login=self.user_test.login)
self.start_tour('/odoo', 'totp_tour_setup', login=self.user_test.login)
[(_, [key], [])] = self.messages # pylint: disable=unbalanced-tuple-unpacking
uid = self.xmlrpc_common.authenticate(db, self.user_test.login, key, {})
self.assertEqual(uid, self.user_test.id)