X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fsession%2FCookieSessionProviderTest.php;h=73485c828c6072e0173a08a809932cc8802ad192;hp=b35b6850df09ac6072a00cb5e08841c81d0ef09d;hb=424251a2cb5842727756d96f877c787c443ea056;hpb=941827459f9a1c5ad3b696666daa9d55a1583660 diff --git a/tests/phpunit/includes/session/CookieSessionProviderTest.php b/tests/phpunit/includes/session/CookieSessionProviderTest.php index b35b6850df..73485c828c 100644 --- a/tests/phpunit/includes/session/CookieSessionProviderTest.php +++ b/tests/phpunit/includes/session/CookieSessionProviderTest.php @@ -22,7 +22,6 @@ class CookieSessionProviderTest extends MediaWikiTestCase { 'CookieHttpOnly' => true, 'SessionName' => false, 'CookieExpiration' => 100, - 'ExtendedLoginCookies' => [ 'UserID', 'Token' ], 'ExtendedLoginCookieExpiration' => 200, ] ); } @@ -148,6 +147,14 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $this->assertTrue( $provider->persistsSessionId() ); $this->assertTrue( $provider->canChangeUser() ); + $extendedCookies = [ 'UserID', 'UserName', 'Token' ]; + + $this->assertEquals( + $extendedCookies, + \TestingAccessWrapper::newFromObject( $provider )->getExtendedLoginCookies(), + 'List of extended cookies (subclasses can add values, but we\'re calling the core one here)' + ); + $msg = $provider->whyNoSession(); $this->assertInstanceOf( 'Message', $msg ); $this->assertSame( 'sessionprovider-nocookies', $msg->getKey() ); @@ -407,7 +414,9 @@ class CookieSessionProviderTest extends MediaWikiTestCase { ); \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false; - $mock = $this->getMock( 'stdClass', [ 'onUserSetCookies' ] ); + $mock = $this->getMockBuilder( 'stdClass' ) + ->setMethods( [ 'onUserSetCookies' ] ) + ->getMock(); $mock->expects( $this->never() )->method( 'onUserSetCookies' ); $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'UserSetCookies' => [ $mock ] ] ); @@ -506,10 +515,10 @@ class CookieSessionProviderTest extends MediaWikiTestCase { 'httpOnly' => $config->get( 'CookieHttpOnly' ), 'raw' => false, ]; + + $normalExpiry = $config->get( 'CookieExpiration' ); $extendedExpiry = $config->get( 'ExtendedLoginCookieExpiration' ); $extendedExpiry = (int)( $extendedExpiry === null ? 0 : $extendedExpiry ); - $this->assertEquals( [ 'UserID', 'Token' ], $config->get( 'ExtendedLoginCookies' ), - 'sanity check' ); $expect = [ 'MySessionName' => [ 'value' => (string)$sessionId, @@ -517,10 +526,11 @@ class CookieSessionProviderTest extends MediaWikiTestCase { ] + $defaults, 'xUserID' => [ 'value' => (string)$user->getId(), - 'expire' => $extendedExpiry, + 'expire' => $remember ? $extendedExpiry : $normalExpiry, ] + $defaults, 'xUserName' => [ 'value' => $user->getName(), + 'expire' => $remember ? $extendedExpiry : $normalExpiry ] + $defaults, 'xToken' => [ 'value' => $remember ? $user->getToken() : '', @@ -552,13 +562,15 @@ class CookieSessionProviderTest extends MediaWikiTestCase { } protected function getSentRequest() { - $sentResponse = $this->getMock( 'FauxResponse', [ 'headersSent', 'setCookie', 'header' ] ); + $sentResponse = $this->getMockBuilder( 'FauxResponse' ) + ->setMethods( [ 'headersSent', 'setCookie', 'header' ] )->getMock(); $sentResponse->expects( $this->any() )->method( 'headersSent' ) ->will( $this->returnValue( true ) ); $sentResponse->expects( $this->never() )->method( 'setCookie' ); $sentResponse->expects( $this->never() )->method( 'header' ); - $sentRequest = $this->getMock( 'FauxRequest', [ 'response' ] ); + $sentRequest = $this->getMockBuilder( 'FauxRequest' ) + ->setMethods( [ 'response' ] )->getMock(); $sentRequest->expects( $this->any() )->method( 'response' ) ->will( $this->returnValue( $sentResponse ) ); return $sentRequest; @@ -595,7 +607,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false; // Anonymous user - $mock = $this->getMock( 'stdClass', [ 'onUserSetCookies' ] ); + $mock = $this->getMockBuilder( 'stdClass' ) + ->setMethods( [ 'onUserSetCookies' ] )->getMock(); $mock->expects( $this->never() )->method( 'onUserSetCookies' ); $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'UserSetCookies' => [ $mock ] ] ); $backend->setUser( $anon ); @@ -613,7 +626,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $provider->persistSession( $backend, $this->getSentRequest() ); // Logged-in user, no remember - $mock = $this->getMock( __CLASS__, [ 'onUserSetCookies' ] ); + $mock = $this->getMockBuilder( __CLASS__ ) + ->setMethods( [ 'onUserSetCookies' ] )->getMock(); $mock->expects( $this->once() )->method( 'onUserSetCookies' ) ->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $user ) { $this->assertSame( $user, $u ); @@ -656,7 +670,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $provider->persistSession( $backend, $this->getSentRequest() ); // Logged-in user, remember - $mock = $this->getMock( __CLASS__, [ 'onUserSetCookies' ] ); + $mock = $this->getMockBuilder( __CLASS__ ) + ->setMethods( [ 'onUserSetCookies' ] )->getMock(); $mock->expects( $this->once() )->method( 'onUserSetCookies' ) ->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $user ) { $this->assertSame( $user, $u ); @@ -807,12 +822,20 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $provider->setConfig( $config ); $provider->setManager( SessionManager::singleton() ); - $this->assertSame( 200, $provider->getLoginCookieExpiration( 'Token' ) ); - $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User' ) ); + // First cookie is an extended cookie, remember me true + $this->assertSame( 200, $provider->getLoginCookieExpiration( 'Token', true ) ); + $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User', true ) ); + + // First cookie is an extended cookie, remember me false + $this->assertSame( 100, $provider->getLoginCookieExpiration( 'UserID', false ) ); + $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User', false ) ); $config->set( 'ExtendedLoginCookieExpiration', null ); - $this->assertSame( 100, $provider->getLoginCookieExpiration( 'Token' ) ); - $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User' ) ); + $this->assertSame( 100, $provider->getLoginCookieExpiration( 'Token', true ) ); + $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User', true ) ); + + $this->assertSame( 100, $provider->getLoginCookieExpiration( 'Token', false ) ); + $this->assertSame( 100, $provider->getLoginCookieExpiration( 'User', false ) ); } }