mautic / app /bundles /FormBundle /Tests /Validator /UploadFieldValidatorTest.php
chrisbryan17's picture
Upload folder using huggingface_hub
d2897cd verified
<?php
namespace Mautic\FormBundle\Tests\Validator;
use Mautic\CoreBundle\Exception\FileInvalidException;
use Mautic\CoreBundle\Validator\FileUploadValidator;
use Mautic\FormBundle\Entity\Field;
use Mautic\FormBundle\Exception\FileValidationException;
use Mautic\FormBundle\Exception\NoFileGivenException;
use Mautic\FormBundle\Validator\UploadFieldValidator;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\ParameterBag;
use Symfony\Component\HttpFoundation\Request;
class UploadFieldValidatorTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox No Files given
*
* @covers \Mautic\FormBundle\Validator\UploadFieldValidator::processFileValidation
*/
public function testNoFilesGiven(): void
{
$fileUploadValidatorMock = $this->getMockBuilder(FileUploadValidator::class)
->disableOriginalConstructor()
->getMock();
$fileUploadValidatorMock->expects($this->never())
->method('validate');
$parameterBagMock = $this->getMockBuilder(ParameterBag::class)
->disableOriginalConstructor()
->getMock();
$parameterBagMock->expects($this->once())
->method('get')
->with('mauticform')
->willReturn(false);
$request = new Request();
$request->files = $parameterBagMock;
$fileUploadValidator = new UploadFieldValidator($fileUploadValidatorMock);
$field = new Field();
$this->expectException(NoFileGivenException::class);
$fileUploadValidator->processFileValidation($field, $request);
}
/**
* @testdox Exception should be thrown when validation fails
*
* @covers \Mautic\FormBundle\Validator\UploadFieldValidator::processFileValidation
*/
public function testValidationFailed(): void
{
$fileUploadValidatorMock = $this->getMockBuilder(FileUploadValidator::class)
->disableOriginalConstructor()
->getMock();
$fileUploadValidatorMock->expects($this->once())
->method('validate')
->willThrowException(new FileInvalidException('Validation failed'));
$parameterBagMock = $this->getMockBuilder(ParameterBag::class)
->disableOriginalConstructor()
->getMock();
$fileMock = $this->getMockBuilder(UploadedFile::class)
->disableOriginalConstructor()
->getMock();
$files = [
'file' => $fileMock,
];
$parameterBagMock->expects($this->once())
->method('get')
->with('mauticform')
->willReturn($files);
$request = new Request();
$request->files = $parameterBagMock;
$fileUploadValidator = new UploadFieldValidator($fileUploadValidatorMock);
$field = new Field();
$field->setAlias('file');
$field->setProperties([
'allowed_file_size' => 1,
'allowed_file_extensions' => ['jpg', 'gif'],
]);
$this->expectException(FileValidationException::class);
$this->expectExceptionMessage('Validation failed');
$fileUploadValidator->processFileValidation($field, $request);
}
/**
* @testdox No validation error
*
* @covers \Mautic\FormBundle\Validator\UploadFieldValidator::processFileValidation
*/
public function testFileIsValid(): void
{
$fileUploadValidatorMock = $this->getMockBuilder(FileUploadValidator::class)
->disableOriginalConstructor()
->getMock();
$fileUploadValidatorMock->expects($this->once())
->method('validate');
$parameterBagMock = $this->getMockBuilder(ParameterBag::class)
->disableOriginalConstructor()
->getMock();
$fileMock = $this->getMockBuilder(UploadedFile::class)
->disableOriginalConstructor()
->getMock();
$files = [
'file' => $fileMock,
];
$parameterBagMock->expects($this->once())
->method('get')
->with('mauticform')
->willReturn($files);
$request = new Request();
$request->files = $parameterBagMock;
$fileUploadValidator = new UploadFieldValidator($fileUploadValidatorMock);
$field = new Field();
$field->setAlias('file');
$field->setProperties([
'allowed_file_size' => 1,
'allowed_file_extensions' => ['jpg', 'gif'],
]);
$file = $fileUploadValidator->processFileValidation($field, $request);
$this->assertSame($fileMock, $file);
}
}