diff --git a/keychain/models/keychain.py b/keychain/models/keychain.py index 40848864c..77e82bd20 100644 --- a/keychain/models/keychain.py +++ b/keychain/models/keychain.py @@ -7,7 +7,7 @@ import logging import json from odoo import models, fields, api -from odoo.exceptions import ValidationError +from odoo.exceptions import ValidationError, UserError from odoo.tools.config import config from odoo.tools.translate import _ @@ -66,8 +66,8 @@ class KeychainAccount(models.Model): """Password in clear text.""" try: return self._decode_password(self.password) - except Warning as warn: - raise Warning(_( + except UserError as warn: + raise UserError(_( "%s \n" "Account: %s %s %s " % ( warn, @@ -161,7 +161,7 @@ class KeychainAccount(models.Model): try: return unicode(cipher.decrypt(str(data)), 'UTF-8') except InvalidToken: - raise Warning(_( + raise UserError(_( "Password has been encrypted with a different " "key. Unless you can recover the previous key, " "this password is unreadable." @@ -195,7 +195,7 @@ class KeychainAccount(models.Model): envs = cls._retrieve_env() # ex: ('dev', False) keys = _get_keys(envs) if len(keys) == 0: - raise Warning(_( + raise UserError(_( "No 'keychain_key_%s' entries found in config file. " "Use a key similar to: %s" % (envs[0], Fernet.generate_key()) )) diff --git a/keychain/tests/test_keychain.py b/keychain/tests/test_keychain.py index 040262213..8b72bb29c 100644 --- a/keychain/tests/test_keychain.py +++ b/keychain/tests/test_keychain.py @@ -4,7 +4,7 @@ from odoo.tests.common import TransactionCase from odoo.tools.config import config -from odoo.exceptions import ValidationError +from odoo.exceptions import ValidationError, UserError import logging @@ -80,20 +80,20 @@ class TestKeychain(TransactionCase): try: account._get_password() self.assertTrue(False, 'It should not work with another key') - except Warning as err: - self.assertTrue(True, 'It should raise a Warning') + except UserError as err: + self.assertTrue(True, 'It should raise a UserError') self.assertTrue( 'has been encrypted with a diff' in str(err), 'It should display the right msg') else: - self.assertTrue(False, 'It should raise a Warning') + self.assertTrue(False, 'It should raise a UserError') def test_no_key(self): """It should raise an exception when no key is set.""" account = self._create_account() del config.options['keychain_key'] - with self.assertRaises(Warning) as err: + with self.assertRaises(UserError) as err: account.clear_password = 'aiuepr' account._inverse_set_password() self.assertTrue(False, 'It should not work without key') @@ -106,7 +106,7 @@ class TestKeychain(TransactionCase): account = self._create_account() config['keychain_key'] = "" - with self.assertRaises(Warning): + with self.assertRaises(UserError): account.clear_password = 'aiuepr' account._inverse_set_password() self.assertTrue(False, 'It should not work missing formated key') @@ -138,7 +138,7 @@ class TestKeychain(TransactionCase): 'abc', 'Should work with dev') config['running_env'] = 'prod' - with self.assertRaises(Warning): + with self.assertRaises(UserError): self.assertEqual( account._get_password(), 'abc', 'Should not work with prod key') @@ -176,7 +176,7 @@ class TestKeychain(TransactionCase): account.clear_password = 'abc' account._inverse_set_password() - with self.assertRaises(Warning): + with self.assertRaises(UserError): self.assertEqual( account._get_password(), 'abc', 'Should not work with dev')