overrideConfigValues( [ MainConfigNames::Server => '//example.org', MainConfigNames::CanonicalServer => 'http://example.org', MainConfigNames::ScriptPath => '/w', MainConfigNames::Script => '/w/index.php', ] ); $this->factory = $this->getServiceContainer()->getLinkRendererFactory(); } public static function provideMergeAttribs() { yield [ new TitleValue( NS_SPECIAL, 'BlankPage' ) ]; yield [ new PageReferenceValue( NS_SPECIAL, 'BlankPage', PageReference::LOCAL ) ]; } /** * @dataProvider provideMergeAttribs * @covers \MediaWiki\Linker\LinkRenderer::makeBrokenLink */ public function testMergeAttribs( $target ) { $linkRenderer = $this->factory->create(); $link = $linkRenderer->makeBrokenLink( $target, null, [ // Appended to class 'class' => 'foobar', // Suppresses href attribute 'href' => false, // Extra attribute 'bar' => 'baz' ] ); $this->assertEquals( '' . 'Special:BlankPage', $link ); } public static function provideMakeKnownLink() { yield [ new TitleValue( NS_MAIN, 'Foobar' ) ]; yield [ new PageReferenceValue( NS_MAIN, 'Foobar', PageReference::LOCAL ) ]; } /** * @dataProvider provideMakeKnownLink * @covers \MediaWiki\Linker\LinkRenderer::makeKnownLink */ public function testMakeKnownLink( $target ) { $linkCache = $this->createMock( LinkCache::class ); $linkCache->method( 'addLinkObj' )->willReturn( 42 ); $this->setService( 'LinkCache', $linkCache ); $linkRenderer = $this->getServiceContainer()->getLinkRendererFactory()->create(); // Query added $this->assertEquals( 'Foobar', $linkRenderer->makeKnownLink( $target, null, [], [ 'foo' => 'bar' ] ) ); $linkRenderer->setForceArticlePath( true ); $this->assertEquals( 'Foobar', $linkRenderer->makeKnownLink( $target, null, [], [ 'foo' => 'bar' ] ) ); // expand = HTTPS $linkRenderer->setForceArticlePath( false ); $linkRenderer->setExpandURLs( PROTO_HTTPS ); $this->assertEquals( 'Foobar', $linkRenderer->makeKnownLink( $target ) ); } public static function provideMakeBrokenLink() { yield [ new TitleValue( NS_MAIN, 'Foobar' ), new TitleValue( NS_SPECIAL, 'Foobar' ) ]; yield [ new PageReferenceValue( NS_MAIN, 'Foobar', PageReference::LOCAL ), new PageReferenceValue( NS_SPECIAL, 'Foobar', PageReference::LOCAL ) ]; } /** * @dataProvider provideMakeBrokenLink * @covers \MediaWiki\Linker\LinkRenderer::makeBrokenLink */ public function testMakeBrokenLink( $target, $special ) { $linkRenderer = $this->factory->create(); // action=edit&redlink=1 added $this->assertEquals( 'Foobar', $linkRenderer->makeBrokenLink( $target ) ); // action=edit&redlink=1 not added due to action query parameter $this->assertEquals( 'Foobar', $linkRenderer->makeBrokenLink( $target, null, [], [ 'action' => 'foobar' ] ) ); // action=edit&redlink=1 not added due to NS_SPECIAL $this->assertEquals( 'Special:Foobar', $linkRenderer->makeBrokenLink( $special ) ); // fragment stripped if ( $target instanceof LinkTarget ) { $this->assertEquals( 'Foobar', $linkRenderer->makeBrokenLink( $target->createFragmentTarget( 'foobar' ) ) ); } } public static function provideMakeLink() { yield [ new TitleValue( NS_SPECIAL, 'Foobar' ), new TitleValue( NS_SPECIAL, 'BlankPage' ) ]; yield [ new PageReferenceValue( NS_SPECIAL, 'Foobar', PageReference::LOCAL ), new PageReferenceValue( NS_SPECIAL, 'BlankPage', PageReference::LOCAL ) ]; } /** * @dataProvider provideMakeLink * @covers \MediaWiki\Linker\LinkRenderer::makeLink */ public function testMakeLink( $foobar, $blankpage ) { $linkRenderer = $this->factory->create(); $this->assertEquals( 'foo', $linkRenderer->makeLink( $foobar, 'foo' ) ); $this->assertEquals( 'blank', $linkRenderer->makeLink( $blankpage, 'blank' ) ); $this->assertEquals( '<script>evil()</script>', $linkRenderer->makeLink( $foobar, '' ) ); $this->assertEquals( '', $linkRenderer->makeLink( $foobar, new HtmlArmor( '' ) ) ); $this->assertEquals( 'fragment', $linkRenderer->makeLink( Title::newFromText( '#fragment' ) ) ); } public static function provideMakeRedirectHeader() { return [ [ [ 'title' => 'Main_Page', ], '
Redirect to:
Redirect to:
Redirect to:
Redirect to: