Spaces:
Sleeping
Sleeping
| import pytest | |
| import httpx | |
| import uuid | |
| from fastapi.testclient import TestClient | |
| from app.api import app | |
| client = TestClient(app) | |
| def test_exception_sql_trigger_returns_observation(): | |
| # 1. Reset | |
| res = client.post("/reset", json={"task_id": 1}) | |
| assert res.status_code == 200 | |
| sid = res.json()["session_id"] | |
| # Send complex trigger | |
| res = client.post("/step", json={"action_type": "ddl", "sql": "CREATE TRIGGER t AFTER INSERT ON nonexistent BEGIN SELECT 1; END"}, headers={"X-Session-ID": sid}) | |
| # Did it return 200 with error observation, or 400? | |
| print("Trigger result:", res.status_code, res.json()) | |
| def test_exception_pragma_info_dropped_view(): | |
| res = client.post("/reset", json={"task_id": 1}) | |
| sid = res.json()["session_id"] | |
| # CREATE VIEW | |
| res = client.post("/step", json={"action_type": "ddl", "sql": "CREATE VIEW v AS SELECT 1"}, headers={"X-Session-ID": sid}) | |
| # DROP UNDERLYING ? (Wait, just drop the view instead of dropping the table) | |
| # Actually wait. Just drop table and run pragma on view. | |
| client.post("/step", json={"action_type": "ddl", "sql": "CREATE TABLE ttt (id INT)"}, headers={"X-Session-ID": sid}) | |
| client.post("/step", json={"action_type": "ddl", "sql": "CREATE VIEW v2 AS SELECT * FROM ttt"}, headers={"X-Session-ID": sid}) | |
| client.post("/step", json={"action_type": "ddl", "sql": "DROP TABLE ttt"}, headers={"X-Session-ID": sid}) | |
| # Query pragma on broken view | |
| res = client.post("/step", json={"action_type": "query", "sql": "PRAGMA table_info(v2)"}, headers={"X-Session-ID": sid}) | |
| print("Pragma result:", res.status_code, res.json()) | |
| def test_exception_invalid_seed(): | |
| # Invalid type for seed should throw 422 | |
| res = client.post("/reset", json={"task_id": 1, "seed": "not_an_int"}) | |
| print("Invalid seed reset:", res.status_code, res.json()) | |