Spaces:
Sleeping
Sleeping
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
|