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
|
<?php
use MediaWiki\MainConfigNames;
use MediaWiki\RCFeed\FormattedRCFeed;
use MediaWiki\RCFeed\JSONRCFeedFormatter;
use MediaWiki\SpecialPage\SpecialPage;
use MediaWiki\Title\Title;
/**
* @group medium
* @group Database
* @covers \MediaWiki\RCFeed\FormattedRCFeed
* @covers \RecentChange
* @covers \MediaWiki\RCFeed\JSONRCFeedFormatter
* @covers \MediaWiki\RCFeed\MachineReadableRCFeedFormatter
* @covers \MediaWiki\RCFeed\RCFeed
*/
class RCFeedIntegrationTest extends MediaWikiIntegrationTestCase {
protected function setUp(): void {
parent::setUp();
$this->overrideConfigValues( [
MainConfigNames::CanonicalServer => 'https://example.org',
MainConfigNames::ServerName => 'example.org',
MainConfigNames::ScriptPath => '/w',
MainConfigNames::Script => '/w/index.php',
MainConfigNames::DBname => 'example',
MainConfigNames::DBprefix => self::dbPrefix(),
MainConfigNames::RCFeeds => [],
MainConfigNames::RCEngines => [],
] );
}
public function testNotify() {
$feed = $this->getMockBuilder( FormattedRCFeed::class )
->setConstructorArgs( [ [ 'formatter' => JSONRCFeedFormatter::class ] ] )
->onlyMethods( [ 'send' ] )
->getMock();
$feed->expects( $this->once() )
->method( 'send' )
->willReturn( true )
->with( $this->anything(), $this->callback( function ( $line ) {
$this->assertJsonStringEqualsJsonString(
json_encode( [
'id' => null,
'type' => 'log',
'namespace' => 0,
'title' => 'Example',
'title_url' => 'https://example.org/wiki/Example',
'comment' => '',
'timestamp' => 1301644800,
'user' => 'UTSysop',
'bot' => false,
'notify_url' => null,
'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-' . self::dbPrefix(),
] ),
$line
);
return true;
} ) );
$this->overrideConfigValue(
MainConfigNames::RCFeeds,
[
'myfeed' => [
'class' => $feed,
'uri' => 'test://localhost:1234',
'formatter' => JSONRCFeedFormatter::class,
],
]
);
$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();
}
}
|