|
|
|
|
@ -40,7 +40,7 @@ class ThrottlerTest extends TestCase {
|
|
|
|
|
private $dbConnection;
|
|
|
|
|
/** @var ILogger */
|
|
|
|
|
private $logger;
|
|
|
|
|
/** @var IConfig */
|
|
|
|
|
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
|
|
|
|
|
private $config;
|
|
|
|
|
|
|
|
|
|
public function setUp() {
|
|
|
|
|
@ -120,4 +120,92 @@ class ThrottlerTest extends TestCase {
|
|
|
|
|
$this->invokePrivate($this->throttler, 'getIPv6Subnet', ['2001:0db8:85a3:0000:0000:8a2e:0370:7334', 40])
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function dataIsIPWhitelisted() {
|
|
|
|
|
return [
|
|
|
|
|
[
|
|
|
|
|
'10.10.10.10',
|
|
|
|
|
[
|
|
|
|
|
'whitelist_0' => '10.10.10.0/24',
|
|
|
|
|
],
|
|
|
|
|
true,
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
'10.10.10.10',
|
|
|
|
|
[
|
|
|
|
|
'whitelist_0' => '192.168.0.0/16',
|
|
|
|
|
],
|
|
|
|
|
false,
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
'10.10.10.10',
|
|
|
|
|
[
|
|
|
|
|
'whitelist_0' => '192.168.0.0/16',
|
|
|
|
|
'whitelist_1' => '10.10.10.0/24',
|
|
|
|
|
],
|
|
|
|
|
true,
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
'dead:beef:cafe::1',
|
|
|
|
|
[
|
|
|
|
|
'whitelist_0' => '192.168.0.0/16',
|
|
|
|
|
'whitelist_1' => '10.10.10.0/24',
|
|
|
|
|
'whitelist_2' => 'deaf:beef:cafe:1234::/64'
|
|
|
|
|
],
|
|
|
|
|
false,
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
'dead:beef:cafe::1',
|
|
|
|
|
[
|
|
|
|
|
'whitelist_0' => '192.168.0.0/16',
|
|
|
|
|
'whitelist_1' => '10.10.10.0/24',
|
|
|
|
|
'whitelist_2' => 'deaf:beef::/64'
|
|
|
|
|
],
|
|
|
|
|
false,
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
'dead:beef:cafe::1',
|
|
|
|
|
[
|
|
|
|
|
'whitelist_0' => '192.168.0.0/16',
|
|
|
|
|
'whitelist_1' => '10.10.10.0/24',
|
|
|
|
|
'whitelist_2' => 'deaf:cafe::/8'
|
|
|
|
|
],
|
|
|
|
|
true,
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
'invalid',
|
|
|
|
|
[],
|
|
|
|
|
false,
|
|
|
|
|
],
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider dataIsIPWhitelisted
|
|
|
|
|
*
|
|
|
|
|
* @param string $ip
|
|
|
|
|
* @param string[] $whitelists
|
|
|
|
|
* @param bool $isWhiteListed
|
|
|
|
|
*/
|
|
|
|
|
public function testIsIPWhitelisted($ip, $whitelists, $isWhiteListed) {
|
|
|
|
|
$this->config->method('getAppKeys')
|
|
|
|
|
->with($this->equalTo('bruteForce'))
|
|
|
|
|
->willReturn(array_keys($whitelists));
|
|
|
|
|
|
|
|
|
|
$this->config->method('getAppValue')
|
|
|
|
|
->will($this->returnCallback(function($app, $key, $default) use ($whitelists) {
|
|
|
|
|
if ($app !== 'bruteForce') {
|
|
|
|
|
return $default;
|
|
|
|
|
}
|
|
|
|
|
if (isset($whitelists[$key])) {
|
|
|
|
|
return $whitelists[$key];
|
|
|
|
|
}
|
|
|
|
|
return $default;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
$this->assertSame(
|
|
|
|
|
$isWhiteListed,
|
|
|
|
|
$this->invokePrivate($this->throttler, 'isIPWhitelisted', [$ip])
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|