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