wiki.techinc.nl/tests/phpunit/unit/includes/Permissions/GrantsInfoTest.php
Bartosz Dziewoński 3781349e27 Use real type hints for services etc. in includes/Permissions/
Mostly used find-and-replace:

Find:
/\*[\*\s]+@var (I?[A-Z](\w+)(?:Interface)?)[\s\*]+/\s*(private|protected|public) (\$[a-z]\w+;\n)((?=\s*/\*[\*\s]+@var (I?[A-Z](\w+)(?:Interface)?))\n|)
Replace with:
\3 \1 \4

More could be done, but to keep this patch reasonably sized, I only
changed the most obvious and unambiguously correct cases.

In some cases, I also removed redundant doc comments on the
constructor, and re-ordered the properties to match the constructor.

Change-Id: I3f8427ae4f5d55177ae18986ef15d84d0e7bf6f4
2024-07-31 08:56:17 +00:00

148 lines
3.4 KiB
PHP

<?php
namespace MediaWiki\Tests\Unit\Permissions;
use MediaWiki\Config\ServiceOptions;
use MediaWiki\MainConfigNames;
use MediaWiki\Permissions\GrantsInfo;
use MediaWikiUnitTestCase;
/**
* @covers \MediaWiki\Permissions\GrantsInfo
*/
class GrantsInfoTest extends MediaWikiUnitTestCase {
private GrantsInfo $grantsInfo;
protected function setUp(): void {
parent::setUp();
$config = [
MainConfigNames::GrantPermissions => [
'hidden1' => [ 'read' => true, 'autoconfirmed' => false ],
'hidden2' => [ 'autoconfirmed' => true ],
'normal' => [ 'edit' => true ],
'normal2' => [ 'edit' => true, 'create' => true ],
'admin' => [ 'protect' => true, 'delete' => true ],
],
MainConfigNames::GrantPermissionGroups => [
'hidden1' => 'hidden',
'hidden2' => 'hidden',
'normal' => 'normal-group',
'admin' => 'admin',
],
MainConfigNames::GrantRiskGroups => [
'hidden1' => 'low',
'hidden2' => 'low',
'normal' => 'low',
'normal2' => 'vandalism',
'admin' => 'security',
],
];
$this->grantsInfo = new GrantsInfo(
new ServiceOptions(
GrantsInfo::CONSTRUCTOR_OPTIONS,
$config
)
);
}
public function testGetValidGrants() {
$this->assertSame(
[ 'hidden1', 'hidden2', 'normal', 'normal2', 'admin' ],
$this->grantsInfo->getValidGrants()
);
}
public function testGetRightsByGrant() {
$this->assertSame(
[
'hidden1' => [ 'read' ],
'hidden2' => [ 'autoconfirmed' ],
'normal' => [ 'edit' ],
'normal2' => [ 'edit', 'create' ],
'admin' => [ 'protect', 'delete' ],
],
$this->grantsInfo->getRightsByGrant()
);
}
/**
* @dataProvider provideGetGrantRights
* @param array|string $grants
* @param array $rights
*/
public function testGetGrantRights( $grants, $rights ) {
$this->assertSame( $rights, $this->grantsInfo->getGrantRights( $grants ) );
}
public static function provideGetGrantRights() {
return [
'anon' => [ 'hidden1', [ 'read' ] ],
'newbie' => [ [ 'hidden1', 'hidden2', 'hidden3' ], [ 'read', 'autoconfirmed' ] ],
'basic' => [ [ 'normal1', 'normal2' ], [ 'edit', 'create' ] ],
];
}
/**
* @dataProvider provideGrantsAreValid
* @param array $grants
* @param bool $valid
*/
public function testGrantsAreValid( $grants, $valid ) {
$this->assertSame( $valid, $this->grantsInfo->grantsAreValid( $grants ) );
}
public static function provideGrantsAreValid() {
return [
[ [ 'hidden1', 'hidden2' ], true ],
[ [ 'hidden1', 'hidden3' ], false ],
];
}
/**
* @dataProvider provideGetGrantGroups
* @param array|null $grants
* @param array $expect
*/
public function testGetGrantGroups( $grants, $expect ) {
$this->assertSame( $expect, $this->grantsInfo->getGrantGroups( $grants ) );
}
public static function provideGetGrantGroups() {
return [
[ null, [
'hidden' => [ 'hidden1', 'hidden2' ],
'normal-group' => [ 'normal' ],
'other' => [ 'normal2' ],
'admin' => [ 'admin' ],
] ],
[ [ 'hidden1', 'normal' ], [
'hidden' => [ 'hidden1' ],
'normal-group' => [ 'normal' ],
] ],
];
}
public function testGetHiddenGrants() {
$this->assertSame(
[ 'hidden1', 'hidden2' ],
$this->grantsInfo->getHiddenGrants()
);
}
public function testGetRiskGroupsByGrant() {
$this->assertSame(
[
'hidden1' => 'low',
'hidden2' => 'low',
'normal' => 'low',
'normal2' => 'vandalism',
'admin' => 'security',
],
$this->grantsInfo->getRiskGroupsByGrant()
);
}
}