Coverage for tests/test_default_response_class_router.py: 100%
135 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-12-04 08:29 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2025-12-04 08:29 +0000
1from fastapi import APIRouter, FastAPI 1abcdefg
2from fastapi.responses import HTMLResponse, JSONResponse, PlainTextResponse 1abcdefg
3from fastapi.testclient import TestClient 1abcdefg
6class OverrideResponse(JSONResponse): 1abcdefg
7 media_type = "application/x-override" 1abcdefg
10app = FastAPI() 1abcdefg
11router_a = APIRouter() 1abcdefg
12router_a_a = APIRouter() 1abcdefg
13router_a_b_override = APIRouter() # Overrides default class 1abcdefg
14router_b_override = APIRouter() # Overrides default class 1abcdefg
15router_b_a = APIRouter() 1abcdefg
16router_b_a_c_override = APIRouter() # Overrides default class again 1abcdefg
19@app.get("/") 1abcdefg
20def get_root(): 1abcdefg
21 return {"msg": "Hello World"} 1hijklmn
24@app.get("/override", response_class=PlainTextResponse) 1abcdefg
25def get_path_override(): 1abcdefg
26 return "Hello World" 1opqrstu
29@router_a.get("/") 1abcdefg
30def get_a(): 1abcdefg
31 return {"msg": "Hello A"} 1vwxyzAB
34@router_a.get("/override", response_class=PlainTextResponse) 1abcdefg
35def get_a_path_override(): 1abcdefg
36 return "Hello A" 1CDEFGHI
39@router_a_a.get("/") 1abcdefg
40def get_a_a(): 1abcdefg
41 return {"msg": "Hello A A"} 1JKLMNOP
44@router_a_a.get("/override", response_class=PlainTextResponse) 1abcdefg
45def get_a_a_path_override(): 1abcdefg
46 return "Hello A A" 1QRSTUVW
49@router_a_b_override.get("/") 1abcdefg
50def get_a_b(): 1abcdefg
51 return "Hello A B" 1XYZ0123
54@router_a_b_override.get("/override", response_class=HTMLResponse) 1abcdefg
55def get_a_b_path_override(): 1abcdefg
56 return "Hello A B" 1456789!
59@router_b_override.get("/") 1abcdefg
60def get_b(): 1abcdefg
61 return "Hello B" 1#$%'()*
64@router_b_override.get("/override", response_class=HTMLResponse) 1abcdefg
65def get_b_path_override(): 1abcdefg
66 return "Hello B" 1+,-./:;
69@router_b_a.get("/") 1abcdefg
70def get_b_a(): 1abcdefg
71 return "Hello B A" 1=?@[]^_
74@router_b_a.get("/override", response_class=HTMLResponse) 1abcdefg
75def get_b_a_path_override(): 1abcdefg
76 return "Hello B A" 2` { | } ~ abbb
79@router_b_a_c_override.get("/") 1abcdefg
80def get_b_a_c(): 1abcdefg
81 return "Hello B A C" 2cbdbebfbgbhbib
84@router_b_a_c_override.get("/override", response_class=OverrideResponse) 1abcdefg
85def get_b_a_c_path_override(): 1abcdefg
86 return {"msg": "Hello B A C"} 2jbkblbmbnbobpb
89router_b_a.include_router( 1abcdefg
90 router_b_a_c_override, prefix="/c", default_response_class=HTMLResponse
91)
92router_b_override.include_router(router_b_a, prefix="/a") 1abcdefg
93router_a.include_router(router_a_a, prefix="/a") 1abcdefg
94router_a.include_router( 1abcdefg
95 router_a_b_override, prefix="/b", default_response_class=PlainTextResponse
96)
97app.include_router(router_a, prefix="/a") 1abcdefg
98app.include_router( 1abcdefg
99 router_b_override, prefix="/b", default_response_class=PlainTextResponse
100)
103client = TestClient(app) 1abcdefg
105json_type = "application/json" 1abcdefg
106text_type = "text/plain; charset=utf-8" 1abcdefg
107html_type = "text/html; charset=utf-8" 1abcdefg
108override_type = "application/x-override" 1abcdefg
111def test_app(): 1abcdefg
112 with client: 1hijklmn
113 response = client.get("/") 1hijklmn
114 assert response.json() == {"msg": "Hello World"} 1hijklmn
115 assert response.headers["content-type"] == json_type 1hijklmn
118def test_app_override(): 1abcdefg
119 with client: 1opqrstu
120 response = client.get("/override") 1opqrstu
121 assert response.content == b"Hello World" 1opqrstu
122 assert response.headers["content-type"] == text_type 1opqrstu
125def test_router_a(): 1abcdefg
126 with client: 1vwxyzAB
127 response = client.get("/a") 1vwxyzAB
128 assert response.json() == {"msg": "Hello A"} 1vwxyzAB
129 assert response.headers["content-type"] == json_type 1vwxyzAB
132def test_router_a_override(): 1abcdefg
133 with client: 1CDEFGHI
134 response = client.get("/a/override") 1CDEFGHI
135 assert response.content == b"Hello A" 1CDEFGHI
136 assert response.headers["content-type"] == text_type 1CDEFGHI
139def test_router_a_a(): 1abcdefg
140 with client: 1JKLMNOP
141 response = client.get("/a/a") 1JKLMNOP
142 assert response.json() == {"msg": "Hello A A"} 1JKLMNOP
143 assert response.headers["content-type"] == json_type 1JKLMNOP
146def test_router_a_a_override(): 1abcdefg
147 with client: 1QRSTUVW
148 response = client.get("/a/a/override") 1QRSTUVW
149 assert response.content == b"Hello A A" 1QRSTUVW
150 assert response.headers["content-type"] == text_type 1QRSTUVW
153def test_router_a_b(): 1abcdefg
154 with client: 1XYZ0123
155 response = client.get("/a/b") 1XYZ0123
156 assert response.content == b"Hello A B" 1XYZ0123
157 assert response.headers["content-type"] == text_type 1XYZ0123
160def test_router_a_b_override(): 1abcdefg
161 with client: 1456789!
162 response = client.get("/a/b/override") 1456789!
163 assert response.content == b"Hello A B" 1456789!
164 assert response.headers["content-type"] == html_type 1456789!
167def test_router_b(): 1abcdefg
168 with client: 1#$%'()*
169 response = client.get("/b") 1#$%'()*
170 assert response.content == b"Hello B" 1#$%'()*
171 assert response.headers["content-type"] == text_type 1#$%'()*
174def test_router_b_override(): 1abcdefg
175 with client: 1+,-./:;
176 response = client.get("/b/override") 1+,-./:;
177 assert response.content == b"Hello B" 1+,-./:;
178 assert response.headers["content-type"] == html_type 1+,-./:;
181def test_router_b_a(): 1abcdefg
182 with client: 1=?@[]^_
183 response = client.get("/b/a") 1=?@[]^_
184 assert response.content == b"Hello B A" 1=?@[]^_
185 assert response.headers["content-type"] == text_type 1=?@[]^_
188def test_router_b_a_override(): 1abcdefg
189 with client: 2` { | } ~ abbb
190 response = client.get("/b/a/override") 2` { | } ~ abbb
191 assert response.content == b"Hello B A" 2` { | } ~ abbb
192 assert response.headers["content-type"] == html_type 2` { | } ~ abbb
195def test_router_b_a_c(): 1abcdefg
196 with client: 2cbdbebfbgbhbib
197 response = client.get("/b/a/c") 2cbdbebfbgbhbib
198 assert response.content == b"Hello B A C" 2cbdbebfbgbhbib
199 assert response.headers["content-type"] == html_type 2cbdbebfbgbhbib
202def test_router_b_a_c_override(): 1abcdefg
203 with client: 2jbkblbmbnbobpb
204 response = client.get("/b/a/c/override") 2jbkblbmbnbobpb
205 assert response.json() == {"msg": "Hello B A C"} 2jbkblbmbnbobpb
206 assert response.headers["content-type"] == override_type 2jbkblbmbnbobpb