X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fsession%2FCookieSessionProviderTest.php;h=659826fb53b018eecae1242f37db4ec49a6523d6;hb=cf9fc81e9669b6c016c044de57ad2bdd5113d167;hp=e5df4588025102030599de4f8b59aecbd5ed911d;hpb=84d2a06fc40435e1c0063610c05e91e1b90b03e9;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/session/CookieSessionProviderTest.php b/tests/phpunit/includes/session/CookieSessionProviderTest.php index e5df458802..659826fb53 100644 --- a/tests/phpunit/includes/session/CookieSessionProviderTest.php +++ b/tests/phpunit/includes/session/CookieSessionProviderTest.php @@ -4,6 +4,7 @@ namespace MediaWiki\Session; use MediaWikiTestCase; use User; +use Psr\Log\LogLevel; /** * @group Session @@ -159,7 +160,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { 'cookieOptions' => array( 'prefix' => 'x' ), ); $provider = new CookieSessionProvider( $params ); - $provider->setLogger( new \TestLogger() ); + $logger = new \TestLogger( true ); + $provider->setLogger( $logger ); $provider->setConfig( $this->getConfig() ); $provider->setManager( new SessionManager() ); @@ -174,6 +176,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $request = new \FauxRequest(); $info = $provider->provideSessionInfo( $request ); $this->assertNull( $info ); + $this->assertSame( array(), $logger->getBuffer() ); + $logger->clearBuffer(); // Session key only $request = new \FauxRequest(); @@ -188,6 +192,13 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $this->assertSame( 0, $info->getUserInfo()->getId() ); $this->assertNull( $info->getUserInfo()->getName() ); $this->assertFalse( $info->forceHTTPS() ); + $this->assertSame( array( + array( + LogLevel::DEBUG, + 'Session "{session}" requested without UserID cookie', + ), + ), $logger->getBuffer() ); + $logger->clearBuffer(); // User, no session key $request = new \FauxRequest(); @@ -203,6 +214,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $this->assertSame( $id, $info->getUserInfo()->getId() ); $this->assertSame( $name, $info->getUserInfo()->getName() ); $this->assertFalse( $info->forceHTTPS() ); + $this->assertSame( array(), $logger->getBuffer() ); + $logger->clearBuffer(); // User and session key $request = new \FauxRequest(); @@ -219,6 +232,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $this->assertSame( $id, $info->getUserInfo()->getId() ); $this->assertSame( $name, $info->getUserInfo()->getName() ); $this->assertFalse( $info->forceHTTPS() ); + $this->assertSame( array(), $logger->getBuffer() ); + $logger->clearBuffer(); // User with bad token $request = new \FauxRequest(); @@ -229,6 +244,13 @@ class CookieSessionProviderTest extends MediaWikiTestCase { ), '' ); $info = $provider->provideSessionInfo( $request ); $this->assertNull( $info ); + $this->assertSame( array( + array( + LogLevel::WARNING, + 'Session "{session}" requested with invalid Token cookie.' + ), + ), $logger->getBuffer() ); + $logger->clearBuffer(); // User id with no token $request = new \FauxRequest(); @@ -245,6 +267,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $this->assertSame( $id, $info->getUserInfo()->getId() ); $this->assertSame( $name, $info->getUserInfo()->getName() ); $this->assertFalse( $info->forceHTTPS() ); + $this->assertSame( array(), $logger->getBuffer() ); + $logger->clearBuffer(); $request = new \FauxRequest(); $request->setCookies( array( @@ -252,6 +276,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { ), '' ); $info = $provider->provideSessionInfo( $request ); $this->assertNull( $info ); + $this->assertSame( array(), $logger->getBuffer() ); + $logger->clearBuffer(); // User and session key, with forceHTTPS flag $request = new \FauxRequest(); @@ -269,6 +295,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $this->assertSame( $id, $info->getUserInfo()->getId() ); $this->assertSame( $name, $info->getUserInfo()->getName() ); $this->assertTrue( $info->forceHTTPS() ); + $this->assertSame( array(), $logger->getBuffer() ); + $logger->clearBuffer(); // Invalid user id $request = new \FauxRequest(); @@ -278,6 +306,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { ), '' ); $info = $provider->provideSessionInfo( $request ); $this->assertNull( $info ); + $this->assertSame( array(), $logger->getBuffer() ); + $logger->clearBuffer(); // User id with matching name $request = new \FauxRequest(); @@ -295,6 +325,8 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $this->assertSame( $id, $info->getUserInfo()->getId() ); $this->assertSame( $name, $info->getUserInfo()->getName() ); $this->assertFalse( $info->forceHTTPS() ); + $this->assertSame( array(), $logger->getBuffer() ); + $logger->clearBuffer(); // User id with wrong name $request = new \FauxRequest(); @@ -305,6 +337,13 @@ class CookieSessionProviderTest extends MediaWikiTestCase { ), '' ); $info = $provider->provideSessionInfo( $request ); $this->assertNull( $info ); + $this->assertSame( array( + array( + LogLevel::WARNING, + 'Session "{session}" requested with mismatched UserID and UserName cookies.', + ), + ), $logger->getBuffer() ); + $logger->clearBuffer(); } public function testGetVaryCookies() { @@ -352,7 +391,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $provider->setManager( SessionManager::singleton() ); $sessionId = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; - $store = new \HashBagOStuff(); + $store = new TestBagOStuff(); $user = User::newFromName( 'UTSysop' ); $anon = new User; @@ -365,7 +404,6 @@ class CookieSessionProviderTest extends MediaWikiTestCase { 'idIsSafe' => true, ) ), $store, - $store, new \Psr\Log\NullLogger(), 10 ); @@ -451,8 +489,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase { 'persisted' => true, 'idIsSafe' => true, ) ), - new \EmptyBagOStuff(), - new \EmptyBagOStuff(), + new TestBagOStuff(), new \Psr\Log\NullLogger(), 10 ); @@ -531,8 +568,6 @@ class CookieSessionProviderTest extends MediaWikiTestCase { } public function testPersistSessionWithHook() { - $that = $this; - $provider = new CookieSessionProvider( array( 'priority' => 1, 'sessionName' => 'MySessionName', @@ -544,7 +579,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase { $provider->setManager( SessionManager::singleton() ); $sessionId = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; - $store = new \HashBagOStuff(); + $store = new TestBagOStuff(); $user = User::newFromName( 'UTSysop' ); $anon = new User; @@ -557,7 +592,6 @@ class CookieSessionProviderTest extends MediaWikiTestCase { 'idIsSafe' => true, ) ), $store, - $store, new \Psr\Log\NullLogger(), 10 ); @@ -584,14 +618,14 @@ class CookieSessionProviderTest extends MediaWikiTestCase { // Logged-in user, no remember $mock = $this->getMock( __CLASS__, array( 'onUserSetCookies' ) ); $mock->expects( $this->once() )->method( 'onUserSetCookies' ) - ->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $that, $user ) { - $that->assertSame( $user, $u ); - $that->assertEquals( array( + ->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $user ) { + $this->assertSame( $user, $u ); + $this->assertEquals( array( 'wsUserID' => $user->getId(), 'wsUserName' => $user->getName(), 'wsToken' => $user->getToken(), ), $sessionData ); - $that->assertEquals( array( + $this->assertEquals( array( 'UserID' => $user->getId(), 'UserName' => $user->getName(), 'Token' => false, @@ -627,14 +661,14 @@ class CookieSessionProviderTest extends MediaWikiTestCase { // Logged-in user, remember $mock = $this->getMock( __CLASS__, array( 'onUserSetCookies' ) ); $mock->expects( $this->once() )->method( 'onUserSetCookies' ) - ->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $that, $user ) { - $that->assertSame( $user, $u ); - $that->assertEquals( array( + ->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $user ) { + $this->assertSame( $user, $u ); + $this->assertEquals( array( 'wsUserID' => $user->getId(), 'wsUserName' => $user->getName(), 'wsToken' => $user->getToken(), ), $sessionData ); - $that->assertEquals( array( + $this->assertEquals( array( 'UserID' => $user->getId(), 'UserName' => $user->getName(), 'Token' => $user->getToken(),