Coverage for tests / test_default_response_class.py: 100%
141 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
1from typing import Any 1abcd
3import orjson 1abcd
4from fastapi import APIRouter, FastAPI 1abcd
5from fastapi.responses import HTMLResponse, JSONResponse, PlainTextResponse 1abcd
6from fastapi.testclient import TestClient 1abcd
9class ORJSONResponse(JSONResponse): 1abcd
10 media_type = "application/x-orjson" 1abcd
12 def render(self, content: Any) -> bytes: 1abcd
13 return orjson.dumps(content) 1efghijklmno
16class OverrideResponse(JSONResponse): 1abcd
17 media_type = "application/x-override" 1abcd
20app = FastAPI(default_response_class=ORJSONResponse) 1abcd
21router_a = APIRouter() 1abcd
22router_a_a = APIRouter() 1abcd
23router_a_b_override = APIRouter() # Overrides default class 1abcd
24router_b_override = APIRouter() # Overrides default class 1abcd
25router_b_a = APIRouter() 1abcd
26router_b_a_c_override = APIRouter() # Overrides default class again 1abcd
29@app.get("/") 1abcd
30def get_root(): 1abcd
31 return {"msg": "Hello World"} 1ehjm
34@app.get("/override", response_class=PlainTextResponse) 1abcd
35def get_path_override(): 1abcd
36 return "Hello World" 1pqrs
39@router_a.get("/") 1abcd
40def get_a(): 1abcd
41 return {"msg": "Hello A"} 1gilo
44@router_a.get("/override", response_class=PlainTextResponse) 1abcd
45def get_a_path_override(): 1abcd
46 return "Hello A" 1tuvw
49@router_a_a.get("/") 1abcd
50def get_a_a(): 1abcd
51 return {"msg": "Hello A A"} 1fxkn
54@router_a_a.get("/override", response_class=PlainTextResponse) 1abcd
55def get_a_a_path_override(): 1abcd
56 return "Hello A A" 1yzAB
59@router_a_b_override.get("/") 1abcd
60def get_a_b(): 1abcd
61 return "Hello A B" 1CDEF
64@router_a_b_override.get("/override", response_class=HTMLResponse) 1abcd
65def get_a_b_path_override(): 1abcd
66 return "Hello A B" 1GHIJ
69@router_b_override.get("/") 1abcd
70def get_b(): 1abcd
71 return "Hello B" 1KLMN
74@router_b_override.get("/override", response_class=HTMLResponse) 1abcd
75def get_b_path_override(): 1abcd
76 return "Hello B" 1OPQR
79@router_b_a.get("/") 1abcd
80def get_b_a(): 1abcd
81 return "Hello B A" 1STUV
84@router_b_a.get("/override", response_class=HTMLResponse) 1abcd
85def get_b_a_path_override(): 1abcd
86 return "Hello B A" 1WXYZ
89@router_b_a_c_override.get("/") 1abcd
90def get_b_a_c(): 1abcd
91 return "Hello B A C" 10123
94@router_b_a_c_override.get("/override", response_class=OverrideResponse) 1abcd
95def get_b_a_c_path_override(): 1abcd
96 return {"msg": "Hello B A C"} 14567
99router_b_a.include_router( 1abcd
100 router_b_a_c_override, prefix="/c", default_response_class=HTMLResponse
101)
102router_b_override.include_router(router_b_a, prefix="/a") 1abcd
103router_a.include_router(router_a_a, prefix="/a") 1abcd
104router_a.include_router( 1abcd
105 router_a_b_override, prefix="/b", default_response_class=PlainTextResponse
106)
107app.include_router(router_a, prefix="/a") 1abcd
108app.include_router( 1abcd
109 router_b_override, prefix="/b", default_response_class=PlainTextResponse
110)
113client = TestClient(app) 1abcd
115orjson_type = "application/x-orjson" 1abcd
116text_type = "text/plain; charset=utf-8" 1abcd
117html_type = "text/html; charset=utf-8" 1abcd
118override_type = "application/x-override" 1abcd
121def test_app(): 1abcd
122 with client: 1ehjm
123 response = client.get("/") 1ehjm
124 assert response.json() == {"msg": "Hello World"} 1ehjm
125 assert response.headers["content-type"] == orjson_type 1ehjm
128def test_app_override(): 1abcd
129 with client: 1pqrs
130 response = client.get("/override") 1pqrs
131 assert response.content == b"Hello World" 1pqrs
132 assert response.headers["content-type"] == text_type 1pqrs
135def test_router_a(): 1abcd
136 with client: 1gilo
137 response = client.get("/a") 1gilo
138 assert response.json() == {"msg": "Hello A"} 1gilo
139 assert response.headers["content-type"] == orjson_type 1gilo
142def test_router_a_override(): 1abcd
143 with client: 1tuvw
144 response = client.get("/a/override") 1tuvw
145 assert response.content == b"Hello A" 1tuvw
146 assert response.headers["content-type"] == text_type 1tuvw
149def test_router_a_a(): 1abcd
150 with client: 1fxkn
151 response = client.get("/a/a") 1fxkn
152 assert response.json() == {"msg": "Hello A A"} 1fxkn
153 assert response.headers["content-type"] == orjson_type 1fxkn
156def test_router_a_a_override(): 1abcd
157 with client: 1yzAB
158 response = client.get("/a/a/override") 1yzAB
159 assert response.content == b"Hello A A" 1yzAB
160 assert response.headers["content-type"] == text_type 1yzAB
163def test_router_a_b(): 1abcd
164 with client: 1CDEF
165 response = client.get("/a/b") 1CDEF
166 assert response.content == b"Hello A B" 1CDEF
167 assert response.headers["content-type"] == text_type 1CDEF
170def test_router_a_b_override(): 1abcd
171 with client: 1GHIJ
172 response = client.get("/a/b/override") 1GHIJ
173 assert response.content == b"Hello A B" 1GHIJ
174 assert response.headers["content-type"] == html_type 1GHIJ
177def test_router_b(): 1abcd
178 with client: 1KLMN
179 response = client.get("/b") 1KLMN
180 assert response.content == b"Hello B" 1KLMN
181 assert response.headers["content-type"] == text_type 1KLMN
184def test_router_b_override(): 1abcd
185 with client: 1OPQR
186 response = client.get("/b/override") 1OPQR
187 assert response.content == b"Hello B" 1OPQR
188 assert response.headers["content-type"] == html_type 1OPQR
191def test_router_b_a(): 1abcd
192 with client: 1STUV
193 response = client.get("/b/a") 1STUV
194 assert response.content == b"Hello B A" 1STUV
195 assert response.headers["content-type"] == text_type 1STUV
198def test_router_b_a_override(): 1abcd
199 with client: 1WXYZ
200 response = client.get("/b/a/override") 1WXYZ
201 assert response.content == b"Hello B A" 1WXYZ
202 assert response.headers["content-type"] == html_type 1WXYZ
205def test_router_b_a_c(): 1abcd
206 with client: 10123
207 response = client.get("/b/a/c") 10123
208 assert response.content == b"Hello B A C" 10123
209 assert response.headers["content-type"] == html_type 10123
212def test_router_b_a_c_override(): 1abcd
213 with client: 14567
214 response = client.get("/b/a/c/override") 14567
215 assert response.json() == {"msg": "Hello B A C"} 14567
216 assert response.headers["content-type"] == override_type 14567