Spaces:
No application file
No application file
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); | |
} | |
} | |