@@ -31,6 +31,43 @@ test('', function () {
3131
3232 $ url = $ factory ->fromGlobals ()->getUrl ();
3333 Assert::same ('otherhost ' , $ url ->getHost ());
34+ Assert::same (80 , $ url ->getPort ());
35+ });
36+
37+ test ('' , function () {
38+ $ _SERVER = [
39+ 'REMOTE_ADDR ' => '127.0.0.3 ' ,
40+ 'REMOTE_HOST ' => 'localhost ' ,
41+ 'HTTP_X_FORWARDED_FOR ' => '23.75.45.200 ' ,
42+ 'HTTP_X_FORWARDED_HOST ' => 'otherhost:8080 ' ,
43+ ];
44+
45+ $ factory = new RequestFactory ;
46+ $ factory ->setProxy ('127.0.0.3 ' );
47+ Assert::same ('23.75.45.200 ' , $ factory ->fromGlobals ()->getRemoteAddress ());
48+ Assert::same ('a23-75-45-200.deploy.static.akamaitechnologies.com ' , $ factory ->fromGlobals ()->getRemoteHost ());
49+
50+ $ url = $ factory ->fromGlobals ()->getUrl ();
51+ Assert::same ('otherhost ' , $ url ->getHost ());
52+ Assert::same (8080 , $ url ->getPort ());
53+ });
54+
55+ test ('' , function () {
56+ $ _SERVER = [
57+ 'REMOTE_ADDR ' => '127.0.0.3 ' ,
58+ 'HTTP_X_FORWARDED_FOR ' => '23.75.45.200 ' ,
59+ 'HTTP_X_FORWARDED_HOST ' => 'otherhost ' ,
60+ 'HTTP_X_FORWARDED_PROTO ' => 'https ' ,
61+ 'HTTP_X_FORWARDED_PORT ' => '8080 ' ,
62+ ];
63+
64+ $ factory = new RequestFactory ;
65+ $ factory ->setProxy ('127.0.0.3 ' );
66+
67+ $ url = $ factory ->fromGlobals ()->getUrl ();
68+ Assert::same ('https ' , $ url ->getScheme ());
69+ Assert::same ('otherhost ' , $ url ->getHost ());
70+ Assert::same (8080 , $ url ->getPort ());
3471});
3572
3673test ('' , function () {
@@ -45,10 +82,34 @@ test('', function () {
4582 $ factory ->setProxy ('10.0.0.0/24 ' );
4683 Assert::same ('172.16.0.1 ' , $ factory ->fromGlobals ()->getRemoteAddress ());
4784 Assert::same ('172.16.0.1 ' , $ factory ->fromGlobals ()->getRemoteHost ());
48- Assert::same ('real ' , $ factory ->fromGlobals ()->getUrl ()->getHost ());
85+
86+ $ url = $ factory ->fromGlobals ()->getUrl ();
87+ Assert::same ('real ' , $ url ->getHost ());
88+ Assert::same (80 , $ url ->getPort ());
4989
5090 $ factory ->setProxy (['10.0.0.1 ' , '10.0.0.2 ' ]);
5191 Assert::same ('172.16.0.1 ' , $ factory ->fromGlobals ()->getRemoteAddress ());
5292 Assert::same ('172.16.0.1 ' , $ factory ->fromGlobals ()->getRemoteHost ());
53- Assert::same ('real ' , $ factory ->fromGlobals ()->getUrl ()->getHost ());
93+
94+ $ url = $ factory ->fromGlobals ()->getUrl ();
95+ Assert::same ('real ' , $ url ->getHost ());
96+ Assert::same (80 , $ url ->getPort ());
97+ });
98+
99+ test ('' , function () {
100+ $ _SERVER = [
101+ 'REMOTE_ADDR ' => '10.0.0.2 ' , //proxy2
102+ 'REMOTE_HOST ' => 'proxy2 ' ,
103+ 'HTTP_X_FORWARDED_FOR ' => '123.123.123.123, not-ip.com, 172.16.0.1, 10.0.0.1 ' ,
104+ 'HTTP_X_FORWARDED_HOST ' => 'fake, not-ip.com, real:8080, proxy1 ' ,
105+ ];
106+
107+ $ factory = new RequestFactory ;
108+ $ factory ->setProxy (['10.0.0.1 ' , '10.0.0.2 ' ]);
109+ Assert::same ('172.16.0.1 ' , $ factory ->fromGlobals ()->getRemoteAddress ());
110+ Assert::same ('172.16.0.1 ' , $ factory ->fromGlobals ()->getRemoteHost ());
111+
112+ $ url = $ factory ->fromGlobals ()->getUrl ();
113+ Assert::same ('real ' , $ url ->getHost ());
114+ Assert::same (8080 , $ url ->getPort ());
54115});
0 commit comments