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
|
<?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' => '',
'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',
] ),
$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();
}
}
|