]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - tests/phpunit/structure/AvailableRightsTest.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.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         /**
12          * Returns all rights that should be in $wgAvailableRights + all rights
13          * registered via the 'UserGetAllRights' hook + all "core" rights.
14          *
15          * @return string[]
16          */
17         private function getAllVisibleRights() {
18                 global $wgGroupPermissions, $wgRevokePermissions;
19
20                 $rights = User::getAllRights();
21
22                 foreach ( $wgGroupPermissions as $permissions ) {
23                         $rights = array_merge( $rights, array_keys( $permissions ) );
24                 }
25
26                 foreach ( $wgRevokePermissions as $permissions ) {
27                         $rights = array_merge( $rights, array_keys( $permissions ) );
28                 }
29
30                 $rights = array_unique( $rights );
31                 sort( $rights );
32
33                 return $rights;
34         }
35
36         public function testAvailableRights() {
37                 $missingRights = array_diff(
38                         $this->getAllVisibleRights(),
39                         User::getAllRights()
40                 );
41
42                 $this->assertEquals(
43                         [],
44                         // Re-index to produce nicer output, keys are meaningless.
45                         array_values( $missingRights ),
46                         'Additional user rights need to be added to $wgAvailableRights or ' .
47                         'via the "UserGetAllRights" hook. See the instructions at: ' .
48                         'https://www.mediawiki.org/wiki/Manual:User_rights#Adding_new_rights'
49                 );
50         }
51 }