From 6a2777fc6d86a165e29c018d26bd13f2125c0e16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Somogyi=20M=C3=A1rton?= Date: Sat, 5 Oct 2019 22:54:17 +0200 Subject: [PATCH] Add Request tests for already resolved IP case #17521 (#17594) --- tests/framework/web/RequestTest.php | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tests/framework/web/RequestTest.php b/tests/framework/web/RequestTest.php index ed9a7b819e..b2ab8c6df2 100644 --- a/tests/framework/web/RequestTest.php +++ b/tests/framework/web/RequestTest.php @@ -778,4 +778,45 @@ class RequestTest extends TestCase $this->assertSame($expectedMethod, $request->getMethod()); } + + public function alreadyResolvedIpDataProvider() { + return [ + 'resolvedXForwardedFor' => [ + '50.0.0.1', + '1.1.1.1, 8.8.8.8, 9.9.9.9', + 'http', + ['0.0.0.0/0'], + // checks: + '50.0.0.1', + '50.0.0.1', + false, + ], + 'resolvedXForwardedForWithHttps' => [ + '50.0.0.1', + '1.1.1.1, 8.8.8.8, 9.9.9.9', + 'https', + ['0.0.0.0/0'], + // checks: + '50.0.0.1', + '50.0.0.1', + true, + ], + ]; + } + + /** + * @dataProvider alreadyResolvedIpDataProvider + */ + public function testAlreadyResolvedIp($remoteAddress, $xForwardedFor, $xForwardedProto, $trustedHosts, $expectedRemoteAddress, $expectedUserIp, $expectedIsSecureConnection) { + $_SERVER['REMOTE_ADDR'] = $remoteAddress; + $_SERVER['HTTP_X_FORWARDED_FOR'] = $xForwardedFor; + $_SERVER['HTTP_X_FORWARDED_PROTO'] = $xForwardedProto; + $request = new Request([ + 'trustedHosts' => $trustedHosts, + 'ipHeaders' => [] + ]); + $this->assertSame($expectedRemoteAddress, $request->remoteIP, 'Remote IP fail!'); + $this->assertSame($expectedUserIp, $request->userIP, 'User IP fail!'); + $this->assertSame($expectedIsSecureConnection, $request->isSecureConnection, 'Secure connection fail!'); + } }