Import: Handle uploads with sha1 starting with 0 properly
[mediawiki.git] / tests / phpunit / includes / specialpage / SpecialPageTest.php
blob5a0aef973d7cb85956f30b7789fd15b9b00a61e2
1 <?php
3 /**
4 * @covers SpecialPage
6 * @group Database
8 * @author Katie Filbert < aude.wiki@gmail.com >
9 */
10 class SpecialPageTest extends MediaWikiTestCase {
12 protected function setUp() {
13 parent::setUp();
15 $this->setMwGlobals( array(
16 'wgScript' => '/index.php',
17 'wgContLang' => Language::factory( 'en' )
18 ) );
21 /**
22 * @dataProvider getTitleForProvider
24 public function testGetTitleFor( $expectedName, $name ) {
25 $title = SpecialPage::getTitleFor( $name );
26 $expected = Title::makeTitle( NS_SPECIAL, $expectedName );
27 $this->assertEquals( $expected, $title );
30 public function getTitleForProvider() {
31 return array(
32 array( 'UserLogin', 'Userlogin' )
36 /**
37 * @expectedException PHPUnit_Framework_Error_Notice
39 public function testInvalidGetTitleFor() {
40 $title = SpecialPage::getTitleFor( 'cat' );
41 $expected = Title::makeTitle( NS_SPECIAL, 'Cat' );
42 $this->assertEquals( $expected, $title );
45 /**
46 * @expectedException PHPUnit_Framework_Error_Notice
47 * @dataProvider getTitleForWithWarningProvider
49 public function testGetTitleForWithWarning( $expected, $name ) {
50 $title = SpecialPage::getTitleFor( $name );
51 $this->assertEquals( $expected, $title );
54 public function getTitleForWithWarningProvider() {
55 return array(
56 array( Title::makeTitle( NS_SPECIAL, 'UserLogin' ), 'UserLogin' )
60 /**
61 * @dataProvider requireLoginAnonProvider
63 public function testRequireLoginAnon( $expected, $reason, $title ) {
64 $specialPage = new SpecialPage( 'Watchlist', 'viewmywatchlist' );
66 $user = User::newFromId( 0 );
67 $specialPage->getContext()->setUser( $user );
68 $specialPage->getContext()->setLanguage( Language::factory( 'en' ) );
70 $this->setExpectedException( 'UserNotLoggedIn', $expected );
72 // $specialPage->requireLogin( [ $reason [, $title ] ] )
73 call_user_func_array(
74 array( $specialPage, 'requireLogin' ),
75 array_filter( array( $reason, $title ) )
79 public function requireLoginAnonProvider() {
80 $lang = 'en';
82 $expected1 = wfMessage( 'exception-nologin-text' )->inLanguage( $lang )->text();
83 $expected2 = wfMessage( 'about' )->inLanguage( $lang )->text();
85 return array(
86 array( $expected1, null, null ),
87 array( $expected2, 'about', null ),
88 array( $expected2, 'about', 'about' ),
92 public function testRequireLoginNotAnon() {
93 $specialPage = new SpecialPage( 'Watchlist', 'viewmywatchlist' );
95 $user = User::newFromName( "UTSysop" );
96 $specialPage->getContext()->setUser( $user );
98 $specialPage->requireLogin();
100 // no exception thrown, logged in use can access special page
101 $this->assertTrue( true );