Otherwise User members will wind up retaining stale references to services. The more things move to services, the more state we need to reset between tests to avoid subtle and confusing test failures! TestUsers can't be created if the DB prefix is not either unittest_ or ut_, which caused failures in RCFeedIntegrationTest.php with this change now that it was trying to create a new TestUser. Fix is to set the prefix to one of those two instead of empty. Change-Id: I41f87e1acffe94361748ef4ab69c290de587e6be
98 lines
2.3 KiB
PHP
98 lines
2.3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group medium
|
|
* @group Database
|
|
* @covers FormattedRCFeed
|
|
* @covers RecentChange
|
|
* @covers JSONRCFeedFormatter
|
|
* @covers MachineReadableRCFeedFormatter
|
|
* @covers RCFeed
|
|
*/
|
|
class RCFeedIntegrationTest extends MediaWikiTestCase {
|
|
protected function setUp() {
|
|
parent::setUp();
|
|
$this->setMwGlobals( [
|
|
'wgCanonicalServer' => 'https://example.org',
|
|
'wgServerName' => 'example.org',
|
|
'wgScriptPath' => '/w',
|
|
'wgDBname' => 'example',
|
|
'wgDBprefix' => $this->dbPrefix(),
|
|
'wgRCFeeds' => [],
|
|
'wgRCEngines' => [],
|
|
] );
|
|
}
|
|
|
|
public function testNotify() {
|
|
$feed = $this->getMockBuilder( RCFeedEngine::class )
|
|
->setConstructorArgs( [ [ 'formatter' => JSONRCFeedFormatter::class ] ] )
|
|
->setMethods( [ 'send' ] )
|
|
->getMock();
|
|
|
|
$feed->method( 'send' )
|
|
->willReturn( true );
|
|
|
|
$feed->expects( $this->once() )
|
|
->method( 'send' )
|
|
->with( $this->anything(), $this->callback( function ( $line ) {
|
|
$this->assertJsonStringEqualsJsonString(
|
|
json_encode( [
|
|
'id' => null,
|
|
'type' => 'log',
|
|
'namespace' => 0,
|
|
'title' => 'Example',
|
|
'comment' => '',
|
|
'timestamp' => 1301644800,
|
|
'user' => 'UTSysop',
|
|
'bot' => false,
|
|
'log_id' => 0,
|
|
'log_type' => 'move',
|
|
'log_action' => 'move',
|
|
'log_params' => [
|
|
'color' => 'green',
|
|
'nr' => 42,
|
|
'pet' => 'cat',
|
|
],
|
|
'log_action_comment' => '',
|
|
'server_url' => 'https://example.org',
|
|
'server_name' => 'example.org',
|
|
'server_script_path' => '/w',
|
|
'wiki' => 'example-' . $this->dbPrefix(),
|
|
] ),
|
|
$line
|
|
);
|
|
return true;
|
|
} ) );
|
|
|
|
$this->setMwGlobals( [
|
|
'wgRCFeeds' => [
|
|
'myfeed' => [
|
|
'uri' => 'test://localhost:1234',
|
|
'formatter' => JSONRCFeedFormatter::class,
|
|
],
|
|
],
|
|
'wgRCEngines' => [
|
|
'test' => $feed,
|
|
],
|
|
] );
|
|
$logpage = SpecialPage::getTitleFor( 'Log', 'move' );
|
|
$user = $this->getTestSysop()->getUser();
|
|
$rc = RecentChange::newLogEntry(
|
|
'20110401080000',
|
|
$logpage, // &$title
|
|
$user, // &$user
|
|
'', // $actionComment
|
|
'127.0.0.1', // $ip
|
|
'move', // $type
|
|
'move', // $action
|
|
Title::makeTitle( 0, 'Example' ), // $target
|
|
'', // $logComment
|
|
LogEntryBase::makeParamBlob( [
|
|
'4::color' => 'green',
|
|
'5:number:nr' => 42,
|
|
'pet' => 'cat',
|
|
] )
|
|
);
|
|
$rc->notifyRCFeeds();
|
|
}
|
|
}
|