Viewing file: IpValidatorTest.php (12.32 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */
namespace Symfony\Component\Validator\Tests\Constraints;
use Symfony\Component\Validator\Constraints\Ip; use Symfony\Component\Validator\Constraints\IpValidator;
class IpValidatorTest extends \PHPUnit_Framework_TestCase { protected $context; protected $validator;
protected function setUp() { $this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false); $this->validator = new IpValidator(); $this->validator->initialize($this->context); }
protected function tearDown() { $this->context = null; $this->validator = null; }
public function testNullIsValid() { $this->context->expects($this->never()) ->method('addViolation');
$this->validator->validate(null, new Ip()); }
public function testEmptyStringIsValid() { $this->context->expects($this->never()) ->method('addViolation');
$this->validator->validate('', new Ip()); }
/** * @expectedException \Symfony\Component\Validator\Exception\UnexpectedTypeException */ public function testExpectsStringCompatibleType() { $this->validator->validate(new \stdClass(), new Ip()); }
/** * @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException */ public function testInvalidValidatorVersion() { $ip = new Ip(array( 'version' => 666, )); }
/** * @dataProvider getValidIpsV4 */ public function testValidIpsV4($ip) { $this->context->expects($this->never()) ->method('addViolation');
$this->validator->validate($ip, new Ip(array( 'version' => Ip::V4, ))); }
public function getValidIpsV4() { return array( array('0.0.0.0'), array('10.0.0.0'), array('123.45.67.178'), array('172.16.0.0'), array('192.168.1.0'), array('224.0.0.1'), array('255.255.255.255'), array('127.0.0.0'), ); }
/** * @dataProvider getValidIpsV6 */ public function testValidIpsV6($ip) { $this->context->expects($this->never()) ->method('addViolation');
$this->validator->validate($ip, new Ip(array( 'version' => Ip::V6, ))); }
public function getValidIpsV6() { return array( array('2001:0db8:85a3:0000:0000:8a2e:0370:7334'), array('2001:0DB8:85A3:0000:0000:8A2E:0370:7334'), array('2001:0Db8:85a3:0000:0000:8A2e:0370:7334'), array('fdfe:dcba:9876:ffff:fdc6:c46b:bb8f:7d4c'), array('fdc6:c46b:bb8f:7d4c:fdc6:c46b:bb8f:7d4c'), array('fdc6:c46b:bb8f:7d4c:0000:8a2e:0370:7334'), array('fe80:0000:0000:0000:0202:b3ff:fe1e:8329'), array('fe80:0:0:0:202:b3ff:fe1e:8329'), array('fe80::202:b3ff:fe1e:8329'), array('0:0:0:0:0:0:0:0'), array('::'), array('0::'), array('::0'), array('0::0'), // IPv4 mapped to IPv6 array('2001:0db8:85a3:0000:0000:8a2e:0.0.0.0'), array('::0.0.0.0'), array('::255.255.255.255'), array('::123.45.67.178'), ); }
/** * @dataProvider getValidIpsAll */ public function testValidIpsAll($ip) { $this->context->expects($this->never()) ->method('addViolation');
$this->validator->validate($ip, new Ip(array( 'version' => Ip::ALL, ))); }
public function getValidIpsAll() { return array_merge($this->getValidIpsV4(), $this->getValidIpsV6()); }
/** * @dataProvider getInvalidIpsV4 */ public function testInvalidIpsV4($ip) { $constraint = new Ip(array( 'version' => Ip::V4, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidIpsV4() { return array( array('0'), array('0.0'), array('0.0.0'), array('256.0.0.0'), array('0.256.0.0'), array('0.0.256.0'), array('0.0.0.256'), array('-1.0.0.0'), array('foobar'), ); }
/** * @dataProvider getInvalidPrivateIpsV4 */ public function testInvalidPrivateIpsV4($ip) { $constraint = new Ip(array( 'version' => Ip::V4_NO_PRIV, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidPrivateIpsV4() { return array( array('10.0.0.0'), array('172.16.0.0'), array('192.168.1.0'), ); }
/** * @dataProvider getInvalidReservedIpsV4 */ public function testInvalidReservedIpsV4($ip) { $constraint = new Ip(array( 'version' => Ip::V4_NO_RES, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidReservedIpsV4() { return array( array('0.0.0.0'), array('224.0.0.1'), array('255.255.255.255'), ); }
/** * @dataProvider getInvalidPublicIpsV4 */ public function testInvalidPublicIpsV4($ip) { $constraint = new Ip(array( 'version' => Ip::V4_ONLY_PUBLIC, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidPublicIpsV4() { return array_merge($this->getInvalidPrivateIpsV4(), $this->getInvalidReservedIpsV4()); }
/** * @dataProvider getInvalidIpsV6 */ public function testInvalidIpsV6($ip) { $constraint = new Ip(array( 'version' => Ip::V6, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidIpsV6() { return array( array('z001:0db8:85a3:0000:0000:8a2e:0370:7334'), array('fe80'), array('fe80:8329'), array('fe80:::202:b3ff:fe1e:8329'), array('fe80::202:b3ff::fe1e:8329'), // IPv4 mapped to IPv6 array('2001:0db8:85a3:0000:0000:8a2e:0370:0.0.0.0'), array('::0.0'), array('::0.0.0'), array('::256.0.0.0'), array('::0.256.0.0'), array('::0.0.256.0'), array('::0.0.0.256'), ); }
/** * @dataProvider getInvalidPrivateIpsV6 */ public function testInvalidPrivateIpsV6($ip) { $constraint = new Ip(array( 'version' => Ip::V6_NO_PRIV, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidPrivateIpsV6() { return array( array('fdfe:dcba:9876:ffff:fdc6:c46b:bb8f:7d4c'), array('fdc6:c46b:bb8f:7d4c:fdc6:c46b:bb8f:7d4c'), array('fdc6:c46b:bb8f:7d4c:0000:8a2e:0370:7334'), ); }
/** * @dataProvider getInvalidReservedIpsV6 */ public function testInvalidReservedIpsV6($ip) { $constraint = new Ip(array( 'version' => Ip::V6_NO_RES, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidReservedIpsV6() { // Quoting after official filter documentation: // "FILTER_FLAG_NO_RES_RANGE = This flag does not apply to IPv6 addresses." // Full description: http://php.net/manual/en/filter.filters.flags.php return $this->getInvalidIpsV6(); }
/** * @dataProvider getInvalidPublicIpsV6 */ public function testInvalidPublicIpsV6($ip) { $constraint = new Ip(array( 'version' => Ip::V6_ONLY_PUBLIC, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidPublicIpsV6() { return array_merge($this->getInvalidPrivateIpsV6(), $this->getInvalidReservedIpsV6()); }
/** * @dataProvider getInvalidIpsAll */ public function testInvalidIpsAll($ip) { $constraint = new Ip(array( 'version' => Ip::ALL, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidIpsAll() { return array_merge($this->getInvalidIpsV4(), $this->getInvalidIpsV6()); }
/** * @dataProvider getInvalidPrivateIpsAll */ public function testInvalidPrivateIpsAll($ip) { $constraint = new Ip(array( 'version' => Ip::ALL_NO_PRIV, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidPrivateIpsAll() { return array_merge($this->getInvalidPrivateIpsV4(), $this->getInvalidPrivateIpsV6()); }
/** * @dataProvider getInvalidReservedIpsAll */ public function testInvalidReservedIpsAll($ip) { $constraint = new Ip(array( 'version' => Ip::ALL_NO_RES, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidReservedIpsAll() { return array_merge($this->getInvalidReservedIpsV4(), $this->getInvalidReservedIpsV6()); }
/** * @dataProvider getInvalidPublicIpsAll */ public function testInvalidPublicIpsAll($ip) { $constraint = new Ip(array( 'version' => Ip::ALL_ONLY_PUBLIC, 'message' => 'myMessage', ));
$this->context->expects($this->once()) ->method('addViolation') ->with('myMessage', array( '{{ value }}' => $ip, ));
$this->validator->validate($ip, $constraint); }
public function getInvalidPublicIpsAll() { return array_merge($this->getInvalidPublicIpsV4(), $this->getInvalidPublicIpsV6()); } }
|