68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
# This file is part of Tryton. The COPYRIGHT file at the top level of this
|
|
# repository contains the full copyright notices and license terms.
|
|
|
|
import unittest
|
|
from trytond.tests.test_tryton import install_module, with_transaction
|
|
from trytond.pool import Pool
|
|
from trytond.res.user import bcrypt
|
|
|
|
|
|
class UserTestCase(unittest.TestCase):
|
|
'Test User'
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
install_module('res')
|
|
|
|
def create_user(self, login, password, hash_method=None):
|
|
pool = Pool()
|
|
User = pool.get('res.user')
|
|
|
|
user, = User.create([{
|
|
'name': login,
|
|
'login': login,
|
|
}])
|
|
if hash_method:
|
|
hash = getattr(User, 'hash_' + hash_method)
|
|
User.write([user], {
|
|
'password_hash': hash(password),
|
|
})
|
|
else:
|
|
User.write([user], {
|
|
'password': password,
|
|
})
|
|
|
|
def check_user(self, login, password):
|
|
pool = Pool()
|
|
User = pool.get('res.user')
|
|
|
|
user, = User.search([('login', '=', login)])
|
|
user_id = User.get_login(login, password)
|
|
self.assertEqual(user_id, user.id)
|
|
|
|
bad_user_id = User.get_login(login, password + 'wrong')
|
|
self.assertEqual(bad_user_id, 0)
|
|
|
|
@with_transaction()
|
|
def test_test_hash(self):
|
|
'Test default hash password'
|
|
self.create_user('user', '12345')
|
|
self.check_user('user', '12345')
|
|
|
|
@with_transaction()
|
|
def test_test_sha1(self):
|
|
'Test sha1 password'
|
|
self.create_user('user', '12345', 'sha1')
|
|
self.check_user('user', '12345')
|
|
|
|
@unittest.skipIf(bcrypt is None, 'requires bcrypt')
|
|
@with_transaction()
|
|
def test_test_bcrypt(self):
|
|
'Test bcrypt password'
|
|
self.create_user('user', '12345', 'bcrypt')
|
|
self.check_user('user', '12345')
|
|
|
|
|
|
def suite():
|
|
return unittest.TestLoader().loadTestsFromTestCase(UserTestCase)
|