From 2379bd01251bee365095f32b1eaba12b8f449d3d Mon Sep 17 00:00:00 2001 From: Thiemo Kreuz Date: Wed, 27 Mar 2019 18:37:39 +0100 Subject: [PATCH] linkeddata: Simplity PageDataRequestHandler test setup 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 --- .../linkeddata/PageDataRequestHandlerTest.php | 69 ++++++++++--------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php b/tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php index e2616c8869..e3a200b2e9 100644 --- a/tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php +++ b/tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php @@ -4,7 +4,7 @@ * @covers PageDataRequestHandler * @group PageData */ -class PageDataRequestHandlerTest extends \MediaWikiTestCase { +class PageDataRequestHandlerTest extends \MediaWikiLangTestCase { /** * @var Title @@ -19,9 +19,10 @@ class PageDataRequestHandlerTest extends \MediaWikiTestCase { 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() { @@ -44,7 +45,7 @@ class PageDataRequestHandlerTest extends \MediaWikiTestCase { * @return PageDataRequestHandler */ protected function newHandler() { - return new PageDataRequestHandler( 'json' ); + return new PageDataRequestHandler(); } /** @@ -76,9 +77,16 @@ class PageDataRequestHandlerTest extends \MediaWikiTestCase { 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 ) { @@ -99,9 +107,9 @@ class PageDataRequestHandlerTest extends \MediaWikiTestCase { '', [ 'target' => 'Helsinki' ], [ 'Accept' => 'text/HTML' ], - '!^$!', + '', 303, - [ 'Location' => '!Helsinki$!' ] + [ 'Location' => '/wiki/Helsinki' ] ]; $cases[] = [ @@ -111,18 +119,18 @@ class PageDataRequestHandlerTest extends \MediaWikiTestCase { '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 @@ -130,63 +138,59 @@ class PageDataRequestHandlerTest extends \MediaWikiTestCase { '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; @@ -198,7 +202,7 @@ class PageDataRequestHandlerTest extends \MediaWikiTestCase { * @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. */ @@ -206,7 +210,7 @@ class PageDataRequestHandlerTest extends \MediaWikiTestCase { $subpage, array $params, array $headers, - $expectedOutput, + $expectedOutput = '', $expectedStatusCode = 200, array $expectedHeaders = [] ) { @@ -228,22 +232,21 @@ class PageDataRequestHandlerTest extends \MediaWikiTestCase { $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: *" -- 2.20.1