121 lines
3.9 KiB
PHP
Executable File
121 lines
3.9 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\Downloadable\Model\File;
|
|
|
|
use Magento\Downloadable\Api\Data\File\ContentInterface;
|
|
use Magento\Downloadable\Api\Data\File\ContentInterfaceFactory;
|
|
use Magento\Downloadable\Model\Link;
|
|
use Magento\Downloadable\Model\Sample;
|
|
use Magento\Framework\Filesystem;
|
|
use Magento\Framework\Filesystem\Directory\WriteInterface;
|
|
use Magento\Framework\ObjectManagerInterface;
|
|
use Magento\MediaStorage\Helper\File\Storage;
|
|
use Magento\MediaStorage\Helper\File\Storage\Database;
|
|
use Magento\MediaStorage\Model\File\Validator\NotProtectedExtension;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* Integration test for \Magento\Downloadable\Model\File\ContentUploader class
|
|
*
|
|
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
|
|
*/
|
|
class ContentUploaderTest extends TestCase
|
|
{
|
|
/**
|
|
* @var ContentInterface
|
|
*/
|
|
private $fileContent;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $filePath;
|
|
|
|
/**
|
|
* @var ContentUploader
|
|
*/
|
|
private $model;
|
|
|
|
/**
|
|
* @var ObjectManagerInterface
|
|
*/
|
|
private $objectManager;
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
protected function setUp(): void
|
|
{
|
|
$this->objectManager = Bootstrap::getObjectManager();
|
|
$this->fileContent = $this->objectManager->create(ContentInterfaceFactory::class)->create();
|
|
$fixtureDir = realpath(__DIR__ . '/../../_files');
|
|
$this->filePath = $fixtureDir . DIRECTORY_SEPARATOR . 'test_image.jpg';
|
|
$this->fileContent->setFileData(base64_encode(file_get_contents($this->filePath)));
|
|
$this->fileContent->setName('test_image.jpg');
|
|
|
|
$database = $this->getMockBuilder(Database::class)
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$storage = $this->getMockBuilder(Storage::class)
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$validator = $this->getMockBuilder(NotProtectedExtension::class)
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$filesystem = $this->getMockBuilder(Filesystem::class)
|
|
->disableOriginalConstructor()
|
|
->onlyMethods(['getDirectoryWrite'])
|
|
->getMock();
|
|
$systemTmpDirectory = $this->getMockForAbstractClass(
|
|
WriteInterface::class,
|
|
[],
|
|
'',
|
|
false,
|
|
true,
|
|
true,
|
|
['writeFile']
|
|
);
|
|
$systemTmpDirectory->expects($this->once())->method('writeFile')->willReturn(1);
|
|
$systemTmpDirectory->method('getAbsolutePath')->willReturn($this->filePath);
|
|
|
|
$filesystem->method('getDirectoryWrite')->willReturn($systemTmpDirectory);
|
|
$link = $this->getMockBuilder(Link::class)
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$sampleConfig = $this->getMockBuilder(Sample::class)
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$this->model = $this->getMockForAbstractClass(
|
|
ContentUploader::class,
|
|
[$database, $storage, $validator, $filesystem, $link, $sampleConfig],
|
|
'',
|
|
true,
|
|
true,
|
|
true,
|
|
['save']
|
|
);
|
|
}
|
|
|
|
public function testUploadWithSuccessSave()
|
|
{
|
|
$data = ['path' => $this->filePath, 'file' => 'test_image.jpg'];
|
|
$this->model->expects($this->once())->method('save')->willReturn($data);
|
|
$result = $this->model->upload($this->fileContent, 'sample');
|
|
$this->assertIsArray($result);
|
|
$this->assertArrayHasKey('status', $result);
|
|
$this->assertArrayHasKey('name', $result);
|
|
}
|
|
|
|
public function testUploadWithFalseSave()
|
|
{
|
|
$this->model->expects($this->once())->method('save')->willReturn(false);
|
|
$this->assertFalse($this->model->upload($this->fileContent, 'sample'));
|
|
}
|
|
}
|