Skip to content

Commit 52001cf

Browse files
author
Ivan Gavryshko
committed
MAGETWO-43265: An exception if try to get to the Web Wizard without writable file permissions
- added model wrapper over file_exists - fixed unit-tests
1 parent 98e1eba commit 52001cf

File tree

5 files changed

+86
-25
lines changed

5 files changed

+86
-25
lines changed

setup/src/Magento/Setup/Controller/Environment.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@ class Environment extends AbstractActionController
2323
*/
2424
const UPDATER_DIR = 'update';
2525

26-
/**
27-
* Path to Magento config
28-
*/
29-
const PATH_TO_CONFIG = '/app/etc/config.php';
30-
3126
/**
3227
* File system
3328
*

setup/src/Magento/Setup/Controller/Index.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Zend\Mvc\Controller\AbstractActionController;
1010
use Zend\View\Model\ViewModel;
1111
use Magento\Setup\Model\ObjectManagerProvider;
12+
use Magento\Setup\Model\ApplicationStatus;
1213

1314
/**
1415
* Main controller of the Setup Wizard
@@ -20,21 +21,29 @@ class Index extends AbstractActionController
2021
*/
2122
private $objectManagerProvider;
2223

24+
/**
25+
* @var \Magento\Setup\Model\ApplicationStatus
26+
*/
27+
private $applicationStatus;
28+
2329
/**
2430
* @param ObjectManagerProvider $objectManagerProvider
31+
* @param ApplicationStatus $applicationStatus
2532
*/
2633
public function __construct(
27-
ObjectManagerProvider $objectManagerProvider
34+
ObjectManagerProvider $objectManagerProvider,
35+
ApplicationStatus $applicationStatus
2836
) {
2937
$this->objectManagerProvider = $objectManagerProvider;
38+
$this->applicationStatus = $applicationStatus;
3039
}
3140

