123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\Framework\Console;
- use Magento\Framework\App\DeploymentConfig;
- use Magento\Framework\App\DeploymentConfig\FileReader;
- use Magento\Framework\App\DeploymentConfig\Writer;
- use Magento\Framework\App\Filesystem\DirectoryList;
- use Magento\Framework\Config\File\ConfigFilePool;
- use Magento\Framework\Filesystem;
- use Magento\Framework\ObjectManagerInterface;
- use Magento\TestFramework\Helper\Bootstrap;
- class CliTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var ObjectManagerInterface
- */
- private $objectManager;
- /**
- * @var Filesystem
- */
- private $filesystem;
- /**
- * @var ConfigFilePool
- */
- private $configFilePool;
- /**
- * @var FileReader
- */
- private $reader;
- /**
- * @var Writer
- */
- private $writer;
- /**
- * @var array
- */
- private $envConfig;
- /**
- * @inheritdoc
- */
- protected function setUp()
- {
- $this->objectManager = Bootstrap::getObjectManager();
- $this->configFilePool = $this->objectManager->get(ConfigFilePool::class);
- $this->filesystem = $this->objectManager->get(Filesystem::class);
- $this->reader = $this->objectManager->get(FileReader::class);
- $this->writer = $this->objectManager->get(Writer::class);
- $this->envConfig = $this->reader->load(ConfigFilePool::APP_ENV);
- }
- /**
- * @inheritdoc
- */
- protected function tearDown()
- {
- $this->filesystem->getDirectoryWrite(DirectoryList::CONFIG)->writeFile(
- $this->configFilePool->getPath(ConfigFilePool::APP_ENV),
- "<?php\n return array();\n"
- );
- $this->writer->saveConfig([ConfigFilePool::APP_ENV => $this->envConfig], true);
- }
- /**
- * Checks that settings from env.php config file are applied
- * to created application instance.
- *
- * @param bool $isPub
- * @param array $params
- * @dataProvider documentRootIsPubProvider
- */
- public function testDocumentRootIsPublic($isPub, $params)
- {
- $config = include __DIR__ . '/_files/env.php';
- $config['directories']['document_root_is_pub'] = $isPub;
- $this->writer->saveConfig([ConfigFilePool::APP_ENV => $config], true);
- $cli = new Cli();
- $cliReflection = new \ReflectionClass($cli);
- $serviceManagerProperty = $cliReflection->getProperty('serviceManager');
- $serviceManagerProperty->setAccessible(true);
- $serviceManager = $serviceManagerProperty->getValue($cli);
- $deploymentConfig = $this->objectManager->get(DeploymentConfig::class);
- $serviceManager->setAllowOverride(true);
- $serviceManager->setService(DeploymentConfig::class, $deploymentConfig);
- $serviceManagerProperty->setAccessible(false);
- $documentRootResolver = $cliReflection->getMethod('documentRootResolver');
- $documentRootResolver->setAccessible(true);
- self::assertEquals($params, $documentRootResolver->invoke($cli));
- }
- /**
- * Provides document root setting and expecting
- * properties for object manager creation.
- *
- * @return array
- */
- public function documentRootIsPubProvider(): array
- {
- return [
- [true, [
- 'MAGE_DIRS' => [
- 'pub' => ['uri' => ''],
- 'media' => ['uri' => 'media'],
- 'static' => ['uri' => 'static'],
- 'upload' => ['uri' => 'media/upload']
- ]
- ]],
- [false, []]
- ];
- }
- }
|