![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-customer/Test/Unit/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Customer\Test\Unit\Model; use Magento\Customer\Api\AddressMetadataInterface; use Magento\Customer\Api\CustomerMetadataInterface; use Magento\Customer\Api\Data\AttributeMetadataInterface; use Magento\Customer\Api\Data\ValidationRuleInterface; use Magento\Customer\Model\FileProcessor; use Magento\Customer\Model\FileProcessorFactory; use Magento\Customer\Model\FileUploader; use Magento\Customer\Model\Metadata\ElementFactory; use Magento\Customer\Model\Metadata\Form\Image; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class FileUploaderTest extends TestCase { /** * @var CustomerMetadataInterface|MockObject */ private $customerMetadataService; /** * @var AddressMetadataInterface|MockObject */ private $addressMetadataService; /** * @var ElementFactory|MockObject */ private $elementFactory; /** * @var FileProcessorFactory|MockObject */ private $fileProcessorFactory; /** * @var AttributeMetadataInterface|MockObject */ private $attributeMetadata; protected function setUp(): void { $this->customerMetadataService = $this->getMockBuilder(CustomerMetadataInterface::class) ->getMockForAbstractClass(); $this->addressMetadataService = $this->getMockBuilder(AddressMetadataInterface::class) ->getMockForAbstractClass(); $this->elementFactory = $this->getMockBuilder(ElementFactory::class) ->disableOriginalConstructor() ->getMock(); $this->fileProcessorFactory = $this->getMockBuilder(FileProcessorFactory::class) ->disableOriginalConstructor() ->setMethods(['create']) ->getMock(); $this->attributeMetadata = $this->getMockBuilder(AttributeMetadataInterface::class) ->getMockForAbstractClass(); } protected function tearDown(): void { $_FILES = []; } /** * @param string $entityTypeCode * @param string $scope * @return FileUploader */ private function getModel($entityTypeCode, $scope) { $model = new FileUploader( $this->customerMetadataService, $this->addressMetadataService, $this->elementFactory, $this->fileProcessorFactory, $this->attributeMetadata, $entityTypeCode, $scope ); return $model; } public function testValidate() { $attributeCode = 'attribute_code'; $filename = 'filename.ext1'; $_FILES = [ 'customer' => [ 'name' => [ $attributeCode => $filename, ], ], ]; $formElement = $this->getMockBuilder(Image::class) ->disableOriginalConstructor() ->getMock(); $formElement->expects($this->once()) ->method('validateValue') ->with(['name' => $filename]) ->willReturn(true); $this->elementFactory->expects($this->once()) ->method('create') ->with($this->attributeMetadata, null, CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER) ->willReturn($formElement); $model = $this->getModel(CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, 'customer'); $this->assertTrue($model->validate()); } public function testUpload() { $attributeCode = 'attribute_code'; $attributeFrontendInput = 'image'; $resultFileName = '/filename.ext1'; $resultFilePath = 'filepath'; $resultFileUrl = 'viewFileUrl'; $allowedExtensions = 'ext1,EXT2 , eXt3'; // Added spaces, commas and upper-cases $expectedAllowedExtensions = [ 'ext1', 'ext2', 'ext3', ]; $_FILES = [ 'customer' => [ 'name' => [ $attributeCode => 'filename', ], ], ]; $expectedResult = [ 'name' => $resultFileName, 'file' => $resultFileName, 'path' => $resultFilePath, 'tmp_name' => ltrim($resultFileName, '/'), 'url' => $resultFileUrl, ]; $fileProcessor = $this->getMockBuilder(FileProcessor::class) ->disableOriginalConstructor() ->getMock(); $fileProcessor->expects($this->once()) ->method('saveTemporaryFile') ->with('customer[' . $attributeCode . ']') ->willReturn([ 'name' => $resultFileName, 'path' => $resultFilePath, 'file' => $resultFileName, ]); $fileProcessor->expects($this->once()) ->method('getViewUrl') ->with(FileProcessor::TMP_DIR . '/filename.ext1', $attributeFrontendInput) ->willReturn($resultFileUrl); $this->fileProcessorFactory->expects($this->once()) ->method('create') ->with([ 'entityTypeCode' => CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, 'allowedExtensions' => $expectedAllowedExtensions, ]) ->willReturn($fileProcessor); $validationRuleMock = $this->getMockBuilder(ValidationRuleInterface::class) ->getMockForAbstractClass(); $validationRuleMock->expects($this->once()) ->method('getName') ->willReturn('file_extensions'); $validationRuleMock->expects($this->once()) ->method('getValue') ->willReturn($allowedExtensions); $this->attributeMetadata->expects($this->once()) ->method('getFrontendInput') ->willReturn($attributeFrontendInput); $this->attributeMetadata->expects($this->once()) ->method('getValidationRules') ->willReturn([$validationRuleMock]); $model = $this->getModel(CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, 'customer'); $this->assertEquals($expectedResult, $model->upload()); } }