diff options
author | bpirkle <bpirkle@wikimedia.org> | 2024-11-05 14:34:58 -0600 |
---|---|---|
committer | daniel <dkinzler@wikimedia.org> | 2024-11-07 16:28:03 +0100 |
commit | 465e0d2c10cecbe4d3798f11db571ee2447bbeb5 (patch) | |
tree | d30037a436fdbda0e3e0b9425b954750865a4858 /tests/phpunit/integration/includes | |
parent | 1c57188c58333a9767b325a52ad99451fa0227e2 (diff) | |
download | mediawikicore-465e0d2c10cecbe4d3798f11db571ee2447bbeb5.tar.gz mediawikicore-465e0d2c10cecbe4d3798f11db571ee2447bbeb5.zip |
REST: Allow page endpoint "redirect" parameter to have value "false".
Bug: T374683
Change-Id: Id5072010fae7debe309e59f0479f44fbeb036934
Diffstat (limited to 'tests/phpunit/integration/includes')
-rw-r--r-- | tests/phpunit/integration/includes/Rest/Handler/Helper/PageContentHelperTest.php | 22 | ||||
-rw-r--r-- | tests/phpunit/integration/includes/Rest/Handler/PageHTMLHandlerTest.php | 37 |
2 files changed, 59 insertions, 0 deletions
diff --git a/tests/phpunit/integration/includes/Rest/Handler/Helper/PageContentHelperTest.php b/tests/phpunit/integration/includes/Rest/Handler/Helper/PageContentHelperTest.php index 2f095a95ba08..e840e72dadcb 100644 --- a/tests/phpunit/integration/includes/Rest/Handler/Helper/PageContentHelperTest.php +++ b/tests/phpunit/integration/includes/Rest/Handler/Helper/PageContentHelperTest.php @@ -296,6 +296,28 @@ class PageContentHelperTest extends MediaWikiIntegrationTestCase { $helper->checkAccess(); } + public static function provideRedirectsAllowed() { + yield [ [], true ]; + yield [ [ 'redirect' => true ], true ]; + yield [ [ 'redirect' => false ], false ]; + } + + /** + * @dataProvider provideRedirectsAllowed + */ + public function testRedirectsAllowed( array $params, bool $allowRedirect ) { + $page = $this->getNonexistingTestPage( + Title::makeTitle( NS_MEDIAWIKI, 'Logouttext' ) + ); + $title = $page->getTitle(); + $helper = $this->newHelper( + $params + [ 'title' => $title->getPrefixedDBkey() ], + $this->mockAnonUltimateAuthority() + ); + + $this->assertSame( $allowRedirect, $helper->getRedirectsAllowed() ); + } + public function testParameterSettings() { $helper = $this->newHelper(); $settings = $helper->getParamSettings(); diff --git a/tests/phpunit/integration/includes/Rest/Handler/PageHTMLHandlerTest.php b/tests/phpunit/integration/includes/Rest/Handler/PageHTMLHandlerTest.php index 4d5c20b25e60..1223778fe8c4 100644 --- a/tests/phpunit/integration/includes/Rest/Handler/PageHTMLHandlerTest.php +++ b/tests/phpunit/integration/includes/Rest/Handler/PageHTMLHandlerTest.php @@ -7,6 +7,7 @@ use MediaWiki\Deferred\DeferredUpdates; use MediaWiki\Hook\ParserLogLinterDataHook; use MediaWiki\MainConfigNames; use MediaWiki\Rest\Handler\PageHTMLHandler; +use MediaWiki\Rest\HttpException; use MediaWiki\Rest\LocalizedHttpException; use MediaWiki\Rest\RequestData; use MediaWiki\Title\Title; @@ -162,6 +163,42 @@ class PageHTMLHandlerTest extends MediaWikiIntegrationTestCase { $this->assertStringContainsString( self::HTML, $htmlResponse ); } + public static function provideWikiRedirect() { + yield 'follow wiki redirects per default' => [ [], 307 ]; + yield 'bad redirect param' => [ [ 'redirect' => 'wrong' ], 400 ]; + yield 'redirect=no' => [ [ 'redirect' => 'no' ], 200 ]; + yield 'redirect=false' => [ [ 'redirect' => 'false' ], 200 ]; + yield 'redirect=true' => [ [ 'redirect' => 'true' ], 307 ]; + } + + /** + * @dataProvider provideWikiRedirect + */ + public function testWikiRedirect( $params, $expectedStatus ) { + $redirect = $this->getExistingTestPage( 'HtmlEndpointTestPage/redirect' ); + $page = $this->getExistingTestPage( 'HtmlEndpointTestPage/target' ); + + $this->editPage( $redirect, "#REDIRECT [[{$page->getTitle()->getPrefixedDBkey()}]]" ); + + $request = new RequestData( + [ + 'pathParams' => [ 'title' => $redirect->getTitle()->getPrefixedText() ], + 'queryParams' => $params + ] + ); + + try { + $handler = $this->newHandler(); + $response = $this->executeHandler( $handler, $request, [ + 'format' => 'html' + ] ); + + $this->assertSame( $expectedStatus, $response->getStatusCode() ); + } catch ( HttpException $ex ) { + $this->assertSame( $expectedStatus, $ex->getCode() ); + } + } + public function testExecuteHtmlOnlyForSystemMessagePage() { $title = Title::newFromText( 'MediaWiki:Logouttext/de' ); $page = $this->getNonexistingTestPage( $title ); |