Improve error reporting

Display error message in the UI,
if the check command passes,
but the mml/svg/complete endpoints returns an valid json error.

Bug: T143225
Change-Id: I50776926e42f75a2c1e30fc9afe08baae3fcdbd1
This commit is contained in:
Moritz Schubotz 2016-08-17 19:41:04 +02:00
parent 13b9857115
commit f5fdda0ba1
2 changed files with 53 additions and 1 deletions

View File

@ -428,6 +428,24 @@ class MathRestbaseInterface {
'math_type' => $type,
'tex' => $this->tex
] );
throw new MWException( "Cannot get $type. Server problem." );
self::throwContentError( $type, $response['body'] );
}
/**
* @param $type
* @param $body
* @throws MWException
*/
public static function throwContentError( $type, $body ) {
$detail = 'Server problem.';
$json = json_decode( $body );
if ( isset( $json->detail ) ) {
if ( is_array( $json->detail ) ){
$detail = $json->detail[0];
} elseif ( is_string( $json->detail ) ) {
$detail = $json->detail;
}
}
throw new MWException( "Cannot get $type. $detail" );
}
}

View File

@ -85,4 +85,38 @@ class MathRestbaseInterfaceTest extends MediaWikiTestCase {
$rbi->getFullSvgUrl();
}
/**
* Incorporate the "details" in the error message, if the check requests passes, but the
* mml/svg/complete endpoints returns an error
* @expectedException MWException
* @expectedExceptionMessage Cannot get mml. TeX parse error: Missing close brace
*/
public function testLateError() {
// @codingStandardsIgnoreStart
$input = '{"type":"https://mediawiki.org/wiki/HyperSwitch/errors/bad_request","title":"Bad Request","method":"POST","detail":["TeX parse error: Missing close brace"],"uri":"/complete"}';
// @codingStandardsIgnoreEnd
MathRestbaseInterface::throwContentError( 'mml', $input );
}
/**
* Incorporate the "details" in the error message, if the check requests passes, but the
* mml/svg/complete endpoints returns an error
* @expectedException MWException
* @expectedExceptionMessage Cannot get mml. TeX parse error: Missing close brace
*/
public function testLateErrorString() {
// @codingStandardsIgnoreStart
$input = '{"type":"https://mediawiki.org/wiki/HyperSwitch/errors/bad_request","title":"Bad Request","method":"POST","detail": "TeX parse error: Missing close brace","uri":"/complete"}';
// @codingStandardsIgnoreEnd
MathRestbaseInterface::throwContentError( 'mml', $input );
}
/**
* @expectedException MWException
* @expectedExceptionMessage Cannot get mml. Server problem.
*/
public function testLateErrorNoDetail() {
$input = '';
MathRestbaseInterface::throwContentError( 'mml', $input );
}
}