Merge "Normalize PHPDoc attributes"
[lhc/web/wiklou.git] / tests / phpunit / includes / WebRequestTest.php
index aade490..9583921 100644 (file)
@@ -10,12 +10,10 @@ class WebRequestTest extends MediaWikiTestCase {
                parent::setUp();
 
                $this->oldServer = $_SERVER;
-               IP::clearCaches();
        }
 
        protected function tearDown() {
                $_SERVER = $this->oldServer;
-               IP::clearCaches();
 
                parent::tearDown();
        }
@@ -28,7 +26,7 @@ class WebRequestTest extends MediaWikiTestCase {
        public function testDetectServer( $expected, $input, $description ) {
                $this->setMwGlobals( 'wgAssumeProxiesUseDefaultProtocolPorts', true );
 
-               $_SERVER = $input;
+               $this->setServerVars( $input );
                $result = WebRequest::detectServer();
                $this->assertEquals( $expected, $result, $description );
        }
@@ -128,7 +126,7 @@ class WebRequestTest extends MediaWikiTestCase {
        protected function mockWebRequest( $data = [] ) {
                // Cannot use PHPUnit getMockBuilder() as it does not support
                // overriding protected properties afterwards
-               $reflection = new ReflectionClass( 'WebRequest' );
+               $reflection = new ReflectionClass( WebRequest::class );
                $req = $reflection->newInstanceWithoutConstructor();
 
                $prop = $reflection->getProperty( 'data' );
@@ -365,9 +363,8 @@ class WebRequestTest extends MediaWikiTestCase {
         * @covers WebRequest::getIP
         */
        public function testGetIP( $expected, $input, $squid, $xffList, $private, $description ) {
-               $_SERVER = $input;
+               $this->setServerVars( $input );
                $this->setMwGlobals( [
-                       'wgSquidServersNoPurge' => $squid,
                        'wgUsePrivateIPs' => $private,
                        'wgHooks' => [
                                'IsTrustedProxy' => [
@@ -379,6 +376,8 @@ class WebRequestTest extends MediaWikiTestCase {
                        ]
                ] );
 
+               $this->setService( 'ProxyLookup', new ProxyLookup( [], $squid ) );
+
                $request = new WebRequest();
                $result = $request->getIP();
                $this->assertEquals( $expected, $result, $description );
@@ -564,6 +563,7 @@ class WebRequestTest extends MediaWikiTestCase {
                        'wgUsePrivateIPs' => false,
                        'wgHooks' => [],
                ] );
+               $this->setService( 'ProxyLookup', new ProxyLookup( [], [] ) );
 
                $request = new WebRequest();
                # Next call throw an exception about lacking an IP
@@ -608,8 +608,19 @@ class WebRequestTest extends MediaWikiTestCase {
         * @covers WebRequest::getAcceptLang
         */
        public function testAcceptLang( $acceptLanguageHeader, $expectedLanguages, $description ) {
-               $_SERVER = [ 'HTTP_ACCEPT_LANGUAGE' => $acceptLanguageHeader ];
+               $this->setServerVars( [ 'HTTP_ACCEPT_LANGUAGE' => $acceptLanguageHeader ] );
                $request = new WebRequest();
                $this->assertSame( $request->getAcceptLang(), $expectedLanguages, $description );
        }
+
+       protected function setServerVars( $vars ) {
+               // Don't remove vars which should be available in all SAPI.
+               if ( !isset( $vars['REQUEST_TIME_FLOAT'] ) ) {
+                       $vars['REQUEST_TIME_FLOAT'] = $_SERVER['REQUEST_TIME_FLOAT'];
+               }
+               if ( !isset( $vars['REQUEST_TIME'] ) ) {
+                       $vars['REQUEST_TIME'] = $_SERVER['REQUEST_TIME'];
+               }
+               $_SERVER = $vars;
+       }
 }