![]() 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/framework-amqp/Test/Unit/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\Amqp\Test\Unit; use Magento\Framework\Amqp\Config; use Magento\Framework\Amqp\Connection\Factory as ConnectionFactory; use Magento\Framework\Amqp\Connection\FactoryOptions; use Magento\Framework\App\DeploymentConfig; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class ConfigTest extends TestCase { /** * @var MockObject */ private $deploymentConfigMock; /** * @var ConnectionFactory */ private $connectionFactory; /** * @var Config */ private $amqpConfig; protected function setUp(): void { $this->deploymentConfigMock = $this->getMockBuilder(DeploymentConfig::class) ->disableOriginalConstructor() ->setMethods(['getConfigData']) ->getMock(); $this->connectionFactory = $this->createMock(ConnectionFactory::class); $this->amqpConfig = new Config($this->deploymentConfigMock, 'amqp', $this->connectionFactory); } public function testGetNullConfig() { $this->expectException('LogicException'); $this->expectExceptionMessage('Unknown connection name amqp'); $this->deploymentConfigMock->expects($this->once()) ->method('getConfigData') ->with(Config::QUEUE_CONFIG) ->willReturn(null); $this->amqpConfig->getValue(Config::HOST); } public function testGetEmptyConfig() { $this->expectException('LogicException'); $this->expectExceptionMessage('Unknown connection name amqp'); $this->deploymentConfigMock->expects($this->once()) ->method('getConfigData') ->with(Config::QUEUE_CONFIG) ->willReturn([]); $this->amqpConfig->getValue(Config::HOST); } public function testGetStandardConfig() { $expectedHost = 'example.com'; $expectedPort = 5672; $expectedUsername = 'guest_username'; $expectedPassword = 'guest_password'; $expectedVirtualHost = '/'; $expectedSsl = false; $expectedSslOptions = ['some' => 'value']; $this->deploymentConfigMock->expects($this->once()) ->method('getConfigData') ->with(Config::QUEUE_CONFIG) ->willReturn([ Config::AMQP_CONFIG => [ 'host' => $expectedHost, 'port' => $expectedPort, 'user' => $expectedUsername, 'password' => $expectedPassword, 'virtualhost' => $expectedVirtualHost, 'ssl' => $expectedSsl, 'ssl_options' => $expectedSslOptions, 'randomKey' => 'randomValue', ] ]); $this->assertEquals($expectedHost, $this->amqpConfig->getValue(Config::HOST)); $this->assertEquals($expectedPort, $this->amqpConfig->getValue(Config::PORT)); $this->assertEquals($expectedUsername, $this->amqpConfig->getValue(Config::USERNAME)); $this->assertEquals($expectedPassword, $this->amqpConfig->getValue(Config::PASSWORD)); $this->assertEquals($expectedVirtualHost, $this->amqpConfig->getValue(Config::VIRTUALHOST)); $this->assertEquals($expectedSsl, $this->amqpConfig->getValue(Config::SSL)); $this->assertEquals($expectedSslOptions, $this->amqpConfig->getValue(Config::SSL_OPTIONS)); $this->assertEquals('randomValue', $this->amqpConfig->getValue('randomKey')); } public function testGetCustomConfig() { $amqpConfig = new Config($this->deploymentConfigMock, 'connection-01'); $expectedHost = 'example.com'; $expectedPort = 5672; $expectedUsername = 'guest_username'; $expectedPassword = 'guest_password'; $expectedVirtualHost = '/'; $expectedSsl = ['some' => 'value']; $this->deploymentConfigMock->expects($this->once()) ->method('getConfigData') ->with(Config::QUEUE_CONFIG) ->willReturn([ 'connections' => [ 'connection-01' => [ 'host' => $expectedHost, 'port' => $expectedPort, 'user' => $expectedUsername, 'password' => $expectedPassword, 'virtualhost' => $expectedVirtualHost, 'ssl' => $expectedSsl, 'randomKey' => 'randomValue', ] ] ]); $this->assertEquals($expectedHost, $amqpConfig->getValue(Config::HOST)); $this->assertEquals($expectedPort, $amqpConfig->getValue(Config::PORT)); $this->assertEquals($expectedUsername, $amqpConfig->getValue(Config::USERNAME)); $this->assertEquals($expectedPassword, $amqpConfig->getValue(Config::PASSWORD)); $this->assertEquals($expectedVirtualHost, $amqpConfig->getValue(Config::VIRTUALHOST)); $this->assertEquals($expectedSsl, $amqpConfig->getValue(Config::SSL)); $this->assertEquals('randomValue', $amqpConfig->getValue('randomKey')); } /** * @param array $config * @param array $expected * @return void * @dataProvider configDataProvider */ public function testCreateConnection(array $config, array $expected): void { $this->deploymentConfigMock->expects($this->once()) ->method('getConfigData') ->with(Config::QUEUE_CONFIG) ->willReturn( [ Config::AMQP_CONFIG => $config ] ); $this->connectionFactory->expects($this->once()) ->method('create') ->with( $this->callback( function (FactoryOptions $factoryOptions) use ($expected) { $actual = []; foreach (array_keys($expected) as $method) { $actual[$method] = $factoryOptions->$method(); } return $actual === $expected; } ) ); $this->amqpConfig->getChannel(); } /** * @return array */ public function configDataProvider(): array { return [ [ [ Config::HOST => 'localhost', Config::PORT => '5672', Config::USERNAME => 'user', Config::PASSWORD => 'pass', Config::VIRTUALHOST => '/', ], [ 'isSslEnabled' => false ] ], [ [ Config::HOST => 'localhost', Config::PORT => '5672', Config::USERNAME => 'user', Config::PASSWORD => 'pass', Config::VIRTUALHOST => '/', Config::SSL => ' true ', ], [ 'isSslEnabled' => true ] ] ]; } }