diff --git a/src/authentic2/utils/evaluate.py b/src/authentic2/utils/evaluate.py index a79577702..90474f3ef 100644 --- a/src/authentic2/utils/evaluate.py +++ b/src/authentic2/utils/evaluate.py @@ -91,7 +91,7 @@ class BaseExpressionValidator(ast.NodeVisitor): else: ok = True if not ok: - raise ExpressionError(_('expression is forbidden'), node=node, code='forbidden-expression') + raise ExpressionError(_('expression "%(expression)s" is forbidden'), node=node, code='forbidden-expression') # specific node class check node_name = node.__class__.__name__ @@ -123,6 +123,7 @@ class BaseExpressionValidator(ast.NodeVisitor): except ExpressionError as e: if e.text is None: e.text = expression + e.params = {'expression': expression} six.reraise(*sys.exc_info()) return compile(tree, expression, mode='eval') diff --git a/tests/test_utils_evaluate.py b/tests/test_utils_evaluate.py index e6d1bbb48..69a217952 100644 --- a/tests/test_utils_evaluate.py +++ b/tests/test_utils_evaluate.py @@ -53,6 +53,7 @@ def test_condition_validator(): with pytest.raises(ExpressionError) as raised: v('a + b') + assert str(raised.value) == '[\'expression "a + b" is forbidden\']' with pytest.raises(ExpressionError) as raised: v('1 + 2')