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
