@@ -26,15 +26,19 @@ async def test_proxy_fix_legacy() -> None:
2626 (b"x-forwarded-for" , b"127.0.0.1" ),
2727 (b"x-forwarded-for" , b"127.0.0.2" ),
2828 (b"x-forwarded-proto" , b"http,https" ),
29+ (b"x-forwarded-host" , b"example.com" ),
2930 ],
3031 "client" : ("127.0.0.3" , 80 ),
3132 "server" : None ,
3233 "extensions" : {},
3334 }
3435 await app (scope , None , None )
3536 mock .assert_called ()
36- assert mock .call_args [0 ][0 ]["client" ] == ("127.0.0.2" , 0 )
37- assert mock .call_args [0 ][0 ]["scheme" ] == "https"
37+ scope = mock .call_args [0 ][0 ]
38+ assert scope ["client" ] == ("127.0.0.2" , 0 )
39+ assert scope ["scheme" ] == "https"
40+ host_headers = [h for h in scope ["headers" ] if h [0 ].lower () == b"host" ]
41+ assert host_headers == [(b"host" , b"example.com" )]
3842
3943
4044@pytest .mark .asyncio
@@ -52,13 +56,16 @@ async def test_proxy_fix_modern() -> None:
5256 "query_string" : b"" ,
5357 "root_path" : "" ,
5458 "headers" : [
55- (b"forwarded" , b"for=127.0.0.1;proto=http,for=127.0.0.2;proto=https" ),
59+ (b"forwarded" , b"for=127.0.0.1;proto=http,for=127.0.0.2;proto=https;host=example.com " ),
5660 ],
5761 "client" : ("127.0.0.3" , 80 ),
5862 "server" : None ,
5963 "extensions" : {},
6064 }
6165 await app (scope , None , None )
6266 mock .assert_called ()
63- assert mock .call_args [0 ][0 ]["client" ] == ("127.0.0.2" , 0 )
64- assert mock .call_args [0 ][0 ]["scheme" ] == "https"
67+ scope = mock .call_args [0 ][0 ]
68+ assert scope ["client" ] == ("127.0.0.2" , 0 )
69+ assert scope ["scheme" ] == "https"
70+ host_headers = [h for h in scope ["headers" ] if h [0 ].lower () == b"host" ]
71+ assert host_headers == [(b"host" , b"example.com" )]
0 commit comments