1- from typing import Optional
1+ from typing import Annotated , Optional
22
33import pytest
44from pydantic import ConfigDict
@@ -26,26 +26,53 @@ def headers1(request, user_agent: str = Header(...)):
2626 return user_agent
2727
2828
29+ @router .get ("/headers1_annotated" )
30+ def headers1_annotated (request , user_agent : Annotated [str , Header (...)]):
31+ return user_agent
32+
33+
2934@router .get ("/headers2" )
3035def headers2 (request , ua : str = Header (..., alias = "User-Agent" )):
3136 return ua
3237
3338
39+ @router .get ("/headers2_annotated" )
40+ def headers2_annotated (request , ua : Annotated [str , Header (..., alias = "User-Agent" )]):
41+ return ua
42+
43+
3444@router .get ("/headers3" )
3545def headers3 (request , content_length : int = Header (...)):
3646 return content_length
3747
3848
49+ @router .get ("/headers3_annotated" )
50+ def headers3_annotated (request , content_length : Annotated [int , Header (...)]):
51+ return content_length
52+
53+
3954@router .get ("/headers4" )
4055def headers4 (request , c_len : int = Header (..., alias = "Content-length" )):
4156 return c_len
4257
4358
59+ @router .get ("/headers4_annotated" )
60+ def headers4_annotated (
61+ request , c_len : Annotated [int , Header (..., alias = "Content-length" )]
62+ ):
63+ return c_len
64+
65+
4466@router .get ("/headers5" )
4567def headers5 (request , missing : int = Header (...)):
4668 return missing
4769
4870
71+ @router .get ("/headers5_annotated" )
72+ def headers5_annotated (request , missing : Annotated [int , Header (...)]):
73+ return missing
74+
75+
4976@router .get ("/cookies1" )
5077def cookies1 (request , weapon : str = Cookie (...)):
5178 return weapon
@@ -68,9 +95,13 @@ def schema(request, payload: ExtraForbidSchema = Body(...)):
6895 "path,expected_status,expected_response" ,
6996 [
7097 ("/headers1" , 200 , "Ninja" ),
98+ ("/headers1_annotated" , 200 , "Ninja" ),
7199 ("/headers2" , 200 , "Ninja" ),
100+ ("/headers2_annotated" , 200 , "Ninja" ),
72101 ("/headers3" , 200 , 10 ),
102+ ("/headers3_annotated" , 200 , 10 ),
73103 ("/headers4" , 200 , 10 ),
104+ ("/headers4_annotated" , 200 , 10 ),
74105 (
75106 "/headers5" ,
76107 422 ,
@@ -84,6 +115,19 @@ def schema(request, payload: ExtraForbidSchema = Body(...)):
84115 ]
85116 },
86117 ),
118+ (
119+ "/headers5_annotated" ,
120+ 422 ,
121+ {
122+ "detail" : [
123+ {
124+ "type" : "missing" ,
125+ "loc" : ["header" , "missing" ],
126+ "msg" : "Field required" ,
127+ }
128+ ]
129+ },
130+ ),
87131 ("/cookies1" , 200 , "shuriken" ),
88132 ("/cookies2" , 200 , "shuriken" ),
89133 ],
0 commit comments