33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
from fastapi.testclient import TestClient
|
|
|
|
from main import app
|
|
from scripts.init_db import init_db
|
|
|
|
|
|
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.
|
|
"""
|
|
init_db()
|
|
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
|