class IpValidatorTest in Plug 7
Hierarchy
- class \Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest extends \Symfony\Component\Validator\Tests\Constraints\PHPUnit_Framework_TestCase- class \Symfony\Component\Validator\Tests\Constraints\IpValidatorTest
 
Expanded class hierarchy of IpValidatorTest
File
- lib/Symfony/ validator/ Symfony/ Component/ Validator/ Tests/ Constraints/ IpValidatorTest.php, line 18 
Namespace
Symfony\Component\Validator\Tests\ConstraintsView source
class IpValidatorTest extends AbstractConstraintValidatorTest {
  protected function getApiVersion() {
    return Validation::API_VERSION_2_5;
  }
  protected function createValidator() {
    return new IpValidator();
  }
  public function testNullIsValid() {
    $this->validator
      ->validate(null, new Ip());
    $this
      ->assertNoViolation();
  }
  public function testEmptyStringIsValid() {
    $this->validator
      ->validate('', new Ip());
    $this
      ->assertNoViolation();
  }
  /**
   * @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() {
    new Ip(array(
      'version' => 666,
    ));
  }
  /**
   * @dataProvider getValidIpsV4
   */
  public function testValidIpsV4($ip) {
    $this->validator
      ->validate($ip, new Ip(array(
      'version' => Ip::V4,
    )));
    $this
      ->assertNoViolation();
  }
  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->validator
      ->validate($ip, new Ip(array(
      'version' => Ip::V6,
    )));
    $this
      ->assertNoViolation();
  }
  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->validator
      ->validate($ip, new Ip(array(
      'version' => Ip::ALL,
    )));
    $this
      ->assertNoViolation();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  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->validator
      ->validate($ip, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"' . $ip . '"')
      ->assertRaised();
  }
  public function getInvalidPublicIpsAll() {
    return array_merge($this
      ->getInvalidPublicIpsV4(), $this
      ->getInvalidPublicIpsV6());
  }
} 
      