3241
/**
3342
* @return ViewModel|\Zend\Http\Response
3443
*/
3544
public function indexAction()
3645
{
37-
if (file_exists(BP . \Magento\Setup\Controller\Environment::PATH_TO_CONFIG)) {
46+
if ($this->applicationStatus->isApplicationInstalled()) {
3847
$objectManager = $this->objectManagerProvider->get();
3948
/** @var \Magento\Framework\App\State $adminAppState */
4049
$adminAppState = $objectManager->get('Magento\Framework\App\State');

setup/src/Magento/Setup/Model/Navigation.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ class Navigation
3535
/**
3636
* @param ServiceLocatorInterface $serviceLocator
3737
*/
38-
public function __construct(ServiceLocatorInterface $serviceLocator)
38+
public function __construct(ServiceLocatorInterface $serviceLocator, ApplicationStatus $applicationStatus)
3939
{
40-
if (file_exists(BP . \Magento\Setup\Controller\Environment::PATH_TO_CONFIG)) {
40+
if ($applicationStatus->isApplicationInstalled()) {
4141
$this->navStates = $serviceLocator->get('config')[self::NAV_UPDATER];
4242
$this->navType = self::NAV_UPDATER;
4343
$this->titles = $serviceLocator->get('config')[self::NAV_UPDATER . 'Titles'];

setup/src/Magento/Setup/Test/Unit/Controller/IndexTest.php

Lines changed: 63 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,21 @@ class IndexTest extends \PHPUnit_Framework_TestCase
2121
private $objectManager;
2222

2323
/**
24-
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\App\DeploymentConfig
24+
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Setup\Model\ApplicationStatus
2525
*/
26-
private $deploymentConfig;
26+
private $applicationStatus;
2727

28-
public function testIndexAction()
28+
/**
29+
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\App\State
30+
*/
31+
private $appState;
32+
33+
/**
34+
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Backend\Model\Auth
35+
*/
36+
private $auth;
37+
38+
public function setUp()
2939
{
3040
$this->objectManager = $this->getMockForAbstractClass('Magento\Framework\ObjectManagerInterface');
3141
$this->objectManagerProvider = $this->getMock(
@@ -35,12 +45,58 @@ public function testIndexAction()
3545
'',
3646
false
3747
);
38-
$this->deploymentConfig = $this->getMock('Magento\Framework\App\DeploymentConfig', [], [], '', false);
48+
$this->applicationStatus = $this->getMock(
49+
'Magento\Setup\Model\ApplicationStatus',
50+
[],
51+
[],
52+
'',
53+
false
54+
);
55+
$this->appState = $this->getMock(
56+
'Magento\Framework\App\State',
57+
[],
58+
[],
59+
'',
60+
false
61+
);
62+
$this->auth = $this->getMock(
63+
'Magento\Backend\Model\Auth',
64+
[],
65+
[],
66+
'',
67+
false
68+
);
69+
}
70+
71+
public function testIndexActionInstalled()
72+
{
73+
$this->applicationStatus->expects($this->once())->method('isApplicationInstalled')->willReturn(true);
3974
$this->objectManagerProvider->expects($this->once())->method('get')->willReturn($this->objectManager);
40-
$this->objectManager->expects($this->once())->method('get')->willReturn($this->deploymentConfig);
41-
$this->deploymentConfig->expects($this->once())->method('isAvailable')->willReturn(false);
75+
$this->appState->expects($this->once())->method('setAreaCode');
76+
$this->auth->expects($this->once())->method('isLoggedIn');
77+
$this->objectManager->expects($this->any())
78+
->method('get')
79+
->will(
80+
$this->returnValueMap(
81+
[
82+
['Magento\Framework\App\State', $this->appState],
83+
['Magento\Backend\Model\Auth', $this->auth]
84+
]
85+
)
86+
);
87+
/** @var $controller Index */
88+
$controller = new Index($this->objectManagerProvider, $this->applicationStatus);
89+
$viewModel = $controller->indexAction();
90+
$this->assertInstanceOf('Zend\View\Model\ViewModel', $viewModel);
91+
$this->assertFalse($viewModel->terminate());
92+
}
93+
94+
public function testIndexActionNotInstalled()
95+
{
96+
$this->applicationStatus->expects($this->once())->method('isApplicationInstalled')->willReturn(false);
97+
$this->objectManagerProvider->expects($this->exactly(0))->method('get');
4298
/** @var $controller Index */
43-
$controller = new Index($this->objectManagerProvider);
99+
$controller = new Index($this->objectManagerProvider, $this->applicationStatus);
44100
$viewModel = $controller->indexAction();
45101
$this->assertInstanceOf('Zend\View\Model\ViewModel', $viewModel);
46102
$this->assertFalse($viewModel->terminate());

setup/src/Magento/Setup/Test/Unit/Model/NavigationTest.php

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ class NavigationTest extends \PHPUnit_Framework_TestCase
1616
private $serviceLocatorMock;
1717

1818
/**
19-
* @var \Magento\Setup\Model\ObjectManagerProvider|\PHPUnit_Framework_MockObject_MockObject
19+
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Setup\Model\ApplicationStatus
2020
*/
21-
private $objectManagerProvider;
21+
private $applicationStatus;
2222

2323
/**
2424
* @var Navigation
@@ -29,12 +29,6 @@ public function setUp()
2929
{
3030
$this->serviceLocatorMock =
3131
$this->getMockForAbstractClass('Zend\ServiceManager\ServiceLocatorInterface', ['get']);
32-
$deploymentConfig = $this->getMock('Magento\Framework\App\DeploymentConfig', [], [], '', false);
33-
$deploymentConfig->expects($this->once())->method('isAvailable')->willReturn(false);
34-
$objectManager = $this->getMock('Magento\Framework\ObjectManagerInterface', [], [], '', false);
35-
$objectManager->expects($this->once())->method('get')->willReturn($deploymentConfig);
36-
$this->objectManagerProvider = $this->getMock('Magento\Setup\Model\ObjectManagerProvider', [], [], '', false);
37-
$this->objectManagerProvider->expects($this->once())->method('get')->willReturn($objectManager);
3832
$this->serviceLocatorMock
3933
->expects($this->exactly(2))
4034
->method('get')
@@ -54,7 +48,14 @@ public function setUp()
5448
['main' => false],
5549
]
5650
]));
57-
$this->navigation = new Navigation($this->serviceLocatorMock, $this->objectManagerProvider);
51+
$this->applicationStatus = $this->getMock(
52+
'Magento\Setup\Model\ApplicationStatus',
53+
[],
54+
[],
55+
'',
56+
false
57+
);
58+
$this->navigation = new Navigation($this->serviceLocatorMock, $this->applicationStatus);
5859
}
5960

6061
public function testGetType()

0 commit comments

Comments
 (0)