File size: 565 Bytes
9c1c0ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import pytest

from datapilot.safety import UnsafeCodeError, validate_generated_expression


def test_accepts_scalar_expression():
    tree = validate_generated_expression("(revenue - cost) / revenue")
    assert tree is not None


@pytest.mark.parametrize(

    "expression",

    [

        "__import__('os').system('whoami')",

        "open('secret.txt').read()",

        "(1).__class__.__mro__",

    ],

)
def test_blocks_unsafe_expression(expression):
    with pytest.raises(UnsafeCodeError):
        validate_generated_expression(expression)