Spaces:
Running
Running
| from pathlib import Path | |
| import zipfile | |
| import pytest | |
| from ragforge.security import safe_extract_zip, validate_readonly_sql | |
| def test_readonly_sql_accepts_select_and_adds_limit(): | |
| sql = validate_readonly_sql("SELECT * FROM support_matrix") | |
| assert sql.lower().endswith("limit 200") | |
| def test_readonly_sql_rejects_mutation(): | |
| with pytest.raises(ValueError): | |
| validate_readonly_sql("DROP TABLE support_matrix") | |
| def test_zip_slip_is_rejected(tmp_path: Path): | |
| archive = tmp_path / "bad.zip" | |
| with zipfile.ZipFile(archive, "w") as zf: | |
| zf.writestr("../escape.txt", "nope") | |
| with pytest.raises(ValueError): | |
| safe_extract_zip(archive, tmp_path / "out") | |