wiki.techinc.nl/tests/phpunit/structure/AvailableRightsTest.php
Hoo man cd5790efff Re-introduce AvailableRightsTest for User::getAllRights completeness
Because extensions often don't add their rights to $wgAvailableRights
or via the 'UserGetAllRights' hook, thus User::getAllRights is incomplete.

As announced on https://lists.wikimedia.org/pipermail/wikitech-l/2015-February/080953.html

This reverts commit 9a16d3a37e.

Change-Id: Ic394145d123cd74bdd5b912559f56c393f1d5919
2015-03-01 17:38:15 +00:00

51 lines
1.3 KiB
PHP

<?php
/**
* Try to make sure that extensions register all rights in $wgAvailableRights
* or via the 'UserGetAllRights' hook.
*
* @author Marius Hoch < hoo@online.de >
*/
class AvailableRightsTest extends PHPUnit_Framework_TestCase {
/**
* Returns all rights that should be in $wgAvailableRights + all rights
* registered via the 'UserGetAllRights' hook + all "core" rights.
*
* @return string[]
*/
private function getAllVisibleRights() {
global $wgGroupPermissions, $wgRevokePermissions;
$rights = User::getAllRights();
foreach( $wgGroupPermissions as $permissions ) {
$rights = array_merge( $rights, array_keys( $permissions ) );
}
foreach( $wgRevokePermissions as $permissions ) {
$rights = array_merge( $rights, array_keys( $permissions ) );
}
$rights = array_unique( $rights );
sort( $rights );
return $rights;
}
public function testAvailableRights() {
$missingRights = array_diff(
$this->getAllVisibleRights(),
User::getAllRights()
);
$this->assertEquals(
array(),
// Re-index to produce nicer output, keys are meaningless.
array_values( $missingRights ),
'Additional user rights need to be added to $wgAvailableRights or ' .
'via the "UserGetAllRights" hook. See the instructions at: ' .
'https://www.mediawiki.org/wiki/Manual:User_rights#Adding_new_rights'
);
}
}