Add AvailableRightsTest for User::getAllRights completeness
[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 /**
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( $this->getAllVisibleRights(), User::getAllRights() );
38
39 $this->assertEquals(
40 array(),
41 array_values( $missingRights ), // Re-Index to produce nicer output, keys are meaningless
42 'Additional user rights need to be added to $wgAvailableRights or via the "UserGetAllRights" hook'
43 );
44 }
45 }