X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fauth%2FAuthManagerTest.php;h=802e4ae5d17d9cd81b39bcfa69a63c656118d451;hb=4eff5204d9ec6eb09df70d2fe017a2146cfa4238;hp=f57db11b236987fb41d227d187f0e41fd6b41b2d;hpb=dcdb8e463e3b2be121c61c91df13ea36d270a602;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/auth/AuthManagerTest.php b/tests/phpunit/includes/auth/AuthManagerTest.php index f57db11b23..b8f7b733b6 100644 --- a/tests/phpunit/includes/auth/AuthManagerTest.php +++ b/tests/phpunit/includes/auth/AuthManagerTest.php @@ -7,6 +7,7 @@ use MediaWiki\Session\UserInfo; use Psr\Log\LogLevel; use StatusValue; use Wikimedia\ScopedCallback; +use Wikimedia\TestingAccessWrapper; /** * @group AuthManager @@ -45,7 +46,9 @@ class AuthManagerTest extends \MediaWikiTestCase { */ protected function hook( $hook, $expect ) { global $wgHooks; - $mock = $this->getMock( __CLASS__, [ "on$hook" ] ); + $mock = $this->getMockBuilder( __CLASS__ ) + ->setMethods( [ "on$hook" ] ) + ->getMock(); $wgHooks[$hook] = [ $mock ]; return $mock->expects( $expect )->method( "on$hook" ); } @@ -125,7 +128,7 @@ class AuthManagerTest extends \MediaWikiTestCase { } $this->manager = new AuthManager( $this->request, $this->config ); $this->manager->setLogger( $this->logger ); - $this->managerPriv = \TestingAccessWrapper::newFromObject( $this->manager ); + $this->managerPriv = TestingAccessWrapper::newFromObject( $this->manager ); } /** @@ -146,7 +149,7 @@ class AuthManagerTest extends \MediaWikiTestCase { if ( $canChangeUser !== null ) { $methods[] = 'canChangeUser'; } - $provider = $this->getMockBuilder( 'DummySessionProvider' ) + $provider = $this->getMockBuilder( \DummySessionProvider::class ) ->setMethods( $methods ) ->getMock(); $provider->expects( $this->any() )->method( '__toString' ) @@ -168,7 +171,7 @@ class AuthManagerTest extends \MediaWikiTestCase { 'logger' => new \Psr\Log\NullLogger(), 'store' => new \HashBagOStuff(), ] ); - \TestingAccessWrapper::newFromObject( $manager )->getProvider( (string)$provider ); + TestingAccessWrapper::newFromObject( $manager )->getProvider( (string)$provider ); $reset = \MediaWiki\Session\TestUtils::setSessionManagerSingleton( $manager ); @@ -194,7 +197,7 @@ class AuthManagerTest extends \MediaWikiTestCase { $this->assertSame( \RequestContext::getMain()->getRequest(), $singleton->getRequest() ); $this->assertSame( \RequestContext::getMain()->getConfig(), - \TestingAccessWrapper::newFromObject( $singleton )->config + TestingAccessWrapper::newFromObject( $singleton )->config ); } @@ -608,7 +611,7 @@ class AuthManagerTest extends \MediaWikiTestCase { $this->assertSame( 'de', $user->getOption( 'language' ) ); $this->assertSame( 'zh', $user->getOption( 'variant' ) ); - $this->setMwGlobals( 'wgContLang', \Language::factory( 'en' ) ); + $this->setMwGlobals( 'wgContLang', \Language::factory( 'fr' ) ); $user = \User::newFromName( self::usernameForCreation() ); $user->addToDatabase(); @@ -762,9 +765,9 @@ class AuthManagerTest extends \MediaWikiTestCase { public function testCreateFromLogin() { $user = \User::newFromName( 'UTSysop' ); - $req1 = $this->getMock( AuthenticationRequest::class ); - $req2 = $this->getMock( AuthenticationRequest::class ); - $req3 = $this->getMock( AuthenticationRequest::class ); + $req1 = $this->createMock( AuthenticationRequest::class ); + $req2 = $this->createMock( AuthenticationRequest::class ); + $req3 = $this->createMock( AuthenticationRequest::class ); $userReq = new UsernameAuthenticationRequest; $userReq->username = 'UTDummy'; @@ -965,7 +968,7 @@ class AuthManagerTest extends \MediaWikiTestCase { $p->expects( $this->atMost( 1 ) )->method( 'postAuthentication' ) ->willReturnCallback( function ( $user, $response ) use ( $constraint, $p ) { if ( $user !== null ) { - $this->assertInstanceOf( 'User', $user ); + $this->assertInstanceOf( \User::class, $user ); $this->assertSame( 'UTSysop', $user->getName() ); } $this->assertInstanceOf( AuthenticationResponse::class, $response ); @@ -1083,10 +1086,6 @@ class AuthManagerTest extends \MediaWikiTestCase { } public function provideAuthentication() { - $user = \User::newFromName( 'UTSysop' ); - $id = $user->getId(); - $name = $user->getName(); - $rememberReq = new RememberMeAuthenticationRequest; $rememberReq->action = AuthManager::ACTION_LOGIN; @@ -1108,6 +1107,8 @@ class AuthManagerTest extends \MediaWikiTestCase { $restartResponse2->createRequest->action = AuthManager::ACTION_LOGIN; $restartResponse2->neededRequests = [ $rememberReq, $restartResponse2->createRequest ]; + $userName = 'UTSysop'; + return [ 'Failure in pre-auth' => [ StatusValue::newFatal( 'fail-from-pre' ), @@ -1202,7 +1203,7 @@ class AuthManagerTest extends \MediaWikiTestCase { 'Secondary fail' => [ StatusValue::newGood(), [ - AuthenticationResponse::newPass( $name ), + AuthenticationResponse::newPass( $userName ), ], $tmp = [ AuthenticationResponse::newFail( $this->message( 'fail-in-secondary' ) ), @@ -1212,7 +1213,7 @@ class AuthManagerTest extends \MediaWikiTestCase { 'Secondary UI, then abstain' => [ StatusValue::newGood(), [ - AuthenticationResponse::newPass( $name ), + AuthenticationResponse::newPass( $userName ), ], [ $tmp = AuthenticationResponse::newUI( [ $req ], $this->message( '...' ) ), @@ -1220,19 +1221,19 @@ class AuthManagerTest extends \MediaWikiTestCase { ], [ $tmp, - AuthenticationResponse::newPass( $name ), + AuthenticationResponse::newPass( $userName ), ] ], 'Secondary pass' => [ StatusValue::newGood(), [ - AuthenticationResponse::newPass( $name ), + AuthenticationResponse::newPass( $userName ), ], [ AuthenticationResponse::newPass() ], [ - AuthenticationResponse::newPass( $name ), + AuthenticationResponse::newPass( $userName ), ] ], ]; @@ -1404,12 +1405,13 @@ class AuthManagerTest extends \MediaWikiTestCase { $this->manager->checkAccountCreatePermissions( new \User ) ); - $this->setMwGlobals( [ 'wgReadOnly' => 'Because' ] ); + $readOnlyMode = \MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode(); + $readOnlyMode->setReason( 'Because' ); $this->assertEquals( - \Status::newFatal( 'readonlytext', 'Because' ), + \Status::newFatal( wfMessage( 'readonlytext', 'Because' ) ), $this->manager->checkAccountCreatePermissions( new \User ) ); - $this->setMwGlobals( [ 'wgReadOnly' => false ] ); + $readOnlyMode->setReason( false ); $wgGroupPermissions['*']['createaccount'] = false; $status = $this->manager->checkAccountCreatePermissions( new \User ); @@ -1597,7 +1599,8 @@ class AuthManagerTest extends \MediaWikiTestCase { $this->assertSame( AuthenticationResponse::FAIL, $ret->status ); $this->assertSame( 'noname', $ret->message->getKey() ); - $this->setMwGlobals( [ 'wgReadOnly' => 'Because' ] ); + $readOnlyMode = \MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode(); + $readOnlyMode->setReason( 'Because' ); $this->hook( 'LocalUserCreated', $this->never() ); $userReq->username = self::usernameForCreation(); $ret = $this->manager->beginAccountCreation( $creator, [ $userReq ], 'http://localhost/' ); @@ -1605,7 +1608,7 @@ class AuthManagerTest extends \MediaWikiTestCase { $this->assertSame( AuthenticationResponse::FAIL, $ret->status ); $this->assertSame( 'readonlytext', $ret->message->getKey() ); $this->assertSame( [ 'Because' ], $ret->message->getParams() ); - $this->setMwGlobals( [ 'wgReadOnly' => false ] ); + $readOnlyMode->setReason( false ); $this->hook( 'LocalUserCreated', $this->never() ); $userReq->username = self::usernameForCreation(); @@ -1770,14 +1773,15 @@ class AuthManagerTest extends \MediaWikiTestCase { $this->request->getSession()->setSecret( 'AuthManager::accountCreationState', [ 'username' => $creator->getName() ] + $session ); - $this->setMwGlobals( [ 'wgReadOnly' => 'Because' ] ); + $readOnlyMode = \MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode(); + $readOnlyMode->setReason( 'Because' ); $this->hook( 'LocalUserCreated', $this->never() ); $ret = $this->manager->continueAccountCreation( [] ); $this->unhook( 'LocalUserCreated' ); $this->assertSame( AuthenticationResponse::FAIL, $ret->status ); $this->assertSame( 'readonlytext', $ret->message->getKey() ); $this->assertSame( [ 'Because' ], $ret->message->getParams() ); - $this->setMwGlobals( [ 'wgReadOnly' => false ] ); + $readOnlyMode->setReason( false ); $this->request->getSession()->setSecret( 'AuthManager::accountCreationState', [ 'username' => $creator->getName() ] + $session ); @@ -1994,7 +1998,7 @@ class AuthManagerTest extends \MediaWikiTestCase { ->willReturnCallback( function ( $user, $creator, $response ) use ( $constraint, $p, $username ) { - $this->assertInstanceOf( 'User', $user ); + $this->assertInstanceOf( \User::class, $user ); $this->assertSame( $username, $user->getName() ); $this->assertSame( 'UTSysop', $creator->getName() ); $this->assertInstanceOf( AuthenticationResponse::class, $response ); @@ -2258,7 +2262,7 @@ class AuthManagerTest extends \MediaWikiTestCase { // Set up lots of mocks... $mock = $this->getMockForAbstractClass( - "MediaWiki\\Auth\\PrimaryAuthenticationProvider", [] + \MediaWiki\Auth\PrimaryAuthenticationProvider::class, [] ); $mock->expects( $this->any() )->method( 'getUniqueId' ) ->will( $this->returnValue( 'primary' ) ); @@ -2468,12 +2472,13 @@ class AuthManagerTest extends \MediaWikiTestCase { // Wiki is read-only $session->clear(); - $this->setMwGlobals( [ 'wgReadOnly' => 'Because' ] ); + $readOnlyMode = \MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode(); + $readOnlyMode->setReason( 'Because' ); $user = \User::newFromName( $username ); $this->hook( 'LocalUserCreated', $this->never() ); $ret = $this->manager->autoCreateUser( $user, AuthManager::AUTOCREATE_SOURCE_SESSION, true ); $this->unhook( 'LocalUserCreated' ); - $this->assertEquals( \Status::newFatal( 'readonlytext', 'Because' ), $ret ); + $this->assertEquals( \Status::newFatal( wfMessage( 'readonlytext', 'Because' ) ), $ret ); $this->assertEquals( 0, $user->getId() ); $this->assertNotEquals( $username, $user->getName() ); $this->assertEquals( 0, $session->getUser()->getId() ); @@ -2481,7 +2486,7 @@ class AuthManagerTest extends \MediaWikiTestCase { [ LogLevel::DEBUG, 'denied by wfReadOnly(): {reason}' ], ], $logger->getBuffer() ); $logger->clearBuffer(); - $this->setMwGlobals( [ 'wgReadOnly' => false ] ); + $readOnlyMode->setReason( false ); // Session blacklisted $session->clear(); @@ -2663,7 +2668,8 @@ class AuthManagerTest extends \MediaWikiTestCase { // Test addToDatabase fails $session->clear(); - $user = $this->getMock( 'User', [ 'addToDatabase' ] ); + $user = $this->getMockBuilder( \User::class ) + ->setMethods( [ 'addToDatabase' ] )->getMock(); $user->expects( $this->once() )->method( 'addToDatabase' ) ->will( $this->returnValue( \Status::newFatal( 'because' ) ) ); $user->setName( $username ); @@ -2684,7 +2690,8 @@ class AuthManagerTest extends \MediaWikiTestCase { $backoffKey = wfMemcKey( 'AuthManager', 'autocreate-failed', md5( $username ) ); $this->assertFalse( $cache->get( $backoffKey ), 'sanity check' ); $session->clear(); - $user = $this->getMock( 'User', [ 'addToDatabase' ] ); + $user = $this->getMockBuilder( \User::class ) + ->setMethods( [ 'addToDatabase' ] )->getMock(); $user->expects( $this->once() )->method( 'addToDatabase' ) ->will( $this->throwException( new \Exception( 'Excepted' ) ) ); $user->setName( $username ); @@ -2707,7 +2714,8 @@ class AuthManagerTest extends \MediaWikiTestCase { // Test addToDatabase fails because the user already exists. $session->clear(); - $user = $this->getMock( 'User', [ 'addToDatabase' ] ); + $user = $this->getMockBuilder( \User::class ) + ->setMethods( [ 'addToDatabase' ] )->getMock(); $user->expects( $this->once() )->method( 'addToDatabase' ) ->will( $this->returnCallback( function () use ( $username, &$user ) { $oldUser = \User::newFromName( $username ); @@ -2815,7 +2823,7 @@ class AuthManagerTest extends \MediaWikiTestCase { */ public function testGetAuthenticationRequests( $action, $expect, $state = [] ) { $makeReq = function ( $key ) use ( $action ) { - $req = $this->getMock( AuthenticationRequest::class ); + $req = $this->createMock( AuthenticationRequest::class ); $req->expects( $this->any() )->method( 'getUniqueId' ) ->will( $this->returnValue( $key ) ); $req->action = $action === AuthManager::ACTION_UNLINK ? AuthManager::ACTION_REMOVE : $action; @@ -3018,7 +3026,7 @@ class AuthManagerTest extends \MediaWikiTestCase { public function testGetAuthenticationRequestsRequired() { $makeReq = function ( $key, $required ) { - $req = $this->getMock( AuthenticationRequest::class ); + $req = $this->createMock( AuthenticationRequest::class ); $req->expects( $this->any() )->method( 'getUniqueId' ) ->will( $this->returnValue( $key ) ); $req->action = AuthManager::ACTION_LOGIN; @@ -3148,7 +3156,7 @@ class AuthManagerTest extends \MediaWikiTestCase { public function testAutoCreateOnLogin() { $username = self::usernameForCreation(); - $req = $this->getMock( AuthenticationRequest::class ); + $req = $this->createMock( AuthenticationRequest::class ); $mock = $this->getMockForAbstractClass( PrimaryAuthenticationProvider::class ); $mock->expects( $this->any() )->method( 'getUniqueId' )->will( $this->returnValue( 'primary' ) ); @@ -3466,7 +3474,7 @@ class AuthManagerTest extends \MediaWikiTestCase { $p->postCalled = false; $p->expects( $this->atMost( 1 ) )->method( 'postAccountLink' ) ->willReturnCallback( function ( $user, $response ) use ( $constraint, $p ) { - $this->assertInstanceOf( 'User', $user ); + $this->assertInstanceOf( \User::class, $user ); $this->assertSame( 'UTSysop', $user->getName() ); $this->assertInstanceOf( AuthenticationResponse::class, $response ); $this->assertThat( $response->status, $constraint );