1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
<?php
namespace MediaWiki\Tests\Maintenance;
use CheckSignatures;
use MediaWiki\User\UserIdentity;
/**
* @covers \CheckSignatures
* @group Database
* @author Dreamy Jazz
*/
class CheckSignaturesTest extends MaintenanceBaseTestCase {
protected function getMaintenanceClass() {
return CheckSignatures::class;
}
/**
* @param int $count
* @return UserIdentity[]
*/
private function generateMutableTestUsers( int $count ): array {
$returnArray = [];
for ( $i = 0; $i < $count; $i++ ) {
$testUser = $this->getMutableTestUser()->getUserIdentity();
$returnArray[] = $testUser;
}
return $returnArray;
}
/**
* @param int $count
* @return UserIdentity[]
*/
private function generateUsersWithInvalidSignatures( int $count ): array {
$userOptionsManager = $this->getServiceContainer()->getUserOptionsManager();
$returnArray = $this->generateMutableTestUsers( $count );
foreach ( $returnArray as $user ) {
// Set the signature to invalid HTML
$userOptionsManager->setOption( $user, 'nickname', '<b>{{test' );
$userOptionsManager->setOption( $user, 'fancysig', true );
$userOptionsManager->saveOptions( $user );
}
return $returnArray;
}
private function generateUsersWithValidSignatures( int $count ) {
$userOptionsManager = $this->getServiceContainer()->getUserOptionsManager();
foreach ( $this->generateMutableTestUsers( $count ) as $user ) {
// Set the signature to invalid HTML
$userOptionsManager->setOption( $user, 'nickname', '[[User:' . $user->getName() . "]]" );
$userOptionsManager->setOption( $user, 'fancysig', true );
$userOptionsManager->saveOptions( $user );
}
}
/** @dataProvider provideExecute */
public function testExecute( $validCount, $invalidCount ) {
$usersWithInvalidSignatures = $this->generateUsersWithInvalidSignatures( $invalidCount );
$this->generateUsersWithValidSignatures( $validCount );
$this->maintenance->execute();
$expectedOutputRegex = '/';
foreach ( $usersWithInvalidSignatures as $user ) {
$expectedOutputRegex .= $user->getName() . "\n";
}
$expectedOutputRegex .= ".*$invalidCount invalid signatures/";
$this->expectOutputRegex( $expectedOutputRegex );
}
public static function provideExecute() {
return [
'All signatures valid' => [ 4, 0 ],
'Some signatures valid' => [ 2, 3 ],
];
}
}
|