File size: 1,432 Bytes
0b005d6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from app.sql_validator import sanitize_and_validate


def test_valid_select():
    valid, result = sanitize_and_validate("SELECT * FROM orders")
    assert valid is True
    assert "LIMIT" in result.upper()


def test_blocks_drop():
    valid, result = sanitize_and_validate("DROP TABLE orders")
    assert valid is False
    assert "allowed" in result.lower() or "forbidden" in result.lower()


def test_blocks_delete():
    valid, _ = sanitize_and_validate("DELETE FROM customers WHERE 1=1")
    assert valid is False


def test_blocks_insert():
    valid, _ = sanitize_and_validate("INSERT INTO orders VALUES (1, 2, 3)")
    assert valid is False


def test_blocks_update():
    valid, _ = sanitize_and_validate("UPDATE customers SET risk_score = 0")
    assert valid is False


def test_adds_limit_if_missing():
    valid, sql = sanitize_and_validate("SELECT * FROM orders")
    assert valid is True
    assert "LIMIT" in sql.upper()


def test_caps_limit_at_500():
    valid, sql = sanitize_and_validate("SELECT * FROM orders LIMIT 10000")
    assert valid is True
    assert "LIMIT 500" in sql.upper()


def test_empty_sql():
    valid, _ = sanitize_and_validate("")
    assert valid is False


def test_invalid_syntax():
    valid, _ = sanitize_and_validate("SELECT FROM WHERE")
    assert valid is False


def test_blocks_pragma():
    valid, _ = sanitize_and_validate("PRAGMA table_info(orders)")
    assert valid is False