@@ -75,8 +75,8 @@ def test_replace_header_value_by_name(
7575 "scope,expected" ,
7676 [
7777 (
78- {"scheme" : "https" , "server" : ["testserver" , 80 ], "headers" : []},
79- ("https" , "testserver" , 80 ),
78+ {"scheme" : "https" , "server" : ["testserver" , 8000 ], "headers" : []},
79+ ("https" , "testserver" , 8000 ),
8080 ),
8181 (
8282 {
@@ -92,7 +92,7 @@ def test_replace_header_value_by_name(
9292 "server" : ["testserver" , 80 ],
9393 "headers" : [(b"host" , b"testserver" )],
9494 },
95- ("http" , "testserver" , None ),
95+ ("http" , "testserver" , 80 ),
9696 ),
9797 (
9898 {
@@ -108,7 +108,7 @@ def test_replace_header_value_by_name(
108108 "server" : ["testserver" , 80 ],
109109 "headers" : [(b"forwarded" , b"proto=https;host=test:not-an-integer" )],
110110 },
111- ("https" , "test" , 80 ),
111+ ("https" , "test" , 443 ),
112112 ),
113113 (
114114 {
@@ -124,7 +124,7 @@ def test_replace_header_value_by_name(
124124 "server" : ["testserver" , 80 ],
125125 "headers" : [(b"x-forwarded-proto" , b"https" )],
126126 },
127- ("https" , "testserver" , 80 ),
127+ ("https" , "testserver" , 443 ),
128128 ),
129129 (
130130 {
@@ -191,11 +191,90 @@ def test_replace_header_value_by_name(
191191 (
192192 b"forwarded" ,
193193 # proto is set, but no host
194- b'for="85.193.181.55";proto=https,for="85.193.181.55";proto=https ' ,
194+ b'for="85.193.181.55";proto=https' ,
195195 )
196196 ],
197197 },
198- ("https" , "testserver" , 80 ),
198+ ("https" , "testserver" , 443 ),
199+ ),
200+ (
201+ {
202+ "scheme" : "http" ,
203+ "server" : ["testserver" , 8080 ],
204+ "headers" : [
205+ (b"host" , b"example.com:8080" ),
206+ (
207+ b"forwarded" ,
208+ # Forwarded header with proto and host but no port
209+ # Should use default port for https (443), not the original host
210+ # port (8080)
211+ b"proto=https;host=myproxy.com" ,
212+ ),
213+ ],
214+ },
215+ ("https" , "myproxy.com" , 443 ),
216+ ),
217+ (
218+ {
219+ "scheme" : "http" ,
220+ "server" : ["testserver" , 8080 ],
221+ "headers" : [
222+ (b"host" , b"example.com:8080" ),
223+ (
224+ b"forwarded" ,
225+ # Forwarded header with proto and host but no port
226+ # Should use default port for http (80), not the original host
227+ # port (8080)
228+ b"proto=http;host=myproxy.com" ,
229+ ),
230+ ],
231+ },
232+ ("http" , "myproxy.com" , 80 ),
233+ ),
234+ (
235+ {
236+ "scheme" : "http" ,
237+ "server" : ["testserver" , 8080 ],
238+ "headers" : [
239+ (b"host" , b"example.com:8080" ),
240+ (b"x-forwarded-proto" , b"https" ),
241+ (b"x-forwarded-host" , b"myproxy.com" ),
242+ # No x-forwarded-port header
243+ # Should use default port for https (443), not the original host
244+ # port (8080)
245+ ],
246+ },
247+ ("https" , "myproxy.com" , 443 ),
248+ ),
249+ (
250+ {
251+ "scheme" : "http" ,
252+ "server" : ["testserver" , 8080 ],
253+ "headers" : [
254+ (b"host" , b"example.com:8080" ),
255+ (b"x-forwarded-proto" , b"http" ),
256+ (b"x-forwarded-host" , b"myproxy.com" ),
257+ # No x-forwarded-port header
258+ # Should use default port for http (80), not the original host port
259+ # (8080)
260+ ],
261+ },
262+ ("http" , "myproxy.com" , 80 ),
263+ ),
264+ (
265+ {
266+ "scheme" : "http" ,
267+ "server" : ["testserver" , 80 ],
268+ "headers" : [
269+ (b"host" , b"testserver" ),
270+ (b"x-forwarded-proto" , b"https" ),
271+ # No x-forwarded-host (domain stays the same)
272+ # No x-forwarded-port header
273+ # Should use default port for https (443), not the original port (80)
274+ # because the protocol changed
275+ ],
276+ },
277+ ("https" , "testserver" , 443 ),
199278 ),
200279 ],
201280)
0 commit comments