X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2FRest%2FBasicAccess%2FMWBasicRequestAuthorizerTest.php;h=d5bbb11d787a138be3c15fd3ed7c91b72ab8c8ba;hb=825d66bfa44c5dae2b78e2fe4f3b16f16aff4a12;hp=3c6573ac1f626e77357b9cf2c2bcafdb5496c174;hpb=eba2737ab9f27017bd269cf1b3129fe1cfffbb30;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/Rest/BasicAccess/MWBasicRequestAuthorizerTest.php b/tests/phpunit/includes/Rest/BasicAccess/MWBasicRequestAuthorizerTest.php index 3c6573ac1f..d5bbb11d78 100644 --- a/tests/phpunit/includes/Rest/BasicAccess/MWBasicRequestAuthorizerTest.php +++ b/tests/phpunit/includes/Rest/BasicAccess/MWBasicRequestAuthorizerTest.php @@ -3,14 +3,17 @@ namespace MediaWiki\Tests\Rest\BasicAccess; use GuzzleHttp\Psr7\Uri; -use MediaWiki\MediaWikiServices; +use MediaWiki\Permissions\PermissionManager; use MediaWiki\Rest\BasicAccess\MWBasicAuthorizer; use MediaWiki\Rest\Handler; use MediaWiki\Rest\RequestData; use MediaWiki\Rest\ResponseFactory; use MediaWiki\Rest\Router; +use MediaWiki\Rest\Validator\Validator; use MediaWikiTestCase; +use Psr\Container\ContainerInterface; use User; +use Wikimedia\ObjectFactory; /** * @group Database @@ -21,16 +24,18 @@ use User; * @covers \MediaWiki\Rest\BasicAccess\MWBasicRequestAuthorizer */ class MWBasicRequestAuthorizerTest extends MediaWikiTestCase { - private function createRouter( $userRights ) { + private function createRouter( $userRights, $request ) { $user = User::newFromName( 'Test user' ); - // Don't allow the rights to everybody so that user rights kick in. - $this->mergeMwGlobalArrayValue( 'wgGroupPermissions', [ '*' => $userRights ] ); - $this->overrideUserPermissions( - $user, - array_keys( array_filter( $userRights ), function ( $value ) { - return $value === true; - } ) + $objectFactory = new ObjectFactory( + $this->getMockForAbstractClass( ContainerInterface::class ) ); + $permissionManager = $this->createMock( PermissionManager::class ); + // Don't allow the rights to everybody so that user rights kick in. + $permissionManager->method( 'isEveryoneAllowed' )->willReturn( false ); + $permissionManager->method( 'userHasRight' ) + ->will( $this->returnCallback( function ( $user, $action ) use ( $userRights ) { + return isset( $userRights[$action] ) && $userRights[$action]; + } ) ); global $IP; @@ -39,13 +44,16 @@ class MWBasicRequestAuthorizerTest extends MediaWikiTestCase { [], '/rest', new \EmptyBagOStuff(), - new ResponseFactory(), - new MWBasicAuthorizer( $user, MediaWikiServices::getInstance()->getPermissionManager() ) ); + new ResponseFactory( [] ), + new MWBasicAuthorizer( $user, $permissionManager ), + $objectFactory, + new Validator( $objectFactory, $permissionManager, $request, $user ) + ); } public function testReadDenied() { - $router = $this->createRouter( [ 'read' => false ] ); $request = new RequestData( [ 'uri' => new Uri( '/rest/user/joe/hello' ) ] ); + $router = $this->createRouter( [ 'read' => false ], $request ); $response = $router->execute( $request ); $this->assertSame( 403, $response->getStatusCode() ); @@ -56,8 +64,8 @@ class MWBasicRequestAuthorizerTest extends MediaWikiTestCase { } public function testReadAllowed() { - $router = $this->createRouter( [ 'read' => true ] ); $request = new RequestData( [ 'uri' => new Uri( '/rest/user/joe/hello' ) ] ); + $router = $this->createRouter( [ 'read' => true ], $request ); $response = $router->execute( $request ); $this->assertSame( 200, $response->getStatusCode() ); } @@ -75,10 +83,10 @@ class MWBasicRequestAuthorizerTest extends MediaWikiTestCase { } public function testWriteDenied() { - $router = $this->createRouter( [ 'read' => true, 'writeapi' => false ] ); $request = new RequestData( [ 'uri' => new Uri( '/rest/mock/MWBasicRequestAuthorizerTest/write' ) ] ); + $router = $this->createRouter( [ 'read' => true, 'writeapi' => false ], $request ); $response = $router->execute( $request ); $this->assertSame( 403, $response->getStatusCode() ); @@ -89,10 +97,10 @@ class MWBasicRequestAuthorizerTest extends MediaWikiTestCase { } public function testWriteAllowed() { - $router = $this->createRouter( [ 'read' => true, 'writeapi' => true ] ); $request = new RequestData( [ 'uri' => new Uri( '/rest/mock/MWBasicRequestAuthorizerTest/write' ) ] ); + $router = $this->createRouter( [ 'read' => true, 'writeapi' => true ], $request ); $response = $router->execute( $request ); $this->assertSame( 200, $response->getStatusCode() );