wiki.techinc.nl/tests/phpunit/includes/specialpage/SpecialPageTest.php
Umherirrender 3aade9e40a Use expectWarning/Deprecation/Notice/Error() in phpunit tests
It is deprecated in newer phpunit versions

Bug: T271049
Change-Id: I3b2105cbd582ecc57ab8bc1bb1617300f15682ad
2021-01-04 00:16:51 +00:00

102 lines
2.6 KiB
PHP

<?php
use MediaWiki\MediaWikiServices;
/**
* @covers SpecialPage
*
* @group Database
*
* @author Katie Filbert < aude.wiki@gmail.com >
*/
class SpecialPageTest extends MediaWikiIntegrationTestCase {
protected function setUp() : void {
parent::setUp();
$this->setContentLang( 'en' );
$this->setMwGlobals( [
'wgScript' => '/index.php',
] );
}
/**
* @dataProvider getTitleForProvider
*/
public function testGetTitleFor( $expectedName, $name ) {
$title = SpecialPage::getTitleFor( $name );
$expected = Title::makeTitle( NS_SPECIAL, $expectedName );
$this->assertEquals( $expected, $title );
}
public function getTitleForProvider() {
return [
[ 'UserLogin', 'Userlogin' ]
];
}
public function testInvalidGetTitleFor() {
$this->expectNotice();
$title = SpecialPage::getTitleFor( 'cat' );
$expected = Title::makeTitle( NS_SPECIAL, 'Cat' );
$this->assertEquals( $expected, $title );
}
/**
* @dataProvider getTitleForWithWarningProvider
*/
public function testGetTitleForWithWarning( $expected, $name ) {
$this->expectNotice();
$title = SpecialPage::getTitleFor( $name );
$this->assertEquals( $expected, $title );
}
public function getTitleForWithWarningProvider() {
return [
[ Title::makeTitle( NS_SPECIAL, 'UserLogin' ), 'UserLogin' ]
];
}
/**
* @dataProvider requireLoginAnonProvider
*/
public function testRequireLoginAnon( $expected, $reason, $title ) {
$specialPage = new SpecialPage( 'Watchlist', 'viewmywatchlist' );
$user = User::newFromId( 0 );
$specialPage->getContext()->setUser( $user );
$specialPage->getContext()->setLanguage(
MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' ) );
$this->expectException( UserNotLoggedIn::class );
$this->expectExceptionMessage( $expected );
// $specialPage->requireLogin( [ $reason [, $title ] ] )
$specialPage->requireLogin( ...array_filter( [ $reason, $title ] ) );
}
public function requireLoginAnonProvider() {
$lang = 'en';
$expected1 = wfMessage( 'exception-nologin-text' )->inLanguage( $lang )->text();
$expected2 = wfMessage( 'about' )->inLanguage( $lang )->text();
return [
[ $expected1, null, null ],
[ $expected2, 'about', null ],
[ $expected2, 'about', 'about' ],
];
}
public function testRequireLoginNotAnon() {
$specialPage = new SpecialPage( 'Watchlist', 'viewmywatchlist' );
$user = User::newFromName( "UTSysop" );
$specialPage->getContext()->setUser( $user );
$specialPage->requireLogin();
// no exception thrown, logged in use can access special page
$this->assertTrue( true );
}
}