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
|
<?php
namespace MediaWiki\CheckUser\Tests;
use ExtensionRegistry;
use MediaWiki\CheckUser\PreliminaryCheckPager;
use MediaWiki\CheckUser\PreliminaryCheckService;
use MediaWiki\CheckUser\TokenQueryManager;
use MediaWiki\MediaWikiServices;
use MediaWiki\User\UserGroupManagerFactory;
use MediaWikiIntegrationTestCase;
use RequestContext;
use Wikimedia\Rdbms\ILBFactory;
/**
* @group CheckUser
* @covers \MediaWiki\CheckUser\PreliminaryCheckPager
*/
class PreliminaryCheckPagerTest extends MediaWikiIntegrationTestCase {
/**
* @return MockObject|ExtensionRegistry
*/
private function getMockExtensionRegistry() {
return $this->getMockBuilder( ExtensionRegistry::class )
->disableOriginalConstructor()->getMock();
}
/**
* @return MockObject|TokenQueryManager
*/
private function getMockTokenQueryManager() {
return $this->getMockBuilder( TokenQueryManager::class )
->disableOriginalConstructor()->getMock();
}
/**
* @return MockObject|PreliminaryCheckService
*/
private function getMockPreliminaryCheckService() {
return $this->getMockBuilder( PreliminaryCheckService::class )
->disableOriginalConstructor()->getMock();
}
public function testGetQueryInfoFiltersIPsFromTargets() {
$registry = $this->getMockExtensionRegistry();
$registry->method( 'isLoaded' )->willReturn( true );
$tokenQueryManager = $this->getMockTokenQueryManager();
$tokenQueryManager->method( 'getDataFromRequest' )->willReturn( [
'targets' => [ 'UserA', 'UserB', '1.2.3.4' ]
] );
$lbf = $this->getMockBuilder( ILBFactory::class )
->disableOriginalConstructor()->getMock();
$preliminaryCheckService = new PreliminaryCheckService(
$lbf,
$registry,
$this->createNoOpMock( UserGroupManagerFactory::class ),
'testwiki'
);
$services = MediaWikiServices::getInstance();
$pager = new PreliminaryCheckPager( RequestContext::getMain(),
$services->getLinkRenderer(),
$services->getNamespaceInfo(),
$tokenQueryManager,
$registry,
$preliminaryCheckService
);
$result = $pager->getQueryInfo();
$expected = [
'tables' => 'localuser',
'fields' => [
'lu_name',
'lu_wiki',
],
'conds' => [ 'lu_name' => [ 'UserA', 'UserB' ] ]
];
$this->assertSame( $expected, $result );
}
public function testGetIndexFieldLocal() {
$services = MediaWikiServices::getInstance();
$pager = new PreliminaryCheckPager(
RequestContext::getMain(),
$services->getLinkRenderer(),
$services->getNamespaceInfo(),
$services->get( 'CheckUserTokenQueryManager' ),
$this->getMockExtensionRegistry(),
$this->getMockPreliminaryCheckService()
);
$this->assertEquals( 'user_name', $pager->getIndexfield() );
}
public function testGetIndexFieldGlobal() {
$services = MediaWikiServices::getInstance();
$registry = $this->getMockExtensionRegistry();
$preliminaryCheckService = $this->getMockPreliminaryCheckService();
$pager = $this->getMockBuilder( PreliminaryCheckPager::class )
->setConstructorArgs( [ RequestContext::getMain(),
$services->getLinkRenderer(),
$services->getNamespaceInfo(),
$services->get( 'CheckUserTokenQueryManager' ),
$registry,
$preliminaryCheckService
] )
->setMethods( [ 'isGlobalCheck' ] )
->getMock();
$pager->method( 'isGlobalCheck' )->willReturn( true );
$this->assertEquals( [ [ 'lu_name', 'lu_wiki' ] ], $pager->getIndexfield() );
}
}
|