Disallow empty file in FileValidator
This commit is contained in:
parent
9e3e89ae33
commit
1b253cb14d
@ -1,6 +1,11 @@
|
|||||||
CHANGELOG
|
CHANGELOG
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
2.6.0
|
||||||
|
-----
|
||||||
|
|
||||||
|
* [BC BREAK] `FileValidator` disallow empty files
|
||||||
|
|
||||||
2.5.0
|
2.5.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ class File extends Constraint
|
|||||||
public $notReadableMessage = 'The file is not readable.';
|
public $notReadableMessage = 'The file is not readable.';
|
||||||
public $maxSizeMessage = 'The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.';
|
public $maxSizeMessage = 'The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.';
|
||||||
public $mimeTypesMessage = 'The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.';
|
public $mimeTypesMessage = 'The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.';
|
||||||
|
public $disallowEmptyMessage = 'An empty file is not allowed.';
|
||||||
|
|
||||||
public $uploadIniSizeErrorMessage = 'The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.';
|
public $uploadIniSizeErrorMessage = 'The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.';
|
||||||
public $uploadFormSizeErrorMessage = 'The file is too large.';
|
public $uploadFormSizeErrorMessage = 'The file is too large.';
|
||||||
|
@ -121,8 +121,10 @@ class FileValidator extends ConstraintValidator
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($constraint->maxSize) {
|
|
||||||
$sizeInBytes = filesize($path);
|
$sizeInBytes = filesize($path);
|
||||||
|
if (0 === $sizeInBytes) {
|
||||||
|
$this->context->addViolation($constraint->disallowEmptyMessage);
|
||||||
|
} elseif ($constraint->maxSize) {
|
||||||
$limitInBytes = (int) $constraint->maxSize;
|
$limitInBytes = (int) $constraint->maxSize;
|
||||||
|
|
||||||
if (preg_match('/^\d++k$/', $constraint->maxSize)) {
|
if (preg_match('/^\d++k$/', $constraint->maxSize)) {
|
||||||
|
@ -29,6 +29,7 @@ abstract class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->validator->initialize($this->context);
|
$this->validator->initialize($this->context);
|
||||||
$this->path = sys_get_temp_dir().DIRECTORY_SEPARATOR.'FileValidatorTest';
|
$this->path = sys_get_temp_dir().DIRECTORY_SEPARATOR.'FileValidatorTest';
|
||||||
$this->file = fopen($this->path, 'w');
|
$this->file = fopen($this->path, 'w');
|
||||||
|
fwrite($this->file, ' ', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
@ -319,6 +320,21 @@ abstract class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->validator->validate($file, $constraint);
|
$this->validator->validate($file, $constraint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testDisallowEmpty()
|
||||||
|
{
|
||||||
|
ftruncate($this->file, 0);
|
||||||
|
|
||||||
|
$constraint = new File(array(
|
||||||
|
'disallowEmptyMessage' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage');
|
||||||
|
|
||||||
|
$this->validator->validate($this->getFile($this->path), $constraint);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider uploadedFileErrorProvider
|
* @dataProvider uploadedFileErrorProvider
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user