Merge "Selenium: replace UserLoginPage with BlankPage where possible"
[lhc/web/wiklou.git] / tests / phpunit / structure / AvailableRightsTest.php
index ea132e9..2a6575a 100644 (file)
@@ -35,9 +35,6 @@ class AvailableRightsTest extends PHPUnit\Framework\TestCase {
                return $rights;
        }
 
-       /**
-        * @coversNothing
-        */
        public function testAvailableRights() {
                $missingRights = array_diff(
                        $this->getAllVisibleRights(),
@@ -53,4 +50,52 @@ class AvailableRightsTest extends PHPUnit\Framework\TestCase {
                        'https://www.mediawiki.org/wiki/Manual:User_rights#Adding_new_rights'
                );
        }
+
+       /**
+        * Test, if for all rights an action- message exist,
+        * which is used on Special:ListGroupRights as help text
+        * Extensions and core
+        *
+        * @coversNothing
+        */
+       public function testAllActionsWithMessages() {
+               $this->checkMessagesExist( 'action-' );
+       }
+
+       /**
+        * Test, if for all rights a right- message exist,
+        * which is used on Special:ListGroupRights as help text
+        * Extensions and core
+        */
+       public function testAllRightsWithMessage() {
+               $this->checkMessagesExist( 'right-' );
+       }
+
+       /**
+        * @param string $prefix
+        */
+       private function checkMessagesExist( $prefix ) {
+               // Getting all user rights, for core: User::$mCoreRights, for extensions: $wgAvailableRights
+               $allRights = User::getAllRights();
+               $allMessageKeys = Language::getMessageKeysFor( 'en' );
+
+               $messagesToCheck = [];
+               foreach ( $allMessageKeys as $message ) {
+                       // === 0: must be at beginning of string (position 0)
+                       if ( strpos( $message, $prefix ) === 0 ) {
+                               $messagesToCheck[] = substr( $message, strlen( $prefix ) );
+                       }
+               }
+
+               $missing = array_diff(
+                       $allRights,
+                       $messagesToCheck
+               );
+
+               $this->assertEquals(
+                       [],
+                       $missing,
+                       "Each user right (core/extensions) has a corresponding $prefix message."
+               );
+       }
 }