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
|
<?php
/**
* @license GPL-2.0-or-later
* @author Legoktm
*/
use MediaWiki\Context\DerivativeContext;
use MediaWiki\Context\RequestContext;
use MediaWiki\Request\FauxRequest;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\SpecialPage\SpecialPage;
use MediaWiki\Specials\SpecialLog;
/**
* @group Database
* @covers \MediaWiki\Specials\SpecialLog
*/
class SpecialLogTest extends SpecialPageTestBase {
/**
* Returns a new instance of the special page under test.
*
* @return SpecialPage
*/
protected function newSpecialPage() {
$services = $this->getServiceContainer();
return new SpecialLog(
$services->getLinkBatchFactory(),
$services->getConnectionProvider(),
$services->getActorNormalization(),
$services->getUserIdentityLookup(),
$services->getUserNameUtils(),
$services->getLogFormatterFactory()
);
}
/**
* Verify that no exception was thrown for an invalid date
* @see T201411
*/
public function testInvalidDate() {
[ $html, ] = $this->executeSpecialPage(
'',
// There is no 13th month
new FauxRequest( [ 'wpdate' => '2018-13-01' ] ),
'qqx'
);
$this->assertStringContainsString( '(log-summary)', $html );
}
public function testSuppressionLog() {
// Have "BadGuy" create a revision
$user = ( new TestUser( 'BadGuy' ) )->getUser();
$title = $this->insertPage( 'Foo', 'Bar', null, $user )['title'];
$revId = $title->getLatestRevID();
$context = new DerivativeContext( RequestContext::getMain() );
$context->setUser( $this->getTestUser( [ 'sysop', 'suppress' ] )->getUser() );
// Hide our revision's comment
$list = RevisionDeleter::createList( 'revision', $context, $title, [ $revId ] );
$status = $list->setVisibility( [
'value' => [
RevisionRecord::DELETED_RESTRICTED => 1,
RevisionRecord::DELETED_COMMENT => 1
],
'comment' => 'SpecialLogTest'
] );
$this->assertStatusGood( $status );
// Allow everyone to read the suppression log
$this->mergeMwGlobalArrayValue(
'wgGroupPermissions', [
'*' => [
'suppressionlog' => true
]
]
);
[ $html, ] = $this->executeSpecialPage(
'suppress',
new FauxRequest( [ 'offender' => 'BadGuy' ] ),
'qqx'
);
$this->assertStringNotContainsString( '(logempty)', $html );
$this->assertStringContainsString( '(logentry-suppress-revision', $html );
// Full suppression log
[ $html, ] = $this->executeSpecialPage(
'suppress',
new FauxRequest(),
'qqx'
);
$this->assertStringNotContainsString( '(logempty)', $html );
$this->assertStringContainsString( '(logentry-suppress-revision', $html );
// Suppression log for unknown user should be empty
[ $html, ] = $this->executeSpecialPage(
'suppress',
new FauxRequest( [ 'offender' => 'GoodGuy' ] ),
'qqx'
);
$this->assertStringContainsString( '(logempty)', $html );
$this->assertStringNotContainsString( '(logentry-suppress-revision', $html );
}
}
|