Merge "Chinese Conversion Table Update 2017-6"
[lhc/web/wiklou.git] / tests / phpunit / structure / AvailableRightsTest.php
1 <?php
2
3 /**
4 * Try to make sure that extensions register all rights in $wgAvailableRights
5 * or via the 'UserGetAllRights' hook.
6 *
7 * @author Marius Hoch < hoo@online.de >
8 */
9 class AvailableRightsTest extends PHPUnit_Framework_TestCase {
10
11 use MediaWikiCoversValidator;
12
13 /**
14 * Returns all rights that should be in $wgAvailableRights + all rights
15 * registered via the 'UserGetAllRights' hook + all "core" rights.
16 *
17 * @return string[]
18 */
19 private function getAllVisibleRights() {
20 global $wgGroupPermissions, $wgRevokePermissions;
21
22 $rights = User::getAllRights();
23
24 foreach ( $wgGroupPermissions as $permissions ) {
25 $rights = array_merge( $rights, array_keys( $permissions ) );
26 }
27
28 foreach ( $wgRevokePermissions as $permissions ) {
29 $rights = array_merge( $rights, array_keys( $permissions ) );
30 }
31
32 $rights = array_unique( $rights );
33 sort( $rights );
34
35 return $rights;
36 }
37
38 public function testAvailableRights() {
39 $missingRights = array_diff(
40 $this->getAllVisibleRights(),
41 User::getAllRights()
42 );
43
44 $this->assertEquals(
45 [],
46 // Re-index to produce nicer output, keys are meaningless.
47 array_values( $missingRights ),
48 'Additional user rights need to be added to $wgAvailableRights or ' .
49 'via the "UserGetAllRights" hook. See the instructions at: ' .
50 'https://www.mediawiki.org/wiki/Manual:User_rights#Adding_new_rights'
51 );
52 }
53 }