$status = Status::newGood();
foreach ( $errors as $error ) {
- if ( is_array( $error ) && isset( self::$blockMsgMap[$error[0]] ) && $user->getBlock() ) {
+ if ( !is_array( $error ) ) {
+ $error = [ $error ];
+ }
+ if ( is_string( $error[0] ) && isset( self::$blockMsgMap[$error[0]] ) && $user->getBlock() ) {
list( $msg, $code ) = self::$blockMsgMap[$error[0]];
$status->fatal( ApiMessage::create( $msg, $code,
[ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $user->getBlock() ) ]
) );
} else {
- $status->fatal( ...(array)$error );
+ $status->fatal( ...$error );
}
}
return $status;
public function testErrorArrayToStatus() {
$mock = new MockApi();
+ $msg = new Message( 'mainpage' );
+
// Sanity check empty array
$expect = Status::newGood();
$this->assertEquals( $expect, $mock->errorArrayToStatus( [] ) );
$expect->fatal( 'autoblockedtext' );
$expect->fatal( 'systemblockedtext' );
$expect->fatal( 'mainpage' );
+ $expect->fatal( $msg );
+ $expect->fatal( $msg, 'foobar' );
$expect->fatal( 'parentheses', 'foobar' );
$this->assertEquals( $expect, $mock->errorArrayToStatus( [
[ 'blockedtext' ],
[ 'autoblockedtext' ],
[ 'systemblockedtext' ],
'mainpage',
+ $msg,
+ [ $msg, 'foobar' ],
[ 'parentheses', 'foobar' ],
] ) );
$expect->fatal( ApiMessage::create( 'apierror-autoblocked', 'autoblocked', $blockinfo ) );
$expect->fatal( ApiMessage::create( 'apierror-systemblocked', 'blocked', $blockinfo ) );
$expect->fatal( 'mainpage' );
+ $expect->fatal( $msg );
+ $expect->fatal( $msg, 'foobar' );
$expect->fatal( 'parentheses', 'foobar' );
$this->assertEquals( $expect, $mock->errorArrayToStatus( [
[ 'blockedtext' ],
[ 'autoblockedtext' ],
[ 'systemblockedtext' ],
'mainpage',
+ $msg,
+ [ $msg, 'foobar' ],
[ 'parentheses', 'foobar' ],
], $user ) );
}
public function testAddBlockInfoToStatus() {
$mock = new MockApi();
+ $msg = new Message( 'mainpage' );
+
// Sanity check empty array
$expect = Status::newGood();
$test = Status::newGood();
$expect->fatal( 'autoblockedtext' );
$expect->fatal( 'systemblockedtext' );
$expect->fatal( 'mainpage' );
+ $expect->fatal( $msg );
+ $expect->fatal( $msg, 'foobar' );
$expect->fatal( 'parentheses', 'foobar' );
$test = clone $expect;
$mock->addBlockInfoToStatus( $test );
$expect->fatal( ApiMessage::create( 'apierror-autoblocked', 'autoblocked', $blockinfo ) );
$expect->fatal( ApiMessage::create( 'apierror-systemblocked', 'blocked', $blockinfo ) );
$expect->fatal( 'mainpage' );
+ $expect->fatal( $msg );
+ $expect->fatal( $msg, 'foobar' );
$expect->fatal( 'parentheses', 'foobar' );
$test = Status::newGood();
$test->fatal( 'blockedtext' );
$test->fatal( 'autoblockedtext' );
$test->fatal( 'systemblockedtext' );
$test->fatal( 'mainpage' );
+ $test->fatal( $msg );
+ $test->fatal( $msg, 'foobar' );
$test->fatal( 'parentheses', 'foobar' );
$mock->addBlockInfoToStatus( $test, $user );
$this->assertEquals( $expect, $test );