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