![]() 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/cartforge.co/vendor/magento/framework-message-queue/Test/Unit/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\MessageQueue\Test\Unit; use Magento\Customer\Api\Data\CustomerInterface; use Magento\Framework\Communication\ConfigInterface as CommunicationConfig; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\MessageQueue\MessageEncoder; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Framework\Webapi\ServiceOutputProcessor; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * Test class for Magento\Framework\MessageQueue\MessageEncoder */ class MessageEncoderTest extends TestCase { /** @var MessageEncoder */ protected $encoder; /** @var ObjectManager */ protected $objectManager; /** @var CommunicationConfig|MockObject */ protected $communicationConfigMock; /** @var ServiceOutputProcessor|MockObject */ protected $dataObjectEncoderMock; protected function setUp(): void { $this->objectManager = new ObjectManager($this); $this->dataObjectEncoderMock = $this->getMockBuilder(ServiceOutputProcessor::class) ->disableOriginalConstructor() ->setMethods([]) ->getMock(); $this->encoder = $this->objectManager->getObject( MessageEncoder::class, ['dataObjectEncoder' => $this->dataObjectEncoderMock] ); $this->communicationConfigMock = $this->getMockBuilder(CommunicationConfig::class) ->disableOriginalConstructor() ->getMock(); $this->objectManager->setBackwardCompatibleProperty( $this->encoder, 'communicationConfig', $this->communicationConfigMock ); parent::setUp(); } public function testEncodeInvalidTopic() { $this->expectException('Magento\Framework\Exception\LocalizedException'); $this->expectExceptionMessage('Specified topic "customer.created" is not declared.'); $this->encoder->encode('customer.created', 'Some message'); } public function testDecodeInvalidTopic() { $this->expectException('Magento\Framework\Exception\LocalizedException'); $this->expectExceptionMessage('Specified topic "customer.created" is not declared.'); $this->encoder->decode('customer.created', 'Some message'); } public function testEncodeInvalidMessage() { $this->expectException('Magento\Framework\Exception\LocalizedException'); $this->expectExceptionMessage( 'Message with topic "customer.created" must be an instance of "Magento\Customer\Api\Data' ); $exceptionMessage = 'Message with topic "customer.created" must be an instance of "Magento\Customer\Api\Data"'; $this->communicationConfigMock->expects($this->any())->method('getTopic')->willReturn( $this->getQueueConfigData() ); $object = $this->getMockBuilder(CustomerInterface::class) ->disableOriginalConstructor() ->setMethods([]) ->getMockForAbstractClass(); $this->dataObjectEncoderMock ->expects($this->once()) ->method('convertValue') ->willThrowException(new LocalizedException(__($exceptionMessage))); $this->encoder->encode('customer.created', $object); } public function testEncodeInvalidMessageArray() { $this->expectException('Magento\Framework\Exception\LocalizedException'); $this->expectExceptionMessage( 'Message with topic "customer.created" must be an instance of "Magento\Customer\Api\Data' ); $exceptionMessage = 'Message with topic "customer.created" must be an instance of "Magento\Customer\Api\Data"'; $this->communicationConfigMock->expects($this->any())->method('getTopic')->willReturn( $this->getQueueConfigData() ); $object = $this->getMockBuilder(CustomerInterface::class) ->disableOriginalConstructor() ->setMethods([]) ->getMockForAbstractClass(); $this->dataObjectEncoderMock ->expects($this->once()) ->method('convertValue') ->willThrowException(new LocalizedException(__($exceptionMessage))); $this->encoder->encode('customer.created', [$object]); } /** * Data provider for queue config * * @return array */ private function getQueueConfigData() { return [ CommunicationConfig::TOPIC_REQUEST_TYPE => CommunicationConfig::TOPIC_REQUEST_TYPE_CLASS, CommunicationConfig::TOPIC_REQUEST => CustomerInterface::class ]; } }