From 11f2f207aff37ecedd35c6003136c0308f17f0f5 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Mon, 6 Jul 2026 16:23:31 +0530 Subject: [PATCH] test: add coverage for dependency overridden status codes in streams --- tests/test_stream_status_code.py | 54 +++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/tests/test_stream_status_code.py b/tests/test_stream_status_code.py index 76b2bf4dc..4e78dae0f 100644 --- a/tests/test_stream_status_code.py +++ b/tests/test_stream_status_code.py @@ -54,6 +54,29 @@ async def jsonl_default() -> AsyncIterable[dict[str, str]]: yield {"message": "ok"} +# --- NEW OVERRIDE ENDPOINTS --- + +@app.post("/sse-created-override", response_class=EventSourceResponse, status_code=201) +async def sse_created_override( + accepted: None = Depends(set_accepted), +) -> AsyncIterable[dict[str, str]]: + yield {"message": "overridden"} + + +@app.post("/jsonl-created-override", status_code=201) +async def jsonl_created_override( + accepted: None = Depends(set_accepted), +) -> AsyncIterable[dict[str, str]]: + yield {"message": "overridden"} + + +@app.post("/raw-created-override", response_class=StreamingResponse, status_code=201) +async def raw_created_override( + accepted: None = Depends(set_accepted), +) -> AsyncIterable[str]: + yield "overridden" + + client = TestClient(app) @@ -121,6 +144,29 @@ def test_jsonl_stream_default_status_code_stays_200() -> None: assert get_jsonl_data(response.text) == [{"message": "ok"}] +# --- NEW OVERRIDE TESTS --- + +def test_sse_stream_dependency_overrides_declared_status_code() -> None: + response = client.post("/sse-created-override") + + assert response.status_code == 202 + assert get_sse_data(response.text) == [{"message": "overridden"}] + + +def test_jsonl_stream_dependency_overrides_declared_status_code() -> None: + response = client.post("/jsonl-created-override") + + assert response.status_code == 202 + assert get_jsonl_data(response.text) == [{"message": "overridden"}] + + +def test_raw_stream_dependency_overrides_declared_status_code() -> None: + response = client.post("/raw-created-override") + + assert response.status_code == 202 + assert response.text == "overridden" + + def test_stream_status_codes_match_openapi() -> None: schema = client.get("/openapi.json").json() @@ -128,6 +174,12 @@ def test_stream_status_codes_match_openapi() -> None: assert response_status_codes(schema, "/jsonl-created", "post") == ["201"] assert response_status_codes(schema, "/sse-default", "get") == ["200"] assert response_status_codes(schema, "/jsonl-default", "get") == ["200"] + + # Asserting that OpenAPI still documents the declared status code (201), + # even though the dependency sets it to 202 at runtime. + assert response_status_codes(schema, "/sse-created-override", "post") == ["201"] + assert response_status_codes(schema, "/jsonl-created-override", "post") == ["201"] + assert response_status_codes(schema, "/raw-created-override", "post") == ["201"] def response_status_codes(schema: dict[str, Any], path: str, method: str) -> list[str]: @@ -135,4 +187,4 @@ def response_status_codes(schema: dict[str, Any], path: str, method: str) -> lis route = cast(dict[str, Any], paths[path]) operation = cast(dict[str, Any], route[method]) responses = cast(dict[str, Any], operation["responses"]) - return sorted(responses) + return sorted(responses) \ No newline at end of file