Most notably this gets rid of all regular expressions and replaces them
with straight string comparisons. This is mostly done for readability,
but also makes the test more independend from the setup of the server
that is running the test.
Change-Id: I8c34cf1756c8e6c126b95b3eda163561d53186b9
* @covers PageDataRequestHandler
* @group PageData
*/
* @covers PageDataRequestHandler
* @group PageData
*/
-class PageDataRequestHandlerTest extends \MediaWikiTestCase {
+class PageDataRequestHandlerTest extends \MediaWikiLangTestCase {
protected function setUp() {
parent::setUp();
protected function setUp() {
parent::setUp();
- $this->interfaceTitle = Title::newFromText( "Special:PageDataRequestHandlerTest" );
-
+ $this->interfaceTitle = Title::newFromText( __CLASS__ );
$this->obLevel = ob_get_level();
$this->obLevel = ob_get_level();
+
+ $this->setMwGlobals( 'wgArticlePath', '/wiki/$1' );
}
protected function tearDown() {
}
protected function tearDown() {
* @return PageDataRequestHandler
*/
protected function newHandler() {
* @return PageDataRequestHandler
*/
protected function newHandler() {
- return new PageDataRequestHandler( 'json' );
+ return new PageDataRequestHandler();
public function handleRequestProvider() {
$cases = [];
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 ) {
$subpageCases = [];
foreach ( $cases as $c ) {
'',
[ 'target' => 'Helsinki' ],
[ 'Accept' => 'text/HTML' ],
'',
[ 'target' => 'Helsinki' ],
[ 'Accept' => 'text/HTML' ],
- [ 'Location' => '!Helsinki$!' ]
+ [ 'Location' => '/wiki/Helsinki' ]
'revision' => '4242',
],
[ 'Accept' => 'text/HTML' ],
'revision' => '4242',
],
[ 'Accept' => 'text/HTML' ],
- [ 'Location' => '!Helsinki(\?|&)oldid=4242!' ]
+ [ 'Location' => '?title=Helsinki&oldid=4242' ]
];
$cases[] = [
'/Helsinki',
[],
[],
];
$cases[] = [
'/Helsinki',
[],
[],
- [ 'Location' => '!Helsinki&action=raw!' ]
+ [ 'Location' => '?title=Helsinki&action=raw' ]
];
// #31: /Q5 with "Accept: text/foobar" triggers a 406
];
// #31: /Q5 with "Accept: text/foobar" triggers a 406
'main/Helsinki',
[],
[ 'Accept' => 'text/foobar' ],
'main/Helsinki',
[],
[ 'Accept' => 'text/foobar' ],
+ 'No matching format found',
];
$cases[] = [
'no slash',
[],
[ 'Accept' => 'text/HTML' ],
];
$cases[] = [
'no slash',
[],
[ 'Accept' => 'text/HTML' ],
];
$cases[] = [
'main',
[],
[ 'Accept' => 'text/HTML' ],
];
$cases[] = [
'main',
[],
[ 'Accept' => 'text/HTML' ],
];
$cases[] = [
'xyz/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
];
$cases[] = [
'xyz/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
];
$cases[] = [
'main/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
];
$cases[] = [
'main/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
- [ 'Location' => '!Helsinki$!' ]
+ [ 'Location' => '/wiki/Helsinki' ]
];
$cases[] = [
'/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
];
$cases[] = [
'/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
- [ 'Location' => '!Helsinki$!' ]
+ [ 'Location' => '/wiki/Helsinki' ]
];
$cases[] = [
'main/AC/DC',
[],
[ 'Accept' => 'text/HTML' ],
];
$cases[] = [
'main/AC/DC',
[],
[ 'Accept' => 'text/HTML' ],
- [ 'Location' => '!AC/DC$!' ]
+ [ 'Location' => '/wiki/AC/DC' ]
* @param string $subpage The subpage to request (or '')
* @param array $params Request parameters
* @param array $headers Request headers
* @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.
*/
* @param int $expectedStatusCode Expected HTTP status code.
* @param string[] $expectedHeaders Expected HTTP response headers.
*/
$subpage,
array $params,
array $headers,
$subpage,
array $params,
array $headers,
$expectedStatusCode = 200,
array $expectedHeaders = []
) {
$expectedStatusCode = 200,
array $expectedHeaders = []
) {
- $text = ob_get_contents();
- ob_end_clean();
+ $text = ob_get_clean();
$this->assertEquals( $expectedStatusCode, $response->getStatusCode(), 'status code' );
$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" );
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' );
}
} 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: *"
}
// We always set "Access-Control-Allow-Origin: *"