File size: 1,018 Bytes
fb80857
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from pathlib import Path


ROOT = Path(__file__).parents[1]
RENDERER = (ROOT / "web" / "renderer.html").read_text(encoding="utf-8")


def test_renderer_uses_browser_isolation_and_timeout():
    app_source = (ROOT / "app.py").read_text(encoding="utf-8")

    assert 'sandbox="allow-scripts"' in app_source
    assert "new Worker" in RENDERER
    assert "LOAD_TIMEOUT_MS = 45000" in RENDERER
    assert "TIMEOUT_MS = 10000" in RENDERER
    assert "activeWorker.terminate()" in RENDERER


def test_renderer_blocks_server_and_active_output_access():
    assert "default-src 'none'" in RENDERER
    assert "script-src 'unsafe-inline' 'wasm-unsafe-eval'" in RENDERER
    assert "form-action 'none'" in RENDERER
    assert 'format="png"' in RENDERER
    assert "data:image/png;base64" in RENDERER


def test_renderer_validates_generated_python():
    assert "ast.parse" in RENDERER
    assert '"open"' in RENDERER
    assert '"exec"' in RENDERER
    assert '"__import__"' in RENDERER
    assert "ALLOWED_MODULES" in RENDERER