|
|
|
@ -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() |
|
|
|
|
|
|
|
@ -129,6 +175,12 @@ def test_stream_status_codes_match_openapi() -> None: |
|
|
|
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]: |
|
|
|
paths = cast(dict[str, Any], schema["paths"]) |
|
|
|
|