}
/**
- * @expectedException UsageException
+ * @expectedException ApiUsageException
* @covers ApiBase::requireOnlyOneParameter
*/
public function testRequireOnlyOneParameterZero() {
}
/**
- * @expectedException UsageException
+ * @expectedException ApiUsageException
* @covers ApiBase::requireOnlyOneParameter
*/
public function testRequireOnlyOneParameterTrue() {
$context->setRequest( new FauxRequest( $input !== null ? [ 'foo' => $input ] : [] ) );
$wrapper->mMainModule = new ApiMain( $context );
- if ( $expected instanceof UsageException ) {
+ if ( $expected instanceof ApiUsageException ) {
try {
$wrapper->getParameterFromSettings( 'foo', $paramSettings, true );
- } catch ( UsageException $ex ) {
+ } catch ( ApiUsageException $ex ) {
$this->assertEquals( $expected, $ex );
}
} else {
public static function provideGetParameterFromSettings() {
$warnings = [
- 'The value passed for \'foo\' contains invalid or non-normalized data. Textual data should ' .
- 'be valid, NFC-normalized Unicode without C0 control characters other than ' .
- 'HT (\\t), LF (\\n), and CR (\\r).'
+ [ 'apiwarn-badutf8', 'foo' ],
];
$c0 = '';
'String param, required, empty' => [
'',
[ ApiBase::PARAM_DFLT => 'default', ApiBase::PARAM_REQUIRED => true ],
- new UsageException( 'The foo parameter must be set', 'nofoo' ),
+ ApiUsageException::newWithMessage( null, [ 'apierror-missingparam', 'foo' ] ),
[]
],
'Multi-valued parameter' => [
];
}
+ public function testErrorArrayToStatus() {
+ $mock = new MockApi();
+
+ // Sanity check empty array
+ $expect = Status::newGood();
+ $this->assertEquals( $expect, $mock->errorArrayToStatus( [] ) );
+
+ // No blocked $user, so no special block handling
+ $expect = Status::newGood();
+ $expect->fatal( 'blockedtext' );
+ $expect->fatal( 'autoblockedtext' );
+ $expect->fatal( 'mainpage' );
+ $expect->fatal( 'parentheses', 'foobar' );
+ $this->assertEquals( $expect, $mock->errorArrayToStatus( [
+ [ 'blockedtext' ],
+ [ 'autoblockedtext' ],
+ 'mainpage',
+ [ 'parentheses', 'foobar' ],
+ ] ) );
+
+ // Has a blocked $user, so special block handling
+ $user = $this->getMutableTestUser()->getUser();
+ $block = new \Block( [
+ 'address' => $user->getName(),
+ 'user' => $user->getID(),
+ 'reason' => __METHOD__,
+ 'expiry' => time() + 100500,
+ ] );
+ $block->insert();
+ $blockinfo = [ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $block ) ];
+
+ $expect = Status::newGood();
+ $expect->fatal( ApiMessage::create( 'apierror-blocked', 'blocked', $blockinfo ) );
+ $expect->fatal( ApiMessage::create( 'apierror-autoblocked', 'autoblocked', $blockinfo ) );
+ $expect->fatal( 'mainpage' );
+ $expect->fatal( 'parentheses', 'foobar' );
+ $this->assertEquals( $expect, $mock->errorArrayToStatus( [
+ [ 'blockedtext' ],
+ [ 'autoblockedtext' ],
+ 'mainpage',
+ [ 'parentheses', 'foobar' ],
+ ], $user ) );
+ }
+
}