![]() 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/setup/src/Magento/Setup/Test/Unit/Mvc/Bootstrap/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Setup\Test\Unit\Mvc\Bootstrap; use Laminas\EventManager\EventManagerInterface; use Laminas\EventManager\SharedEventManager; use Laminas\Mvc\Application; use Laminas\Mvc\MvcEvent; use Laminas\ServiceManager\ServiceLocatorInterface; use Laminas\ServiceManager\ServiceManager; use Laminas\Stdlib\RequestInterface; use Magento\Framework\App\Bootstrap as AppBootstrap; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Filesystem; use Magento\Setup\Mvc\Bootstrap\InitParamListener; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * Test for \Magento\Setup\Mvc\Bootstrap\InitParamListener * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class InitParamListenerTest extends TestCase { /** * @var InitParamListener */ private $listener; /** callable[][] */ private $callbacks = []; protected function setUp(): void { $this->listener = new InitParamListener(); } public function testAttach() { $events = $this->prepareEventManager(); $this->listener->attach($events); } public function testDetach() { $events = $this->prepareEventManager(); $this->listener->attach($events); $events->expects($this->once())->method('detach')->with([$this->listener, 'onBootstrap'])->willReturn(true); $this->listener->detach($events); } public function testOnBootstrap() { /** @var MvcEvent|MockObject $mvcEvent */ $mvcEvent = $this->createMock(MvcEvent::class); $mvcApplication = $this->getMockBuilder(Application::class) ->disableOriginalConstructor() ->getMock(); $mvcEvent->expects($this->once())->method('getApplication')->willReturn($mvcApplication); $serviceManager = $this->createMock(ServiceManager::class); $initParams[AppBootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS][DirectoryList::ROOT] = ['path' => '/test']; $serviceManager->expects($this->once())->method('get') ->willReturn($initParams); $serviceManager->expects($this->exactly(2))->method('setService') ->withConsecutive( [ DirectoryList::class, $this->isInstanceOf(DirectoryList::class), ], [ Filesystem::class, $this->isInstanceOf(Filesystem::class), ] ); $mvcApplication->expects($this->any())->method('getServiceManager')->willReturn($serviceManager); $eventManager = $this->getMockForAbstractClass(EventManagerInterface::class); $mvcApplication->expects($this->any())->method('getEventManager')->willReturn($eventManager); $eventManager->expects($this->any())->method('attach'); $this->listener->onBootstrap($mvcEvent); } public function testCreateDirectoryList() { $initParams[AppBootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] = [DirectoryList::ROOT => [DirectoryList::PATH => '/test/root']]; $directoryList = $this->listener->createDirectoryList($initParams); $this->assertEquals('/test/root/app', $directoryList->getPath(DirectoryList::APP)); } public function testCreateDirectoryListException() { $this->expectException('LogicException'); $this->expectExceptionMessage('Magento root directory is not specified.'); $this->listener->createDirectoryList([]); } /** * @param array $zfAppConfig Data that comes from Laminas Framework Application config * @param array $env Config that comes from SetEnv * @param array|string|null $argv Argv * @param array $expectedArray Expected result array * * @dataProvider createServiceDataProvider */ public function testCreateService($zfAppConfig, $env, $argv, $expectedArray) { foreach ($env as $envKey => $envValue) { $_SERVER[$envKey] = $envValue; } $listener = new InitParamListener(); /** * @var ServiceLocatorInterface|MockObject $serviceLocator */ $serviceLocator = $this->getMockForAbstractClass(ServiceLocatorInterface::class); $mvcApplication = $this->getMockBuilder(Application::class) ->disableOriginalConstructor() ->getMock(); if ($argv !== null) { $zfAppConfig['argv'] = $argv; $expectedArray['argv'] = $argv; } $mvcApplication->expects($this->any())->method('getConfig')->willReturn( $zfAppConfig ? [InitParamListener::BOOTSTRAP_PARAM => $zfAppConfig] : [] ); $serviceLocator->expects($this->once())->method('get')->with('Application') ->willReturn($mvcApplication); $this->assertEquals($expectedArray, $listener->createService($serviceLocator)); } /** * @return array */ public function createServiceDataProvider() { return [ 'none' => [ [], //zfAppConfig [], //env null, //argv [] //expectedArray ], 'mage_mode App' => [ ['MAGE_MODE' => 'developer'], [], '', //test non array value ['MAGE_MODE' => 'developer'] ], 'mage_mode Env' => [ [], ['MAGE_MODE' => 'developer'], null, ['MAGE_MODE' => 'developer'] ], 'mage_mode CLI' => [ [], [], ['bin/magento', 'setup:install', '--magento-init-params=MAGE_MODE=developer'], ['MAGE_MODE' => 'developer'] ], 'one MAGE_DIRS CLI' => [ [], [], ['bin/magento', 'setup:install', '--magento-init-params=MAGE_MODE=developer&MAGE_DIRS[base][path]=/var/www/magento2'], ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2']], 'MAGE_MODE' => 'developer'], ], 'two MAGE_DIRS CLI' => [ [], [], ['bin/magento', 'setup:install', '--magento-init-params=MAGE_MODE=developer&MAGE_DIRS[base][path]=/var/www/magento2&MAGE_DIRS[cache][path]=/tmp/cache'], [ 'MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2'], 'cache' => ['path' => '/tmp/cache']], 'MAGE_MODE' => 'developer', ], ], 'mage_mode only' => [ [], [], ['bin/magento', 'setup:install', '--magento-init-params=MAGE_MODE=developer'], ['MAGE_MODE' => 'developer'] ], 'MAGE_DIRS Env' => [ [], ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2']], 'MAGE_MODE' => 'developer'], null, ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2']], 'MAGE_MODE' => 'developer'], ], 'two MAGE_DIRS' => [ [], [], ['bin/magento', 'setup:install', '--magento-init-params=MAGE_MODE=developer&MAGE_DIRS[base][path]=/var/www/magento2&MAGE_DIRS[cache][path]=/tmp/cache'], [ 'MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2'], 'cache' => ['path' => '/tmp/cache']], 'MAGE_MODE' => 'developer', ], ], 'Env overwrites App' => [ ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2/App']], 'MAGE_MODE' => 'developer'], ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2/Env']], 'MAGE_MODE' => 'developer'], ['bin/magento', 'setup:install'], ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2/Env']], 'MAGE_MODE' => 'developer'], ], 'CLI overwrites Env' => [ ['MAGE_MODE' => 'developer'], ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2/Env']]], ['bin/magento', 'setup:install', '--magento-init-params=MAGE_DIRS[base][path]=/var/www/magento2/CLI'], ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2/CLI']], 'MAGE_MODE' => 'developer'], ], 'CLI overwrites All' => [ ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2/App']], 'MAGE_MODE' => 'production'], ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2/Env']]], ['bin/magento', 'setup:install', '--magento-init-params=MAGE_DIRS[base][path]=/var/www/magento2/CLI'], ['MAGE_DIRS' => ['base' => ['path' => '/var/www/magento2/CLI']], 'MAGE_MODE' => 'developer'], ], ]; } public function testCreateFilesystem() { $testPath = 'test/path/'; /** * @var DirectoryList| * \PHPUnit\Framework\MockObject\MockObject $directoryList */ $directoryList = $this->getMockBuilder(DirectoryList::class) ->disableOriginalConstructor() ->getMock(); $directoryList->expects($this->any())->method('getPath')->willReturn($testPath); $filesystem = $this->listener->createFilesystem($directoryList); // Verifies the filesystem was created with the directory list passed in $this->assertEquals($testPath, $filesystem->getDirectoryRead('app')->getAbsolutePath()); } /** * Prepare the event manager with a SharedEventManager, it will expect attach() to be called once. * * @return MockObject */ private function prepareEventManager() { $this->callbacks[] = [$this->listener, 'onBootstrap']; /** @var EventManagerInterface|MockObject $events */ $eventManager = $this->getMockForAbstractClass(EventManagerInterface::class); $sharedManager = $this->createMock(SharedEventManager::class); $sharedManager->expects($this->once())->method('attach')->with( Application::class, MvcEvent::EVENT_BOOTSTRAP, [$this->listener, 'onBootstrap'] ); $sharedManager->expects($this->once())->method('getListeners')->willReturn($this->callbacks); $eventManager->expects($this->once())->method('getSharedManager')->willReturn($sharedManager); return $eventManager; } }