View source
<?php
namespace Symfony\Component\Validator\Tests\Constraints;
use Symfony\Component\Validator\Constraints\Uuid;
use Symfony\Component\Validator\Constraints\UuidValidator;
use Symfony\Component\Validator\Validation;
class UuidValidatorTest extends AbstractConstraintValidatorTest {
protected function getApiVersion() {
return Validation::API_VERSION_2_5;
}
protected function createValidator() {
return new UuidValidator();
}
public function testNullIsValid() {
$this->validator
->validate(null, new Uuid());
$this
->assertNoViolation();
}
public function testEmptyStringIsValid() {
$this->validator
->validate('', new Uuid());
$this
->assertNoViolation();
}
public function testExpectsStringCompatibleType() {
$this->validator
->validate(new \stdClass(), new Uuid());
}
public function testValidStrictUuids($uuid, $versions = null) {
$constraint = new Uuid();
if (null !== $versions) {
$constraint->versions = $versions;
}
$this->validator
->validate($uuid, $constraint);
$this
->assertNoViolation();
}
public function getValidStrictUuids() {
return array(
array(
'216fff40-98d9-11e3-a5e2-0800200c9a66',
),
array(
'216fff40-98d9-11e3-a5e2-0800200c9a66',
array(
Uuid::V1_MAC,
),
),
array(
'216FFF40-98D9-11E3-A5E2-0800200C9A66',
),
array(
'456daefb-5aa6-41b5-8dbc-068b05a8b201',
),
array(
'456daEFb-5AA6-41B5-8DBC-068B05A8B201',
),
array(
'456daEFb-5AA6-41B5-8DBC-068B05A8B201',
array(
Uuid::V4_RANDOM,
),
),
);
}
public function testInvalidStrictUuids($uuid, $code, $versions = null) {
$constraint = new Uuid(array(
'message' => 'testMessage',
));
if (null !== $versions) {
$constraint->versions = $versions;
}
$this->validator
->validate($uuid, $constraint);
$this
->buildViolation('testMessage')
->setParameter('{{ value }}', '"' . $uuid . '"')
->setCode($code)
->assertRaised();
}
public function getInvalidStrictUuids() {
return array(
array(
'216fff40-98d9-11e3-a5e2_0800200c9a66',
Uuid::INVALID_CHARACTERS_ERROR,
),
array(
'216gff40-98d9-11e3-a5e2-0800200c9a66',
Uuid::INVALID_CHARACTERS_ERROR,
),
array(
'216Gff40-98d9-11e3-a5e2-0800200c9a66',
Uuid::INVALID_CHARACTERS_ERROR,
),
array(
'216fff40-98d9-11e3-a5e-20800200c9a66',
Uuid::INVALID_HYPHEN_PLACEMENT_ERROR,
),
array(
'216f-ff40-98d9-11e3-a5e2-0800200c9a66',
Uuid::INVALID_HYPHEN_PLACEMENT_ERROR,
),
array(
'216fff40-98d9-11e3-a5e2-0800-200c9a66',
Uuid::INVALID_HYPHEN_PLACEMENT_ERROR,
),
array(
'216fff40-98d9-11e3-a5e2-0800200c-9a66',
Uuid::INVALID_HYPHEN_PLACEMENT_ERROR,
),
array(
'216fff40-98d9-11e3-a5e20800200c9a66',
Uuid::INVALID_HYPHEN_PLACEMENT_ERROR,
),
array(
'216fff4098d911e3a5e20800200c9a66',
Uuid::INVALID_HYPHEN_PLACEMENT_ERROR,
),
array(
'216fff40-98d9-11e3-a5e2-0800200c9a6',
Uuid::TOO_SHORT_ERROR,
),
array(
'216fff40-98d9-11e3-a5e2-0800200c9a666',
Uuid::TOO_LONG_ERROR,
),
array(
'216fff40-98d9-01e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-61e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-71e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-81e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-91e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-a1e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-b1e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-c1e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-d1e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-e1e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-f1e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
),
array(
'216fff40-98d9-11e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
array(
Uuid::V2_DCE,
Uuid::V3_MD5,
Uuid::V4_RANDOM,
Uuid::V5_SHA1,
),
),
array(
'216fff40-98d9-21e3-a5e2-0800200c9a66',
Uuid::INVALID_VERSION_ERROR,
array(
Uuid::V1_MAC,
Uuid::V3_MD5,
Uuid::V4_RANDOM,
Uuid::V5_SHA1,
),
),
array(
'216fff40-98d9-11e3-05e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-15e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-25e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-35e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-45e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-55e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-65e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-75e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-c5e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-d5e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-e5e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'216fff40-98d9-11e3-f5e2-0800200c9a66',
Uuid::INVALID_VARIANT_ERROR,
),
array(
'{216fff40-98d9-11e3-a5e2-0800200c9a66}',
Uuid::INVALID_CHARACTERS_ERROR,
),
array(
'[216fff40-98d9-11e3-a5e2-0800200c9a66]',
Uuid::INVALID_CHARACTERS_ERROR,
),
);
}
public function testValidNonStrictUuids($uuid) {
$constraint = new Uuid(array(
'strict' => false,
));
$this->validator
->validate($uuid, $constraint);
$this
->assertNoViolation();
}
public function getValidNonStrictUuids() {
return array(
array(
'216fff40-98d9-11e3-a5e2-0800200c9a66',
),
array(
'216FFF40-98D9-11E3-A5E2-0800200C9A66',
),
array(
'456daefb-5aa6-41b5-8dbc-068b05a8b201',
),
array(
'456DAEFb-5AA6-41B5-8DBC-068b05a8B201',
),
array(
'216f-ff40-98d9-11e3-a5e2-0800-200c-9a66',
),
array(
'216fff40-98d911e3-a5e20800-200c9a66',
),
array(
'216fff4098d911e3a5e20800200c9a66',
),
array(
'{216fff40-98d9-11e3-a5e2-0800200c9a66}',
),
array(
'[216fff40-98d9-11e3-a5e2-0800200c9a66]',
),
);
}
public function testInvalidNonStrictUuids($uuid, $code) {
$constraint = new Uuid(array(
'strict' => false,
'message' => 'myMessage',
));
$this->validator
->validate($uuid, $constraint);
$this
->buildViolation('myMessage')
->setParameter('{{ value }}', '"' . $uuid . '"')
->setCode($code)
->assertRaised();
}
public function getInvalidNonStrictUuids() {
return array(
array(
'216fff40-98d9-11e3-a5e2_0800200c9a66',
Uuid::INVALID_CHARACTERS_ERROR,
),
array(
'216gff40-98d9-11e3-a5e2-0800200c9a66',
Uuid::INVALID_CHARACTERS_ERROR,
),
array(
'216Gff40-98d9-11e3-a5e2-0800200c9a66',
Uuid::INVALID_CHARACTERS_ERROR,
),
array(
'216fff40-98d9-11e3-a5e2_0800200c9a6',
Uuid::INVALID_CHARACTERS_ERROR,
),
array(
'216fff40-98d9-11e3-a5e-20800200c9a66',
Uuid::INVALID_HYPHEN_PLACEMENT_ERROR,
),
array(
'216fff40-98d9-11e3-a5e2-0800200c9a6',
Uuid::TOO_SHORT_ERROR,
),
array(
'216fff40-98d9-11e3-a5e2-0800200c9a666',
Uuid::TOO_LONG_ERROR,
),
);
}
}