Upgrade 1-11.38

This commit is contained in:
xesmyd
2026-03-30 14:10:30 +02:00
parent f2a7e6d1fc
commit ac648ef29d
24665 changed files with 69682 additions and 2205004 deletions
@@ -13,6 +13,7 @@ namespace Symfony\Component\Validator\Tests\Constraints;
use Symfony\Component\Intl\Util\IntlTestHelper;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
use Symfony\Component\Validator\Test\ConstraintValidatorTestCase;
class ComparisonTest_Class
@@ -28,6 +29,11 @@ class ComparisonTest_Class
{
return (string) $this->value;
}
public function getValue()
{
return $this->value;
}
}
/**
@@ -76,12 +82,25 @@ abstract class AbstractComparisonValidatorTestCase extends ConstraintValidatorTe
/**
* @dataProvider provideInvalidConstraintOptions
* @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException
* @expectedExceptionMessage requires either the "value" or "propertyPath" option to be set.
*/
public function testThrowsConstraintExceptionIfNoValueOrProperty($options)
public function testThrowsConstraintExceptionIfNoValueOrPropertyPath($options)
{
$this->createConstraint($options);
}
/**
* @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException
* @expectedExceptionMessage requires only one of the "value" or "propertyPath" options to be set, not both.
*/
public function testThrowsConstraintExceptionIfBothValueAndPropertyPath()
{
$this->createConstraint((array(
'value' => 'value',
'propertyPath' => 'propertyPath',
)));
}
/**
* @dataProvider provideAllValidComparisons
*
@@ -113,11 +132,75 @@ abstract class AbstractComparisonValidatorTestCase extends ConstraintValidatorTe
return $comparisons;
}
/**
* @dataProvider provideValidComparisonsToPropertyPath
*/
public function testValidComparisonToPropertyPath($comparedValue)
{
$constraint = $this->createConstraint(array('propertyPath' => 'value'));
$object = new ComparisonTest_Class(5);
$this->setObject($object);
$this->validator->validate($comparedValue, $constraint);
$this->assertNoViolation();
}
/**
* @dataProvider provideValidComparisonsToPropertyPath
*/
public function testValidComparisonToPropertyPathOnArray($comparedValue)
{
$constraint = $this->createConstraint(array('propertyPath' => '[root][value]'));
$this->setObject(array('root' => array('value' => 5)));
$this->validator->validate($comparedValue, $constraint);
$this->assertNoViolation();
}
public function testNoViolationOnNullObjectWithPropertyPath()
{
$constraint = $this->createConstraint(array('propertyPath' => 'propertyPath'));
$this->setObject(null);
$this->validator->validate('some data', $constraint);
$this->assertNoViolation();
}
public function testInvalidValuePath()
{
$constraint = $this->createConstraint(array('propertyPath' => 'foo'));
if (method_exists($this, 'expectException')) {
$this->expectException(ConstraintDefinitionException::class);
$this->expectExceptionMessage(sprintf('Invalid property path "foo" provided to "%s" constraint', \get_class($constraint)));
} else {
$this->setExpectedException(ConstraintDefinitionException::class, sprintf('Invalid property path "foo" provided to "%s" constraint', \get_class($constraint)));
}
$object = new ComparisonTest_Class(5);
$this->setObject($object);
$this->validator->validate(5, $constraint);
}
/**
* @return array
*/
abstract public function provideValidComparisons();
/**
* @return array
*/
abstract public function provideValidComparisonsToPropertyPath();
/**
* @dataProvider provideAllInvalidComparisons
*
@@ -1,21 +0,0 @@
<?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\Test\ConstraintValidatorTestCase;
/**
* @deprecated Since Symfony 3.2, use ConstraintValidatorTestCase instead.
*/
abstract class AbstractConstraintValidatorTest extends ConstraintValidatorTestCase
{
}
@@ -11,8 +11,8 @@
namespace Symfony\Component\Validator\Tests\Constraints;
use Symfony\Component\Validator\Constraints\BicValidator;
use Symfony\Component\Validator\Constraints\Bic;
use Symfony\Component\Validator\Constraints\BicValidator;
use Symfony\Component\Validator\Test\ConstraintValidatorTestCase;
class BicValidatorTest extends ConstraintValidatorTestCase
@@ -59,7 +59,7 @@ class CardSchemeValidatorTest extends ConstraintValidatorTestCase
$this->validator->validate($number, $constraint);
$this->buildViolation('myMessage')
->setParameter('{{ value }}', is_string($number) ? '"'.$number.'"' : $number)
->setParameter('{{ value }}', \is_string($number) ? '"'.$number.'"' : $number)
->setCode($code)
->assertRaised();
}
@@ -45,7 +45,6 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
$constraint = new Choice(array(
'choices' => array('foo', 'bar'),
'multiple' => true,
'strict' => true,
));
$this->validator->validate('asdf', $constraint);
@@ -58,7 +57,6 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
new Choice(
array(
'choices' => array('foo', 'bar'),
'strict' => true,
)
)
);
@@ -71,7 +69,7 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
*/
public function testChoicesOrCallbackExpected()
{
$this->validator->validate('foobar', new Choice(array('strict' => true)));
$this->validator->validate('foobar', new Choice());
}
/**
@@ -79,12 +77,12 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
*/
public function testValidCallbackExpected()
{
$this->validator->validate('foobar', new Choice(array('callback' => 'abcd', 'strict' => true)));
$this->validator->validate('foobar', new Choice(array('callback' => 'abcd')));
}
public function testValidChoiceArray()
{
$constraint = new Choice(array('choices' => array('foo', 'bar'), 'strict' => true));
$constraint = new Choice(array('choices' => array('foo', 'bar')));
$this->validator->validate('bar', $constraint);
@@ -93,7 +91,7 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
public function testValidChoiceCallbackFunction()
{
$constraint = new Choice(array('callback' => __NAMESPACE__.'\choice_callback', 'strict' => true));
$constraint = new Choice(array('callback' => __NAMESPACE__.'\choice_callback'));
$this->validator->validate('bar', $constraint);
@@ -104,7 +102,6 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
{
$constraint = new Choice(
array(
'strict' => true,
'callback' => function () {
return array('foo', 'bar');
},
@@ -118,7 +115,7 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
public function testValidChoiceCallbackStaticMethod()
{
$constraint = new Choice(array('callback' => array(__CLASS__, 'staticCallback'), 'strict' => true));
$constraint = new Choice(array('callback' => array(__CLASS__, 'staticCallback')));
$this->validator->validate('bar', $constraint);
@@ -130,7 +127,7 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
// search $this for "staticCallback"
$this->setObject($this);
$constraint = new Choice(array('callback' => 'staticCallback', 'strict' => true));
$constraint = new Choice(array('callback' => 'staticCallback'));
$this->validator->validate('bar', $constraint);
@@ -142,7 +139,7 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
// search $this for "objectMethodCallback"
$this->setObject($this);
$constraint = new Choice(array('callback' => 'objectMethodCallback', 'strict' => true));
$constraint = new Choice(array('callback' => 'objectMethodCallback'));
$this->validator->validate('bar', $constraint);
@@ -154,7 +151,6 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
$constraint = new Choice(array(
'choices' => array('foo', 'bar', 'baz'),
'multiple' => true,
'strict' => true,
));
$this->validator->validate(array('baz', 'bar'), $constraint);
@@ -167,7 +163,6 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
$constraint = new Choice(array(
'choices' => array('foo', 'bar'),
'message' => 'myMessage',
'strict' => true,
));
$this->validator->validate('baz', $constraint);
@@ -185,7 +180,6 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
// the DB or the model
'choices' => array(),
'message' => 'myMessage',
'strict' => true,
));
$this->validator->validate('baz', $constraint);
@@ -202,7 +196,6 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
'choices' => array('foo', 'bar'),
'multipleMessage' => 'myMessage',
'multiple' => true,
'strict' => true,
));
$this->validator->validate(array('foo', 'baz'), $constraint);
@@ -221,7 +214,6 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
'multiple' => true,
'min' => 2,
'minMessage' => 'myMessage',
'strict' => true,
));
$value = array('foo');
@@ -245,7 +237,6 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
'multiple' => true,
'max' => 2,
'maxMessage' => 'myMessage',
'strict' => true,
));
$value = array('foo', 'bar', 'moo');
@@ -262,27 +253,10 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
->assertRaised();
}
/**
* @group legacy
*/
public function testNonStrict()
{
$constraint = new Choice(array(
'choices' => array(1, 2),
'strict' => false,
));
$this->validator->validate('2', $constraint);
$this->validator->validate(2, $constraint);
$this->assertNoViolation();
}
public function testStrictAllowsExactValue()
{
$constraint = new Choice(array(
'choices' => array(1, 2),
'strict' => true,
));
$this->validator->validate(2, $constraint);
@@ -294,7 +268,6 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
{
$constraint = new Choice(array(
'choices' => array(1, 2),
'strict' => true,
'message' => 'myMessage',
));
@@ -306,28 +279,11 @@ class ChoiceValidatorTest extends ConstraintValidatorTestCase
->assertRaised();
}
/**
* @group legacy
*/
public function testNonStrictWithMultipleChoices()
{
$constraint = new Choice(array(
'choices' => array(1, 2, 3),
'multiple' => true,
'strict' => false,
));
$this->validator->validate(array('2', 3), $constraint);
$this->assertNoViolation();
}
public function testStrictWithMultipleChoices()
{
$constraint = new Choice(array(
'choices' => array(1, 2, 3),
'multiple' => true,
'strict' => true,
'multipleMessage' => 'myMessage',
));
@@ -115,7 +115,7 @@ abstract class CountValidatorTest extends ConstraintValidatorTestCase
$this->validator->validate($value, $constraint);
$this->buildViolation('myMessage')
->setParameter('{{ count }}', count($value))
->setParameter('{{ count }}', \count($value))
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
@@ -136,7 +136,7 @@ abstract class CountValidatorTest extends ConstraintValidatorTestCase
$this->validator->validate($value, $constraint);
$this->buildViolation('myMessage')
->setParameter('{{ count }}', count($value))
->setParameter('{{ count }}', \count($value))
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
@@ -158,7 +158,7 @@ abstract class CountValidatorTest extends ConstraintValidatorTestCase
$this->validator->validate($value, $constraint);
$this->buildViolation('myMessage')
->setParameter('{{ count }}', count($value))
->setParameter('{{ count }}', \count($value))
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
@@ -180,7 +180,7 @@ abstract class CountValidatorTest extends ConstraintValidatorTestCase
$this->validator->validate($value, $constraint);
$this->buildViolation('myMessage')
->setParameter('{{ count }}', count($value))
->setParameter('{{ count }}', \count($value))
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
@@ -152,10 +152,10 @@ class EmailValidatorTest extends ConstraintValidatorTestCase
array('"test""test"@iana.org'),
array('"test"."test"@iana.org'),
array('"test".test@iana.org'),
array('"test"'.chr(0).'@iana.org'),
array('"test"'.\chr(0).'@iana.org'),
array('"test\"@iana.org'),
array(chr(226).'@iana.org'),
array('test@'.chr(226).'.org'),
array(\chr(226).'@iana.org'),
array('test@'.\chr(226).'.org'),
array('\r\ntest@iana.org'),
array('\r\n test@iana.org'),
array('\r\n \r\ntest@iana.org'),
@@ -51,6 +51,16 @@ class EqualToValidatorTest extends AbstractComparisonValidatorTestCase
);
}
/**
* {@inheritdoc}
*/
public function provideValidComparisonsToPropertyPath()
{
return array(
array(5),
);
}
/**
* {@inheritdoc}
*/
@@ -31,7 +31,7 @@ abstract class FileValidatorTest extends ConstraintValidatorTestCase
{
parent::setUp();
$this->path = sys_get_temp_dir().DIRECTORY_SEPARATOR.'FileValidatorTest';
$this->path = sys_get_temp_dir().\DIRECTORY_SEPARATOR.'FileValidatorTest';
$this->file = fopen($this->path, 'w');
fwrite($this->file, ' ', 1);
}
@@ -40,7 +40,7 @@ abstract class FileValidatorTest extends ConstraintValidatorTestCase
{
parent::tearDown();
if (is_resource($this->file)) {
if (\is_resource($this->file)) {
fclose($this->file);
}
@@ -54,6 +54,17 @@ class GreaterThanOrEqualValidatorTest extends AbstractComparisonValidatorTestCas
);
}
/**
* {@inheritdoc}
*/
public function provideValidComparisonsToPropertyPath()
{
return array(
array(5),
array(6),
);
}
/**
* {@inheritdoc}
*/
@@ -50,6 +50,16 @@ class GreaterThanValidatorTest extends AbstractComparisonValidatorTestCase
);
}
/**
* {@inheritdoc}
*/
public function provideValidComparisonsToPropertyPath()
{
return array(
array(6),
);
}
/**
* {@inheritdoc}
*/
@@ -69,6 +69,16 @@ class IdenticalToValidatorTest extends AbstractComparisonValidatorTestCase
return $comparisons;
}
/**
* {@inheritdoc}
*/
public function provideValidComparisonsToPropertyPath()
{
return array(
array(5),
);
}
/**
* {@inheritdoc}
*/
@@ -164,6 +164,42 @@ class ImageValidatorTest extends ConstraintValidatorTestCase
->assertRaised();
}
public function testPixelsTooFew()
{
$constraint = new Image(array(
'minPixels' => 5,
'minPixelsMessage' => 'myMessage',
));
$this->validator->validate($this->image, $constraint);
$this->buildViolation('myMessage')
->setParameter('{{ pixels }}', '4')
->setParameter('{{ min_pixels }}', '5')
->setParameter('{{ height }}', '2')
->setParameter('{{ width }}', '2')
->setCode(Image::TOO_FEW_PIXEL_ERROR)
->assertRaised();
}
public function testPixelsTooMany()
{
$constraint = new Image(array(
'maxPixels' => 3,
'maxPixelsMessage' => 'myMessage',
));
$this->validator->validate($this->image, $constraint);
$this->buildViolation('myMessage')
->setParameter('{{ pixels }}', '4')
->setParameter('{{ max_pixels }}', '3')
->setParameter('{{ height }}', '2')
->setParameter('{{ width }}', '2')
->setCode(Image::TOO_MANY_PIXEL_ERROR)
->assertRaised();
}
/**
* @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException
*/
@@ -212,6 +248,30 @@ class ImageValidatorTest extends ConstraintValidatorTestCase
$this->validator->validate($this->image, $constraint);
}
/**
* @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException
*/
public function testInvalidMinPixels()
{
$constraint = new Image(array(
'minPixels' => '1abc',
));
$this->validator->validate($this->image, $constraint);
}
/**
* @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException
*/
public function testInvalidMaxPixels()
{
$constraint = new Image(array(
'maxPixels' => '1abc',
));
$this->validator->validate($this->image, $constraint);
}
public function testRatioTooSmall()
{
$constraint = new Image(array(
@@ -329,7 +389,7 @@ class ImageValidatorTest extends ConstraintValidatorTestCase
public function testCorrupted()
{
if (!function_exists('imagecreatefromstring')) {
if (!\function_exists('imagecreatefromstring')) {
$this->markTestSkipped('This test require GD extension');
}
@@ -60,7 +60,7 @@ class IsbnValidatorTest extends ConstraintValidatorTestCase
array('1A34567890', Isbn::INVALID_CHARACTERS_ERROR),
// chr(1) evaluates to 0
// 2070546810 is valid
array('2'.chr(1).'70546810', Isbn::INVALID_CHARACTERS_ERROR),
array('2'.\chr(1).'70546810', Isbn::INVALID_CHARACTERS_ERROR),
);
}
@@ -98,7 +98,7 @@ class IsbnValidatorTest extends ConstraintValidatorTestCase
array('978-272C442282', Isbn::INVALID_CHARACTERS_ERROR),
// chr(1) evaluates to 0
// 978-2070546817 is valid
array('978-2'.chr(1).'70546817', Isbn::INVALID_CHARACTERS_ERROR),
array('978-2'.\chr(1).'70546817', Isbn::INVALID_CHARACTERS_ERROR),
);
}
@@ -56,6 +56,17 @@ class LessThanOrEqualValidatorTest extends AbstractComparisonValidatorTestCase
);
}
/**
* {@inheritdoc}
*/
public function provideValidComparisonsToPropertyPath()
{
return array(
array(4),
array(5),
);
}
/**
* {@inheritdoc}
*/
@@ -50,6 +50,16 @@ class LessThanValidatorTest extends AbstractComparisonValidatorTestCase
);
}
/**
* {@inheritdoc}
*/
public function provideValidComparisonsToPropertyPath()
{
return array(
array(4),
);
}
/**
* {@inheritdoc}
*/
@@ -50,6 +50,16 @@ class NotEqualToValidatorTest extends AbstractComparisonValidatorTestCase
);
}
/**
* {@inheritdoc}
*/
public function provideValidComparisonsToPropertyPath()
{
return array(
array(0),
);
}
/**
* {@inheritdoc}
*/
@@ -53,6 +53,16 @@ class NotIdenticalToValidatorTest extends AbstractComparisonValidatorTestCase
);
}
/**
* {@inheritdoc}
*/
public function provideValidComparisonsToPropertyPath()
{
return array(
array(0),
);
}
public function provideAllInvalidComparisons()
{
$this->setDefaultTimezone('UTC');
+1 -1
View File
@@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
namespace Constraints;
namespace Symfony\Component\Validator\Tests\Constraints;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Validator\Constraints\Regex;
@@ -206,7 +206,7 @@ class UrlValidatorTest extends ConstraintValidatorTestCase
DnsMock::withMockedHosts(array('example.com' => array(array('type' => $violation ? '' : 'A'))));
$constraint = new Url(array(
'checkDNS' => true,
'checkDNS' => 'ANY',
'dnsMessage' => 'myMessage',
));
@@ -226,6 +226,58 @@ class UrlValidatorTest extends ConstraintValidatorTestCase
{
return array(array(true), array(false));
}
/**
* @dataProvider getCheckDnsTypes
* @requires function Symfony\Bridge\PhpUnit\DnsMock::withMockedHosts
*/
public function testCheckDnsByType($type)
{
DnsMock::withMockedHosts(array('example.com' => array(array('type' => $type))));
$constraint = new Url(array(
'checkDNS' => $type,
'dnsMessage' => 'myMessage',
));
$this->validator->validate('http://example.com', $constraint);
$this->assertNoViolation();
}
public function getCheckDnsTypes()
{
return array(
array('ANY'),
array('A'),
array('A6'),
array('AAAA'),
array('CNAME'),
array('MX'),
array('NAPTR'),
array('NS'),
array('PTR'),
array('SOA'),
array('SRV'),
array('TXT'),
);
}
/**
* @expectedException \Symfony\Component\Validator\Exception\InvalidOptionsException
* @requires function Symfony\Bridge\PhpUnit\DnsMock::withMockedHosts
*/
public function testCheckDnsWithInvalidType()
{
DnsMock::withMockedHosts(array('example.com' => array(array('type' => 'A'))));
$constraint = new Url(array(
'checkDNS' => 'BOGUS',
'dnsMessage' => 'myMessage',
));
$this->validator->validate('http://example.com', $constraint);
}
}
class EmailProvider
+11 -5
View File
@@ -19,11 +19,17 @@ use Symfony\Component\Validator\Constraints\Valid;
*/
class ValidTest extends TestCase
{
/**
* @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException
*/
public function testRejectGroupsOption()
public function testGroupsCanBeSet()
{
new Valid(array('groups' => 'foo'));
$constraint = new Valid(array('groups' => 'foo'));
$this->assertSame(array('foo'), $constraint->groups);
}
public function testGroupsAreNullByDefault()
{
$constraint = new Valid();
$this->assertNull($constraint->groups);
}
}