wiki.techinc.nl/tests/phpunit/includes/specials/SpecialContributionsTest.php
Umherirrender a1de8b8700 Tests: Mark more more closures as static
Result of a new sniff I25a17fb22b6b669e817317a0f45051ae9c608208

Bug: T274036
Change-Id: I695873737167a75f0d94901fa40383a33984ca55
2021-02-09 02:55:57 +00:00

95 lines
3 KiB
PHP

<?php
use MediaWiki\Permissions\UltimateAuthority;
/**
* @author Ammarpad
* @group Database
* @covers SpecialContributions
*/
class SpecialContributionsTest extends SpecialPageTestBase {
private $admin;
protected function setUp(): void {
parent::setUp();
$this->setMwGlobals( [
'wgRangeContributionsCIDRLimit' => [
'IPv4' => 16,
'IPv6' => 32,
]
] );
$this->setTemporaryHook(
'SpecialContributionsBeforeMainOutput',
static function () {
return;
}
);
$this->admin = new UltimateAuthority( $this->getTestSysop()->getUser() );
}
/**
* @covers SpecialContributions::execute
* @dataProvider provideTestExecuteRange
*/
public function testExecuteRange( $username, $shouldShowLinks ) {
list( $html ) = $this->executeSpecialPage( $username, null, 'qqx', $this->admin, true );
if ( $shouldShowLinks ) {
$this->assertStringContainsString( 'blocklink', $html );
} else {
$this->assertStringNotContainsString( 'blocklink', $html );
$this->assertStringContainsString( 'sp-contributions-outofrange', $html );
}
}
/**
* @covers SpecialContributions::execute
* @dataProvider provideTestExecuteNonRange
*/
public function testExecuteNonRange( $username, $shouldShowLinks ) {
list( $html ) = $this->executeSpecialPage( $username, null, 'qqx', $this->admin, true );
if ( $shouldShowLinks ) {
$this->assertStringContainsString( 'blocklink', $html );
} else {
$this->assertStringNotContainsString( 'blocklink', $html );
}
}
public function provideTestExecuteRange() {
yield 'Queryable IPv4 range should have blocklink for admin'
=> [ '24.237.208.166/30', true ];
yield 'Queryable IPv6 range should have blocklink for admin'
=> [ '2001:DB8:0:0:0:0:0:01/43', true ];
yield 'Unqueryable IPv4 range should not have blocklink for admin'
=> [ '212.35.31.121/14', false ];
yield 'Unqueryable IPv6 range should not have blocklink for admin'
=> [ '2000::/24', false ];
}
public function provideTestExecuteNonRange() {
yield 'Valid IPv4 should have blocklink for admin' => [ '124.24.52.13', true ];
yield 'Valid IPv6 should have blocklink for admin' => [ '2001:db8::', true ];
yield 'Local user should have blocklink for admin' => [ 'UTSysop', true ];
yield 'Invalid IP should not have blocklink for admin' => [ '24.237.222208.166', false ];
yield 'External user should not have blocklink for admin' => [ 'imported>UTSysop', false ];
yield 'Nonexistent user should not have blocklink for admin' => [ __CLASS__, false ];
}
protected function newSpecialPage(): SpecialContributions {
$services = MediaWiki\MediaWikiServices::getInstance();
return new SpecialContributions(
$services->getLinkBatchFactory(),
$services->getPermissionManager(),
$services->getDBLoadBalancer(),
$services->getActorMigration(),
$services->getRevisionStore(),
$services->getNamespaceInfo(),
$services->getUserNameUtils(),
$services->getUserNamePrefixSearch(),
$services->getUserOptionsLookup()
);
}
}