Coverage for tests/test_query_cookie_header_model_extra_params.py: 100%
52 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 Cookie, FastAPI, Header, Query 1abcdefg
2from fastapi._compat import PYDANTIC_V2 1abcdefg
3from fastapi.testclient import TestClient 1abcdefg
4from pydantic import BaseModel 1abcdefg
6app = FastAPI() 1abcdefg
9class Model(BaseModel): 1abcdefg
10 param: str 1abcdefg
12 if PYDANTIC_V2: 1abcdefg
13 model_config = {"extra": "allow"} 1abcdefg
14 else:
16 class Config: 1abcdef
17 extra = "allow" 1abcdef
20@app.get("/query") 1abcdefg
21async def query_model_with_extra(data: Model = Query()): 1abcdefg
22 return data 1CDEFGHIJKLMNOP
25@app.get("/header") 1abcdefg
26async def header_model_with_extra(data: Model = Header()): 1abcdefg
27 return data 1opqrstuvwxyzAB
30@app.get("/cookie") 1abcdefg
31async def cookies_model_with_extra(data: Model = Cookie()): 1abcdefg
32 return data 1hijklmn
35def test_query_pass_extra_list(): 1abcdefg
36 client = TestClient(app) 1CEGIKMO
37 resp = client.get( 1CEGIKMO
38 "/query",
39 params={
40 "param": "123",
41 "param2": ["456", "789"], # Pass a list of values as extra parameter
42 },
43 )
44 assert resp.status_code == 200 1CEGIKMO
45 assert resp.json() == { 1CEGIKMO
46 "param": "123",
47 "param2": ["456", "789"],
48 }
51def test_query_pass_extra_single(): 1abcdefg
52 client = TestClient(app) 1DFHJLNP
53 resp = client.get( 1DFHJLNP
54 "/query",
55 params={
56 "param": "123",
57 "param2": "456",
58 },
59 )
60 assert resp.status_code == 200 1DFHJLNP
61 assert resp.json() == { 1DFHJLNP
62 "param": "123",
63 "param2": "456",
64 }
67def test_header_pass_extra_list(): 1abcdefg
68 client = TestClient(app) 1oqsuwyA
70 resp = client.get( 1oqsuwyA
71 "/header",
72 headers=[
73 ("param", "123"),
74 ("param2", "456"), # Pass a list of values as extra parameter
75 ("param2", "789"),
76 ],
77 )
78 assert resp.status_code == 200 1oqsuwyA
79 resp_json = resp.json() 1oqsuwyA
80 assert "param2" in resp_json 1oqsuwyA
81 assert resp_json["param2"] == ["456", "789"] 1oqsuwyA
84def test_header_pass_extra_single(): 1abcdefg
85 client = TestClient(app) 1prtvxzB
87 resp = client.get( 1prtvxzB
88 "/header",
89 headers=[
90 ("param", "123"),
91 ("param2", "456"),
92 ],
93 )
94 assert resp.status_code == 200 1prtvxzB
95 resp_json = resp.json() 1prtvxzB
96 assert "param2" in resp_json 1prtvxzB
97 assert resp_json["param2"] == "456" 1prtvxzB
100def test_cookie_pass_extra_list(): 1abcdefg
101 client = TestClient(app) 1hijklmn
102 client.cookies = [ 1hijklmn
103 ("param", "123"),
104 ("param2", "456"), # Pass a list of values as extra parameter
105 ("param2", "789"),
106 ]
107 resp = client.get("/cookie") 1hijklmn
108 assert resp.status_code == 200 1hijklmn
109 resp_json = resp.json() 1hijklmn
110 assert "param2" in resp_json 1hijklmn
111 assert resp_json["param2"] == "789" # Cookies only keep the last value 1hijklmn