Merge "Fix Revi's mailmap email address"
[lhc/web/wiklou.git] / tests / phpunit / includes / api / ApiTestCase.php
index e90b46f..abef1c9 100644 (file)
@@ -3,13 +3,15 @@
 abstract class ApiTestCase extends MediaWikiLangTestCase {
        protected static $apiUrl;
 
+       protected static $errorFormatter = null;
+
        /**
         * @var ApiTestContext
         */
        protected $apiContext;
 
        protected function setUp() {
-               global $wgServer, $wgDisableAuthManager;
+               global $wgServer;
 
                parent::setUp();
                self::$apiUrl = $wgServer . wfScript( 'api' );
@@ -22,9 +24,9 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
                ];
 
                $this->setMwGlobals( [
-                       'wgAuth' => $wgDisableAuthManager ? new AuthPlugin : new MediaWiki\Auth\AuthManagerAuthPlugin,
+                       'wgAuth' => new MediaWiki\Auth\AuthManagerAuthPlugin,
                        'wgRequest' => new FauxRequest( [] ),
-                       'wgUser' => self::$users['sysop']->user,
+                       'wgUser' => self::$users['sysop']->getUser(),
                ] );
 
                $this->apiContext = new ApiTestContext();
@@ -158,8 +160,8 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
 
                $data = $this->doApiRequest( [
                        'action' => 'login',
-                       'lgname' => $testUser->username,
-                       'lgpassword' => $testUser->password ] );
+                       'lgname' => $testUser->getUser()->getName(),
+                       'lgpassword' => $testUser->getPassword() ] );
 
                $token = $data[0]['login']['token'];
 
@@ -167,8 +169,8 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
                        [
                                'action' => 'login',
                                'lgtoken' => $token,
-                               'lgname' => $testUser->username,
-                               'lgpassword' => $testUser->password,
+                               'lgname' => $testUser->getUser()->getName(),
+                               'lgpassword' => $testUser->getPassword(),
                        ],
                        $data[2]
                );
@@ -183,11 +185,11 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
                return $data;
        }
 
-       protected function getTokenList( $user, $session = null ) {
+       protected function getTokenList( TestUser $user, $session = null ) {
                $data = $this->doApiRequest( [
                        'action' => 'tokens',
                        'type' => 'edit|delete|protect|move|block|unblock|watch'
-               ], $session, false, $user->user );
+               ], $session, false, $user->getUser() );
 
                if ( !array_key_exists( 'tokens', $data[0] ) ) {
                        throw new MWException( 'Api failed to return a token list' );
@@ -196,8 +198,28 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
                return $data[0]['tokens'];
        }
 
+       protected static function getErrorFormatter() {
+               if ( self::$errorFormatter === null ) {
+                       self::$errorFormatter = new ApiErrorFormatter(
+                               new ApiResult( false ),
+                               Language::factory( 'en' ),
+                               'none'
+                       );
+               }
+               return self::$errorFormatter;
+       }
+
+       public static function apiExceptionHasCode( ApiUsageException $ex, $code ) {
+               return (bool)array_filter(
+                       self::getErrorFormatter()->arrayFromStatus( $ex->getStatusValue() ),
+                       function ( $e ) use ( $code ) {
+                               return is_array( $e ) && $e['code'] === $code;
+                       }
+               );
+       }
+
        public function testApiTestGroup() {
-               $groups = PHPUnit_Util_Test::getGroups( get_class( $this ) );
+               $groups = PHPUnit_Util_Test::getGroups( static::class );
                $constraint = PHPUnit_Framework_Assert::logicalOr(
                        $this->contains( 'medium' ),
                        $this->contains( 'large' )