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