Follows-upb36d883. By far most data providers are static (and PHPUnit expects them to be static and calls them that way). Most of these classes already had their data providers static but additional commits sloppily introduced non-static ones. * ResourceLoaderWikiModuleTest,8968d8787f. * TitleTest,545f1d3a73. Odd unused method 'dataTestIsValidMoveOperation' was introduced in550b878e63. * GlobalVarConfigTest,a3e18c3670. Change-Id: I5da99f7cd3da68c550ae507ffe1f725d31e7666f
252 lines
7.3 KiB
PHP
252 lines
7.3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group IPSet
|
|
*/
|
|
class IPSetTest extends MediaWikiTestCase {
|
|
/**
|
|
* Provides test cases for IPSetTest::testIPSet
|
|
*
|
|
* Returns an array of test cases. Each case is an array of (description,
|
|
* config, tests). Description is just text output for failure messages,
|
|
* config is an array constructor argument for IPSet, and the tests are
|
|
* an array of IP => expected (boolean) result against the config dataset.
|
|
*/
|
|
public static function provideIPSets() {
|
|
return array(
|
|
array(
|
|
'old_list_subset',
|
|
array(
|
|
'208.80.152.162',
|
|
'10.64.0.123',
|
|
'10.64.0.124',
|
|
'10.64.0.125',
|
|
'10.64.0.126',
|
|
'10.64.0.127',
|
|
'10.64.0.128',
|
|
'10.64.0.129',
|
|
'10.64.32.104',
|
|
'10.64.32.105',
|
|
'10.64.32.106',
|
|
'10.64.32.107',
|
|
'91.198.174.45',
|
|
'91.198.174.46',
|
|
'91.198.174.47',
|
|
'91.198.174.57',
|
|
'2620:0:862:1:A6BA:DBFF:FE30:CFB3',
|
|
'91.198.174.58',
|
|
'2620:0:862:1:A6BA:DBFF:FE38:FFDA',
|
|
'208.80.152.16',
|
|
'208.80.152.17',
|
|
'208.80.152.18',
|
|
'208.80.152.19',
|
|
'91.198.174.102',
|
|
'91.198.174.103',
|
|
'91.198.174.104',
|
|
'91.198.174.105',
|
|
'91.198.174.106',
|
|
'91.198.174.107',
|
|
'91.198.174.81',
|
|
'2620:0:862:1:26B6:FDFF:FEF5:B2D4',
|
|
'91.198.174.82',
|
|
'2620:0:862:1:26B6:FDFF:FEF5:ABB4',
|
|
'10.20.0.113',
|
|
'2620:0:862:102:26B6:FDFF:FEF5:AD9C',
|
|
'10.20.0.114',
|
|
'2620:0:862:102:26B6:FDFF:FEF5:7C38',
|
|
),
|
|
array(
|
|
'0.0.0.0' => false,
|
|
'255.255.255.255' => false,
|
|
'10.64.0.122' => false,
|
|
'10.64.0.123' => true,
|
|
'10.64.0.124' => true,
|
|
'10.64.0.129' => true,
|
|
'10.64.0.130' => false,
|
|
'91.198.174.81' => true,
|
|
'91.198.174.80' => false,
|
|
'0::0' => false,
|
|
'ffff:ffff:ffff:ffff:FFFF:FFFF:FFFF:FFFF' => false,
|
|
'2001:db8::1234' => false,
|
|
'2620:0:862:1:26b6:fdff:fef5:abb3' => false,
|
|
'2620:0:862:1:26b6:fdff:fef5:abb4' => true,
|
|
'2620:0:862:1:26b6:fdff:fef5:abb5' => false,
|
|
),
|
|
),
|
|
array(
|
|
'new_cidr_set',
|
|
array(
|
|
'208.80.154.0/26',
|
|
'2620:0:861:1::/64',
|
|
'208.80.154.128/26',
|
|
'2620:0:861:2::/64',
|
|
'208.80.154.64/26',
|
|
'2620:0:861:3::/64',
|
|
'208.80.155.96/27',
|
|
'2620:0:861:4::/64',
|
|
'10.64.0.0/22',
|
|
'2620:0:861:101::/64',
|
|
'10.64.16.0/22',
|
|
'2620:0:861:102::/64',
|
|
'10.64.32.0/22',
|
|
'2620:0:861:103::/64',
|
|
'10.64.48.0/22',
|
|
'2620:0:861:107::/64',
|
|
'91.198.174.0/25',
|
|
'2620:0:862:1::/64',
|
|
'10.20.0.0/24',
|
|
'2620:0:862:102::/64',
|
|
'10.128.0.0/24',
|
|
'2620:0:863:101::/64',
|
|
'10.2.4.26',
|
|
),
|
|
array(
|
|
'0.0.0.0' => false,
|
|
'255.255.255.255' => false,
|
|
'10.2.4.25' => false,
|
|
'10.2.4.26' => true,
|
|
'10.2.4.27' => false,
|
|
'10.20.0.255' => true,
|
|
'10.128.0.0' => true,
|
|
'10.64.17.55' => true,
|
|
'10.64.20.0' => false,
|
|
'10.64.27.207' => false,
|
|
'10.64.31.255' => false,
|
|
'0::0' => false,
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => false,
|
|
'2001:DB8::1' => false,
|
|
'2620:0:861:106::45' => false,
|
|
'2620:0:862:103::' => false,
|
|
'2620:0:862:102:10:20:0:113' => true,
|
|
),
|
|
),
|
|
array(
|
|
'empty_set',
|
|
array(),
|
|
array(
|
|
'0.0.0.0' => false,
|
|
'255.255.255.255' => false,
|
|
'10.2.4.25' => false,
|
|
'10.2.4.26' => false,
|
|
'10.2.4.27' => false,
|
|
'10.20.0.255' => false,
|
|
'10.128.0.0' => false,
|
|
'10.64.17.55' => false,
|
|
'10.64.20.0' => false,
|
|
'10.64.27.207' => false,
|
|
'10.64.31.255' => false,
|
|
'0::0' => false,
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => false,
|
|
'2001:DB8::1' => false,
|
|
'2620:0:861:106::45' => false,
|
|
'2620:0:862:103::' => false,
|
|
'2620:0:862:102:10:20:0:113' => false,
|
|
),
|
|
),
|
|
array(
|
|
'edge_cases',
|
|
array(
|
|
'0.0.0.0',
|
|
'255.255.255.255',
|
|
'::',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
|
|
'10.10.10.10/25', // host bits intentional
|
|
),
|
|
array(
|
|
'0.0.0.0' => true,
|
|
'255.255.255.255' => true,
|
|
'10.2.4.25' => false,
|
|
'10.2.4.26' => false,
|
|
'10.2.4.27' => false,
|
|
'10.20.0.255' => false,
|
|
'10.128.0.0' => false,
|
|
'10.64.17.55' => false,
|
|
'10.64.20.0' => false,
|
|
'10.64.27.207' => false,
|
|
'10.64.31.255' => false,
|
|
'0::0' => true,
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => true,
|
|
'2001:DB8::1' => false,
|
|
'2620:0:861:106::45' => false,
|
|
'2620:0:862:103::' => false,
|
|
'2620:0:862:102:10:20:0:113' => false,
|
|
'10.10.9.255' => false,
|
|
'10.10.10.0' => true,
|
|
'10.10.10.1' => true,
|
|
'10.10.10.10' => true,
|
|
'10.10.10.126' => true,
|
|
'10.10.10.127' => true,
|
|
'10.10.10.128' => false,
|
|
'10.10.10.177' => false,
|
|
'10.10.10.255' => false,
|
|
'10.10.11.0' => false,
|
|
),
|
|
),
|
|
array(
|
|
'exercise_optimizer',
|
|
array(
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffff:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fffe:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fffd:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fffc:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fffb:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fffa:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff9:8000/113',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff9:0/113',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff8:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff7:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff6:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff5:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff4:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff3:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff2:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff1:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff0:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffef:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffee:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffec:0/111',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffeb:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffea:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffe9:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffe8:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffe7:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffe6:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffe5:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffe4:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffe3:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffe2:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffe1:0/112',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffe0:0/110',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffc0:0/107',
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffa0:0/107',
|
|
),
|
|
array(
|
|
'0.0.0.0' => false,
|
|
'255.255.255.255' => false,
|
|
'::' => false,
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ff9f:ffff' => false,
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffa0:0' => true,
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffc0:1234' => true,
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffed:ffff' => true,
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff4:4444' => true,
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:fff9:8080' => true,
|
|
'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => true,
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Validates IPSet loading and matching code
|
|
*
|
|
* @covers IPSet
|
|
* @dataProvider provideIPSets
|
|
*/
|
|
public function testIPSet( $desc, array $cfg, array $tests ) {
|
|
$ipset = new IPSet( $cfg );
|
|
foreach ( $tests as $ip => $expected ) {
|
|
$result = $ipset->match( $ip );
|
|
$this->assertEquals( $expected, $result, "Incorrect match() result for $ip in dataset $desc" );
|
|
}
|
|
}
|
|
}
|