validator = new \Magento\Downloadable\Model\File\ContentValidator(); $this->fileContentMock = $this->createMock(\Magento\Downloadable\Api\Data\File\ContentInterface::class); } public function testIsValid() { $this->fileContentMock->expects($this->any())->method('getFileData') ->will($this->returnValue(base64_encode('test content'))); $this->fileContentMock->expects($this->any())->method('getName') ->will($this->returnValue('valid_name')); $this->assertTrue($this->validator->isValid($this->fileContentMock)); } /** * @expectedException \Magento\Framework\Exception\InputException * @expectedExceptionMessage Provided content must be valid base64 encoded data. */ public function testIsValidThrowsExceptionIfProvidedContentIsNotBase64Encoded() { $this->fileContentMock->expects($this->any())->method('getFileData') ->will($this->returnValue('not_a_base64_encoded_content')); $this->fileContentMock->expects($this->any())->method('getName') ->will($this->returnValue('valid_name')); $this->assertTrue($this->validator->isValid($this->fileContentMock)); } /** * @expectedException \Magento\Framework\Exception\InputException * @expectedExceptionMessage Provided file name contains forbidden characters. * @dataProvider getInvalidNames * @param string $fileName */ public function testIsValidThrowsExceptionIfProvidedImageNameContainsForbiddenCharacters($fileName) { $this->fileContentMock->expects($this->any())->method('getFileData') ->will($this->returnValue(base64_encode('test content'))); $this->fileContentMock->expects($this->any())->method('getName') ->will($this->returnValue($fileName)); $this->assertTrue($this->validator->isValid($this->fileContentMock)); } /** * @return array */ public function getInvalidNames() { return [ ['test\test'], ['test/test'], ['test:test'], ['test"test'], ['test*test'], ['test;test'], ['test?test'], ['test{test'], ['test}test'], ['test|test'], ['test(test'], ['test)test'], ['testtest'], ]; } }