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
118
|
<?php
/**
* @group Database
*/
class ContribsPagerTest extends MediaWikiTestCase {
/** @var ContribsPager */
private $pager;
function setUp() {
$context = new RequestContext();
$this->pager = new ContribsPager( $context, [
'start' => '2017-01-01',
'end' => '2017-02-02',
] );
parent::setUp();
}
/**
* @covers ContribsPager::processDateFilter
* @dataProvider dateFilterOptionProcessingProvider
* @param array $inputOpts Input options
* @param array $expectedOpts Expected options
*/
public function testDateFilterOptionProcessing( $inputOpts, $expectedOpts ) {
$this->assertArraySubset( $expectedOpts, ContribsPager::processDateFilter( $inputOpts ) );
}
public static function dateFilterOptionProcessingProvider() {
return [
[ [ 'start' => '2016-05-01',
'end' => '2016-06-01',
'year' => null,
'month' => null ],
[ 'start' => '2016-05-01',
'end' => '2016-06-01' ] ],
[ [ 'start' => '2016-05-01',
'end' => '2016-06-01',
'year' => '',
'month' => '' ],
[ 'start' => '2016-05-01',
'end' => '2016-06-01' ] ],
[ [ 'start' => '2016-05-01',
'end' => '2016-06-01',
'year' => '2012',
'month' => '5' ],
[ 'start' => '',
'end' => '2012-05-31' ] ],
[ [ 'start' => '',
'end' => '',
'year' => '2012',
'month' => '5' ],
[ 'start' => '',
'end' => '2012-05-31' ] ],
[ [ 'start' => '',
'end' => '',
'year' => '2012',
'month' => '' ],
[ 'start' => '',
'end' => '2012-12-31' ] ],
];
}
/**
* @covers ContribsPager::isQueryableRange
* @dataProvider provideQueryableRanges
*/
public function testQueryableRanges( $ipRange ) {
$this->setMwGlobals( [
'wgRangeContributionsCIDRLimit' => [
'IPv4' => 16,
'IPv6' => 32,
],
] );
$this->assertTrue(
$this->pager->isQueryableRange( $ipRange ),
"$ipRange is a queryable IP range"
);
}
public function provideQueryableRanges() {
return [
[ '116.17.184.5/32' ],
[ '0.17.184.5/16' ],
[ '2000::/32' ],
[ '2001:db8::/128' ],
];
}
/**
* @covers ContribsPager::isQueryableRange
* @dataProvider provideUnqueryableRanges
*/
public function testUnqueryableRanges( $ipRange ) {
$this->setMwGlobals( [
'wgRangeContributionsCIDRLimit' => [
'IPv4' => 16,
'IPv6' => 32,
],
] );
$this->assertFalse(
$this->pager->isQueryableRange( $ipRange ),
"$ipRange is not a queryable IP range"
);
}
public function provideUnqueryableRanges() {
return [
[ '116.17.184.5/33' ],
[ '0.17.184.5/15' ],
[ '2000::/31' ],
[ '2001:db8::/9999' ],
];
}
}
|