respect-validation/tests/unit/Rules/IpTest.php

144 lines
4.4 KiB
PHP
Raw Normal View History

<?php
2015-06-08 16:47:14 +02:00
/*
* This file is part of Respect/Validation.
*
* (c) Alexandre Gomes Gaigalas <alexandre@gaigalas.net>
*
* For the full copyright and license information, please view the "LICENSE.md"
* file that was distributed with this source code.
*/
namespace Respect\Validation\Rules;
/**
* @group rule
* @covers Respect\Validation\Rules\Ip
* @covers Respect\Validation\Exceptions\IpException
*/
class IpTest extends \PHPUnit_Framework_TestCase
{
/**
* @dataProvider providerForIp
*/
2015-06-08 16:47:14 +02:00
public function testValidIpsShouldReturnTrue($input, $options = null)
{
2013-01-09 15:48:11 +01:00
$ipValidator = new Ip($options);
$this->assertTrue($ipValidator->__invoke($input));
2013-01-09 15:48:11 +01:00
$this->assertTrue($ipValidator->assert($input));
$this->assertTrue($ipValidator->check($input));
}
/**
* @dataProvider providerForIpBetweenRange
*/
public function testIpsBetweenRangeShouldReturnTrue($input, $networkRange)
2013-01-09 15:48:11 +01:00
{
$ipValidator = new Ip($networkRange);
$this->assertTrue($ipValidator->__invoke($input));
2013-01-09 15:48:11 +01:00
$this->assertTrue($ipValidator->assert($input));
$this->assertTrue($ipValidator->check($input));
}
/**
* @dataProvider providerForNotIp
* @expectedException Respect\Validation\Exceptions\IpException
*/
2015-06-08 16:47:14 +02:00
public function testInvalidIpsShouldThrowIpException($input, $options = null)
{
2013-01-09 15:48:11 +01:00
$ipValidator = new Ip($options);
$this->assertFalse($ipValidator->__invoke($input));
2013-01-09 15:48:11 +01:00
$this->assertFalse($ipValidator->assert($input));
}
/**
* @dataProvider providerForIpOutsideRange
* @expectedException Respect\Validation\Exceptions\IpException
*/
public function testIpsOutsideRangeShouldReturnFalse($input, $networkRange)
2013-01-09 15:48:11 +01:00
{
$ipValidator = new Ip($networkRange);
$this->assertFalse($ipValidator->__invoke($input));
2013-01-09 15:48:11 +01:00
$this->assertFalse($ipValidator->assert($input));
}
public function providerForIp()
{
return array(
array('127.0.0.1'),
);
}
2013-01-09 15:48:11 +01:00
public function providerForIpBetweenRange()
{
return array(
array('127.0.0.1', '127.*'),
array('127.0.0.1', '127.0.*'),
array('127.0.0.1', '127.0.0.*'),
array('192.168.2.6', '192.168.*.6'),
array('192.168.2.6', '192.*.2.6'),
array('10.168.2.6', '*.168.2.6'),
array('192.168.2.6', '192.168.*.*'),
array('192.10.2.6', '192.*.*.*'),
array('192.168.255.156', '*'),
array('192.168.255.156', '*.*.*.*'),
array('127.0.0.1', '127.0.0.0-127.0.0.255'),
array('192.168.2.6', '192.168.0.0-192.168.255.255'),
array('192.10.2.6', '192.0.0.0-192.255.255.255'),
array('192.168.255.156', '0.0.0.0-255.255.255.255'),
array('220.78.173.2', '220.78.168/21'),
array('220.78.173.2', '220.78.168.0/21'),
2013-01-14 15:35:04 +01:00
array('220.78.173.2', '220.78.168.0/255.255.248.0'),
2013-01-09 15:48:11 +01:00
);
}
public function providerForNotIp()
{
return array(
2015-10-07 05:54:14 +02:00
array(''),
array(null),
array('j'),
array(' '),
array('Foo'),
array('192.168.0.1', FILTER_FLAG_NO_PRIV_RANGE),
);
}
2013-01-09 15:48:11 +01:00
public function providerForIpOutsideRange()
{
return array(
array('127.0.0.1', '127.0.1.*'),
array('192.168.2.6', '192.163.*.*'),
array('192.10.2.6', '193.*.*.*'),
array('127.0.0.1', '127.0.1.0-127.0.1.255'),
array('192.168.2.6', '192.163.0.0-192.163.255.255'),
array('192.10.2.6', '193.168.0.0-193.255.255.255'),
array('220.78.176.1', '220.78.168/21'),
array('220.78.176.2', '220.78.168.0/21'),
2013-01-14 15:35:04 +01:00
array('220.78.176.3', '220.78.168.0/255.255.248.0'),
2013-01-09 15:48:11 +01:00
);
}
/**
* @dataProvider providerForInvalidRanges
* @expectedException Respect\Validation\Exceptions\ComponentException
*/
public function testInvalidRangeShouldRaiseException($range)
2013-01-09 15:48:11 +01:00
{
$o = new Ip($range);
}
public function providerForInvalidRanges()
{
return array(
array('192.168'),
array('asd'),
array('192.168.0.0-192.168.0.256'),
array('192.168.0.0-192.168.0.1/4'),
array('192.168.0/1'),
array('192.168.2.0/256.256.256.256'),
array('192.168.2.0/8.256.256.256'),
);
}
}