* @covers PageDataRequestHandler
* @group PageData
*/
-class PageDataRequestHandlerTest extends \MediaWikiTestCase {
+class PageDataRequestHandlerTest extends \MediaWikiLangTestCase {
/**
* @var Title
protected function setUp() {
parent::setUp();
- $this->interfaceTitle = Title::newFromText( "Special:PageDataRequestHandlerTest" );
-
+ $this->interfaceTitle = Title::newFromText( __CLASS__ );
$this->obLevel = ob_get_level();
+
+ $this->setMwGlobals( 'wgArticlePath', '/wiki/$1' );
}
protected function tearDown() {
* @return PageDataRequestHandler
*/
protected function newHandler() {
- return new PageDataRequestHandler( 'json' );
+ return new PageDataRequestHandler();
}
/**
public function handleRequestProvider() {
$cases = [];
- $cases[] = [ '', [], [], '!!', 400 ];
+ $cases[] = [ '', [], [], 'Invalid title', 400 ];
- $cases[] = [ '', [ 'target' => 'Helsinki' ], [], '!!', 303, [ 'Location' => '!.+!' ] ];
+ $cases[] = [
+ '',
+ [ 'target' => 'Helsinki' ],
+ [],
+ '',
+ 303,
+ [ 'Location' => '?title=Helsinki&action=raw' ]
+ ];
$subpageCases = [];
foreach ( $cases as $c ) {
'',
[ 'target' => 'Helsinki' ],
[ 'Accept' => 'text/HTML' ],
- '!^$!',
+ '',
303,
- [ 'Location' => '!Helsinki$!' ]
+ [ 'Location' => '/wiki/Helsinki' ]
];
$cases[] = [
'revision' => '4242',
],
[ 'Accept' => 'text/HTML' ],
- '!^$!',
+ '',
303,
- [ 'Location' => '!Helsinki(\?|&)oldid=4242!' ]
+ [ 'Location' => '?title=Helsinki&oldid=4242' ]
];
$cases[] = [
'/Helsinki',
[],
[],
- '!^$!',
+ '',
303,
- [ 'Location' => '!Helsinki&action=raw!' ]
+ [ 'Location' => '?title=Helsinki&action=raw' ]
];
// #31: /Q5 with "Accept: text/foobar" triggers a 406
'main/Helsinki',
[],
[ 'Accept' => 'text/foobar' ],
- '!!',
+ 'No matching format found',
406,
- [],
];
$cases[] = [
'no slash',
[],
[ 'Accept' => 'text/HTML' ],
- '!!',
+ 'Invalid title',
400,
- []
];
$cases[] = [
'main',
[],
[ 'Accept' => 'text/HTML' ],
- '!!',
+ 'Invalid title',
400,
- []
];
$cases[] = [
'xyz/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
- '!!',
+ 'Invalid title',
400,
- []
];
$cases[] = [
'main/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
- '!^$!',
+ '',
303,
- [ 'Location' => '!Helsinki$!' ]
+ [ 'Location' => '/wiki/Helsinki' ]
];
$cases[] = [
'/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
- '!^$!',
+ '',
303,
- [ 'Location' => '!Helsinki$!' ]
+ [ 'Location' => '/wiki/Helsinki' ]
];
$cases[] = [
'main/AC/DC',
[],
[ 'Accept' => 'text/HTML' ],
- '!^$!',
+ '',
303,
- [ 'Location' => '!AC/DC$!' ]
+ [ 'Location' => '/wiki/AC/DC' ]
];
return $cases;
* @param string $subpage The subpage to request (or '')
* @param array $params Request parameters
* @param array $headers Request headers
- * @param string $expectedOutput Regex to match the output against.
+ * @param string $expectedOutput
* @param int $expectedStatusCode Expected HTTP status code.
* @param string[] $expectedHeaders Expected HTTP response headers.
*/
$subpage,
array $params,
array $headers,
- $expectedOutput,
+ $expectedOutput = '',
$expectedStatusCode = 200,
array $expectedHeaders = []
) {
$output->output();
}
- $text = ob_get_contents();
- ob_end_clean();
+ $text = ob_get_clean();
$this->assertEquals( $expectedStatusCode, $response->getStatusCode(), 'status code' );
- $this->assertRegExp( $expectedOutput, $text, 'output' );
+ $this->assertSame( $expectedOutput, $text, 'output' );
foreach ( $expectedHeaders as $name => $exp ) {
$value = $response->getHeader( $name );
$this->assertNotNull( $value, "header: $name" );
$this->assertInternalType( 'string', $value, "header: $name" );
- $this->assertRegExp( $exp, $value, "header: $name" );
+ $this->assertStringEndsWith( $exp, $value, "header: $name" );
}
} catch ( HttpError $e ) {
ob_end_clean();
$this->assertEquals( $expectedStatusCode, $e->getStatusCode(), 'status code' );
- $this->assertRegExp( $expectedOutput, $e->getHTML(), 'error output' );
+ $this->assertContains( $expectedOutput, $e->getHTML(), 'error output' );
}
// We always set "Access-Control-Allow-Origin: *"