123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\Catalog\Model;
- use Magento\Framework\App\Filesystem\DirectoryList;
- /**
- * Tests for the \Magento\Catalog\Model\ImageUploader class
- */
- class ImageUploaderTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Magento\Framework\ObjectManagerInterface
- */
- private $objectManager;
- /**
- * @var \Magento\Catalog\Model\ImageUploader
- */
- private $imageUploader;
- /**
- * @var \Magento\Framework\Filesystem
- */
- private $filesystem;
- /**
- * @var \Magento\Framework\Filesystem\Directory\WriteInterface
- */
- private $mediaDirectory;
- /**
- * @inheritdoc
- */
- protected function setUp()
- {
- $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
- /** @var \Magento\Framework\Filesystem $filesystem */
- $this->filesystem = $this->objectManager->get(\Magento\Framework\Filesystem::class);
- $this->mediaDirectory = $this->filesystem->getDirectoryWrite(DirectoryList::MEDIA);
- /** @var $uploader \Magento\MediaStorage\Model\File\Uploader */
- $this->imageUploader = $this->objectManager->create(
- \Magento\Catalog\Model\ImageUploader::class,
- [
- 'baseTmpPath' => $this->mediaDirectory->getRelativePath('tmp'),
- 'basePath' => __DIR__,
- 'allowedExtensions' => ['jpg', 'jpeg', 'gif', 'png'],
- 'allowedMimeTypes' => ['image/jpg', 'image/jpeg', 'image/gif', 'image/png']
- ]
- );
- }
- /**
- * @return void
- */
- public function testSaveFileToTmpDir(): void
- {
- $fileName = 'magento_small_image.jpg';
- $tmpDirectory = $this->filesystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::SYS_TMP);
- $fixtureDir = realpath(__DIR__ . '/../_files');
- $filePath = $tmpDirectory->getAbsolutePath($fileName);
- copy($fixtureDir . DIRECTORY_SEPARATOR . $fileName, $filePath);
- $_FILES['image'] = [
- 'name' => $fileName,
- 'type' => 'image/jpeg',
- 'tmp_name' => $filePath,
- 'error' => 0,
- 'size' => 12500,
- ];
- $this->imageUploader->saveFileToTmpDir('image');
- $filePath = $this->imageUploader->getBaseTmpPath() . DIRECTORY_SEPARATOR. $fileName;
- $this->assertTrue(is_file($this->mediaDirectory->getAbsolutePath($filePath)));
- }
- /**
- * @expectedException \Magento\Framework\Exception\LocalizedException
- * @expectedExceptionMessage File validation failed.
- * @return void
- */
- public function testSaveFileToTmpDirWithWrongExtension(): void
- {
- $fileName = 'text.txt';
- $tmpDirectory = $this->filesystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::SYS_TMP);
- $filePath = $tmpDirectory->getAbsolutePath($fileName);
- $file = fopen($filePath, "wb");
- fwrite($file, 'just a text');
- $_FILES['image'] = [
- 'name' => $fileName,
- 'type' => 'text/plain',
- 'tmp_name' => $filePath,
- 'error' => 0,
- 'size' => 12500,
- ];
- $this->imageUploader->saveFileToTmpDir('image');
- $filePath = $this->imageUploader->getBaseTmpPath() . DIRECTORY_SEPARATOR. $fileName;
- $this->assertFalse(is_file($this->mediaDirectory->getAbsolutePath($filePath)));
- }
- /**
- * @expectedException \Magento\Framework\Exception\LocalizedException
- * @expectedExceptionMessage File validation failed.
- * @return void
- */
- public function testSaveFileToTmpDirWithWrongFile(): void
- {
- $fileName = 'file.gif';
- $tmpDirectory = $this->filesystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::SYS_TMP);
- $filePath = $tmpDirectory->getAbsolutePath($fileName);
- $file = fopen($filePath, "wb");
- fwrite($file, 'just a text');
- $_FILES['image'] = [
- 'name' => $fileName,
- 'type' => 'image/gif',
- 'tmp_name' => $filePath,
- 'error' => 0,
- 'size' => 12500,
- ];
- $this->imageUploader->saveFileToTmpDir('image');
- $filePath = $this->imageUploader->getBaseTmpPath() . DIRECTORY_SEPARATOR. $fileName;
- $this->assertFalse(is_file($this->mediaDirectory->getAbsolutePath($filePath)));
- }
- /**
- * @inheritdoc
- */
- public static function tearDownAfterClass()
- {
- parent::tearDownAfterClass();
- $filesystem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
- \Magento\Framework\Filesystem::class
- );
- /** @var \Magento\Framework\Filesystem\Directory\WriteInterface $mediaDirectory */
- $mediaDirectory = $filesystem->getDirectoryWrite(DirectoryList::MEDIA);
- $mediaDirectory->delete('tmp');
- }
- }
|