aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/integration/includes
diff options
context:
space:
mode:
authorbpirkle <bpirkle@wikimedia.org>2024-11-05 14:34:58 -0600
committerdaniel <dkinzler@wikimedia.org>2024-11-07 16:28:03 +0100
commit465e0d2c10cecbe4d3798f11db571ee2447bbeb5 (patch)
treed30037a436fdbda0e3e0b9425b954750865a4858 /tests/phpunit/integration/includes
parent1c57188c58333a9767b325a52ad99451fa0227e2 (diff)
downloadmediawikicore-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.php22
-rw-r--r--tests/phpunit/integration/includes/Rest/Handler/PageHTMLHandlerTest.php37
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 );