Refactor database initialization and remove Alembic migrations
- Removed legacy Alembic migration files and consolidated schema management into a new Pydantic-backed initializer (`scripts/init_db.py`). - Updated `main.py` to ensure the new DB initializer runs on startup, maintaining idempotency. - Adjusted session management in `config/database.py` to prevent DetachedInstanceError. - Introduced new enums in `models/enums.py` for better organization and clarity. - Refactored various models to utilize the new enums, improving code maintainability. - Enhanced middleware to handle JSON validation more robustly, ensuring non-JSON requests do not trigger JSON errors. - Added tests for middleware and enums to ensure expected behavior and consistency. - Updated changelog to reflect significant changes and improvements.
This commit is contained in:
30
tests/test_login_form_middleware.py
Normal file
30
tests/test_login_form_middleware.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from main import app
|
||||
|
||||
|
||||
def test_login_form_post_does_not_trigger_json_error():
|
||||
"""POST form-encoded data to /login and assert middleware doesn't return
|
||||
the JSON "Invalid JSON payload" error which indicates the middleware
|
||||
attempted to parse non-JSON bodies.
|
||||
"""
|
||||
client = TestClient(app)
|
||||
|
||||
resp = client.post(
|
||||
"/login",
|
||||
data={"username": "no-such-user", "password": "x"},
|
||||
headers={"Accept": "text/html"},
|
||||
)
|
||||
|
||||
content_type = resp.headers.get("content-type", "")
|
||||
|
||||
# If middleware raised the JSON error we'd get an application/json body
|
||||
# with detail == "Invalid JSON payload". Ensure that's not the case.
|
||||
if content_type.startswith("application/json"):
|
||||
body = resp.json()
|
||||
assert body.get("detail") != "Invalid JSON payload", (
|
||||
"Middleware attempted to parse non-JSON body as JSON and failed"
|
||||
)
|
||||
|
||||
# At minimum the endpoint should not error with the JSON payload message.
|
||||
assert True
|
||||
Reference in New Issue
Block a user