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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
<?php
use MediaWiki\Request\FauxRequest;
use MediaWiki\Specials\SpecialDeletedContributions;
use MediaWiki\Tests\User\TempUser\TempUserTestTrait;
use MediaWiki\Title\Title;
use MediaWiki\User\User;
use Wikimedia\Parsoid\Utils\DOMCompat;
use Wikimedia\Parsoid\Utils\DOMUtils;
/**
* @group Database
* @covers \MediaWiki\Specials\SpecialDeletedContributions
*/
class SpecialDeletedContributionsTest extends SpecialPageTestBase {
use TempUserTestTrait;
private static User $sysop;
private static User $userNameWithSpaces;
protected function newSpecialPage(): SpecialDeletedContributions {
$services = $this->getServiceContainer();
return new SpecialDeletedContributions(
$services->getPermissionManager(),
$services->getConnectionProvider(),
$services->getRevisionStore(),
$services->getNamespaceInfo(),
$services->getUserNameUtils(),
$services->getUserNamePrefixSearch(),
$services->getUserOptionsLookup(),
$services->getCommentFormatter(),
$services->getLinkBatchFactory(),
$services->getUserFactory(),
$services->getUserIdentityLookup(),
$services->getDatabaseBlockStore(),
$services->getTempUserConfig()
);
}
public function testExecuteNoTarget() {
[ $html ] = $this->executeSpecialPage(
'',
null,
null,
self::$sysop,
);
$this->assertStringNotContainsString( 'mw-pager-body', $html );
}
public function testExecuteInvalidTarget() {
[ $html ] = $this->executeSpecialPage(
'#InvalidUserName',
null,
null,
self::$sysop,
);
$this->assertStringNotContainsString( 'mw-pager-body', $html );
}
/** @dataProvider provideExecuteNoResultsForIPTarget */
public function testExecuteNoResultsForIPTarget( $temporaryAccountsEnabled, $expectedPageTitleMessageKey ) {
if ( $temporaryAccountsEnabled ) {
$this->enableAutoCreateTempUser();
} else {
$this->disableAutoCreateTempUser();
}
[ $html ] = $this->executeSpecialPage(
'127.0.0.1',
null,
null,
self::$sysop,
true
);
$specialPageDocument = DOMUtils::parseHTML( $html );
$contentHtml = DOMCompat::querySelector( $specialPageDocument, '.mw-content-container' )->nodeValue;
$this->assertStringNotContainsString( 'mw-pager-body', $contentHtml );
$this->assertStringContainsString( "($expectedPageTitleMessageKey: 127.0.0.1", $contentHtml );
}
public static function provideExecuteNoResultsForIPTarget() {
return [
'Temporary accounts not enabled' => [ false, 'deletedcontributions-title' ],
'Temporary accounts enabled' => [
true, 'deletedcontributions-title-for-ip-when-temporary-accounts-enabled',
],
];
}
public function testExecuteUserNameWithEscapedSpaces() {
$par = strtr( self::$userNameWithSpaces->getName(), ' ', '_' );
[ $html ] = $this->executeSpecialPage(
$par,
null,
null,
self::$sysop,
);
$this->assertStringContainsString( 'mw-pager-body', $html );
}
public function testExecuteNamespaceFilter() {
[ $html ] = $this->executeSpecialPage(
self::$sysop->getName(),
new FauxRequest( [
'namespace' => NS_TALK,
] ),
null,
self::$sysop,
);
$this->assertStringContainsString( 'mw-pager-body', $html );
}
public function addDBDataOnce() {
self::$sysop = $this->getTestSysop()->getUser();
self::$userNameWithSpaces = $this->getMutableTestUser( [], 'Test User' )->getUser();
$title = Title::makeTitle( NS_TALK, 'DeletedContribsPagerTest' );
// Make some edits
$this->editPage( $title, '', '', NS_MAIN, self::$sysop );
$this->editPage( $title, 'test', '', NS_MAIN, self::$userNameWithSpaces );
$status = $this->editPage( $title, 'Test content.', '', NS_MAIN, self::$sysop );
// Delete the page where the edits were made
$page = $this->getServiceContainer()->getWikiPageFactory()->newFromTitle( $title );
$this->deletePage( $page );
}
}
|