wiki.techinc.nl/tests/phpunit/includes/specials/SpecialPreferencesTest.php
Umherirrender 8fccad62ff Inject services into SpecialPreferences
This covers only directly used services by this special page
Services used by the base class are not part of this patch set

Bug: T259960
Change-Id: Ia4a022719f572952dcb62953c8819feb3326eccd
2020-11-23 21:07:43 +00:00

72 lines
1.9 KiB
PHP

<?php
/**
* Test class for SpecialPreferences class.
*
* Copyright © 2013, Antoine Musso
* Copyright © 2013, Wikimedia Foundation Inc.
*/
use MediaWiki\MediaWikiServices;
/**
* @group Preferences
* @group Database
*
* @covers SpecialPreferences
*/
class SpecialPreferencesTest extends MediaWikiIntegrationTestCase {
/**
* Make sure a nickname which is longer than $wgMaxSigChars
* is not throwing a fatal error.
*
* Test specifications by Alexandre "ialex" Emsenhuber.
* @todo give this test a real name explaining what is being tested here
*/
public function testT43337() {
// Set a low limit
$this->setMwGlobals( 'wgMaxSigChars', 2 );
$user = $this->createMock( User::class );
$user->expects( $this->any() )
->method( 'isAnon' )
->will( $this->returnValue( false ) );
# Yeah foreach requires an array, not NULL =(
$user->expects( $this->any() )
->method( 'getEffectiveGroups' )
->will( $this->returnValue( [] ) );
# The mocked user has a long nickname
$user->expects( $this->any() )
->method( 'getOption' )
->will( $this->returnValueMap( [
[ 'nickname', null, false, 'superlongnickname' ],
]
) );
# Needs to return something
$user->method( 'getOptions' )
->willReturn( [] );
// isAnyAllowed used to return null from the mock,
// thus revoke it's permissions.
$this->overrideUserPermissions( $user, [] );
# Forge a request to call the special page
$context = new RequestContext();
$context->setRequest( new FauxRequest() );
$context->setUser( $user );
$context->setTitle( Title::newFromText( 'Test' ) );
$services = MediaWikiServices::getInstance();
# Do the call, should not spurt a fatal error.
$special = new SpecialPreferences(
$services->getPreferencesFactory(),
$services->getPermissionManager(),
$services->getUserOptionsManager()
);
$special->setContext( $context );
$this->assertNull( $special->execute( [] ) );
}
}