diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-09-20 17:33:22 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-09-20 17:34:45 +0200 |
| commit | 64e43808b79badb5869a8d73cc1cc3f3b3aa8e12 (patch) | |
| tree | 9a22d5f6c03073a4d10faedea8df23a5211e8b8f /odoo/addons/base/tests/test_base.py | |
| parent | 944891ced081cda3b8b3db5faf3b7ac23b6b4ce8 (diff) | |
| parent | 58a83d12228fbbd4e9dde542e133d264204ee0f3 (diff) | |
[MERGE] forward port branch saas-12.5 up to 58a83d12228
Diffstat (limited to 'odoo/addons/base/tests/test_base.py')
| -rw-r--r-- | odoo/addons/base/tests/test_base.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/odoo/addons/base/tests/test_base.py b/odoo/addons/base/tests/test_base.py index 28fd7813722..1ca22defd42 100644 --- a/odoo/addons/base/tests/test_base.py +++ b/odoo/addons/base/tests/test_base.py @@ -7,7 +7,7 @@ from odoo import SUPERUSER_ID from odoo.exceptions import UserError, ValidationError from odoo.tests.common import TransactionCase, BaseCase from odoo.tools import mute_logger -from odoo.tools.safe_eval import safe_eval, const_eval +from odoo.tools.safe_eval import safe_eval, const_eval, expr_eval class TestSafeEval(BaseCase): @@ -17,6 +17,12 @@ class TestSafeEval(BaseCase): actual = const_eval('(1, {"a": {2.5}}, [None, u"foo"])') self.assertEqual(actual, expected) + def test_expr(self): + # NB: True and False are names in Python 2 not consts + expected = 3 * 4 + actual = expr_eval('3 * 4') + self.assertEqual(actual, expected) + def test_01_safe_eval(self): """ Try a few common expressions to verify they work with safe_eval """ expected = (1, {"a": 9 * 2}, (True, False, None)) @@ -41,10 +47,19 @@ class TestSafeEval(BaseCase): @mute_logger('odoo.tools.safe_eval') def test_05_safe_eval_forbiddon(self): - """ Try forbidden expressions in safe_eval to verify they are not allowed (open) """ + """ Try forbidden expressions in safe_eval to verify they are not allowed""" + # no forbidden builtin expression with self.assertRaises(ValueError): safe_eval('open("/etc/passwd","r")') + # no forbidden opcodes + with self.assertRaises(ValueError): + safe_eval("import odoo", mode="exec") + + # no dunder + with self.assertRaises(NameError): + safe_eval("self.__name__", {'self': self}, mode="exec") + # samples use effective TLDs from the Mozilla public suffix # list at http://publicsuffix.org |
