diff options
author | Petr Pchelko <ppchelko@wikimedia.org> | 2021-06-01 16:06:18 -0700 |
---|---|---|
committer | Petr Pchelko <ppchelko@wikimedia.org> | 2021-06-07 11:50:42 -0700 |
commit | edb3a9a692b5a73c910041ccca30b2dff84b5674 (patch) | |
tree | 9095af2c614b21cff042120d9859c80a2769d0d9 /tests/phpunit/includes/api/ApiBlockTest.php | |
parent | 5bc6425976414b17ecffe92dad4385dbf3802121 (diff) | |
download | mediawikicore-edb3a9a692b5a73c910041ccca30b2dff84b5674.tar.gz mediawikicore-edb3a9a692b5a73c910041ccca30b2dff84b5674.zip |
Allow passing mock Authority in API integration tests
This is a demo, a lot of tests could be rewritten as a followup
to pass proper Authority when executing tests instead of writing
globals. Much cleaner imho.
An improvement idea is to allow overriding 'default permissions'
when creating a mock Authority.
Change-Id: I38570024e0d5a67a8e1c52f7456c458090ec2b6e
Diffstat (limited to 'tests/phpunit/includes/api/ApiBlockTest.php')
-rw-r--r-- | tests/phpunit/includes/api/ApiBlockTest.php | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/tests/phpunit/includes/api/ApiBlockTest.php b/tests/phpunit/includes/api/ApiBlockTest.php index a9037f9d1dfc..2004e6d80a41 100644 --- a/tests/phpunit/includes/api/ApiBlockTest.php +++ b/tests/phpunit/includes/api/ApiBlockTest.php @@ -5,6 +5,8 @@ use MediaWiki\Block\Restriction\ActionRestriction; use MediaWiki\Block\Restriction\NamespaceRestriction; use MediaWiki\Block\Restriction\PageRestriction; use MediaWiki\MediaWikiServices; +use MediaWiki\Permissions\Authority; +use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait; /** * @group API @@ -14,6 +16,8 @@ use MediaWiki\MediaWikiServices; * @covers ApiBlock */ class ApiBlockTest extends ApiTestCase { + use MockAuthorityTrait; + protected $mUser = null; protected function setUp() : void { @@ -36,14 +40,10 @@ class ApiBlockTest extends ApiTestCase { /** * @param array $extraParams Extra API parameters to pass to doApiRequest - * @param User|null $blocker User to do the blocking, null to pick arbitrarily + * @param Authority|null $blocker User to do the blocking, null to pick arbitrarily * @return array result of doApiRequest */ - private function doBlock( array $extraParams = [], User $blocker = null ) { - if ( $blocker === null ) { - $blocker = self::$users['sysop']->getUser(); - } - + private function doBlock( array $extraParams = [], Authority $blocker = null ) { $tokens = $this->getTokens(); $this->assertNotNull( $this->mUser, 'Sanity check' ); @@ -162,16 +162,12 @@ class ApiBlockTest extends ApiTestCase { } public function testBlockWithHide() { - global $wgGroupPermissions; - $newPermissions = $wgGroupPermissions['sysop']; - $newPermissions['hideuser'] = true; - $this->mergeMwGlobalArrayValue( 'wgGroupPermissions', - [ 'sysop' => $newPermissions ] ); - - $res = $this->doBlock( [ 'hidename' => '' ] ); + $res = $this->doBlock( + [ 'hidename' => '' ], + $this->mockRegisteredAuthorityWithPermissions( [ 'hideuser', 'writeapi', 'block' ] ) + ); - $dbw = wfGetDB( DB_PRIMARY ); - $this->assertSame( '1', $dbw->selectField( + $this->assertSame( '1', $this->db->selectField( 'ipblocks', 'ipb_deleted', [ 'ipb_id' => $res[0]['block']['id'] ], |