8 use \Magento\Framework\Setup\FilePermissions;
17 private $directoryWriteMock;
22 private $filesystemMock;
27 private $directoryListMock;
37 private $filePermissions;
41 $this->directoryWriteMock = $this->createMock(\
Magento\Framework\
Filesystem\Directory\Write::class);
42 $this->filesystemMock = $this->createMock(\
Magento\Framework\Filesystem::class);
43 $this->stateMock = $this->createMock(State::class);
46 ->expects($this->any())
47 ->method(
'getDirectoryWrite')
48 ->will($this->returnValue($this->directoryWriteMock));
49 $this->directoryListMock = $this->createMock(\
Magento\Framework\
App\
Filesystem\DirectoryList::class);
52 $this->filesystemMock,
53 $this->directoryListMock,
65 $this->stateMock->expects($this->once())
67 ->willReturn($mageMode);
77 $this->assertEquals($expected, $this->filePermissions->getInstallationWritableDirectories());
83 $this->stateMock->expects($this->once())
94 $this->assertEquals($expected, $this->filePermissions->getInstallationWritableDirectories());
99 $this->directoryListMock
100 ->expects($this->once())
103 ->will($this->returnValue(
BP .
'/app/etc'));
105 $expected = [
BP .
'/app/etc'];
106 $this->assertEquals($expected, $this->filePermissions->getApplicationNonWritableDirectories());
117 $this->filePermissions->getInstallationWritableDirectories();
118 $this->assertEquals($expected, $this->filePermissions->getInstallationCurrentWritableDirectories());
128 $this->directoryListMock
129 ->expects($this->at(0))
132 ->will($this->returnValue(
BP .
'/app/etc'));
135 foreach ($mockMethods as $mockMethod => $returnValue) {
136 $this->directoryWriteMock
137 ->expects($this->at(
$index))
138 ->method($mockMethod)
139 ->will($this->returnValue($returnValue));
143 $this->filePermissions->getApplicationNonWritableDirectories();
144 $this->assertEquals($expected, $this->filePermissions->getApplicationCurrentNonWritableDirectories());
156 'isDirectory' =>
true,
157 'isReadable' =>
true,
158 'isWritable' =>
false 162 [[
'isExist' =>
false], []],
163 [[
'isExist' =>
true,
'isDirectory' =>
false], []],
164 [[
'isExist' =>
true,
'isDirectory' =>
true,
'isReadable' =>
true,
'isWritable' =>
true], []],
178 $this->stateMock->expects($this->once())
180 ->willReturn($mageMode);
191 array_values($this->filePermissions->getMissingWritableDirectoriesForInstallation())
196 array_values($this->filePermissions->getMissingWritablePathsForInstallation())
204 $this->stateMock->expects($this->once())
216 array_values($this->filePermissions->getMissingWritableDirectoriesForInstallation())
221 array_values($this->filePermissions->getMissingWritablePathsForInstallation())
227 $directoryMethods = [
'isExist',
'isDirectory',
'isReadable',
'isWritable'];
228 foreach ($directoryMethods as
$method) {
229 $this->directoryWriteMock->expects($this->exactly(2))
234 $this->assertEmpty($this->filePermissions->getMissingWritableDirectoriesForDbUpgrade());
244 $this->directoryListMock
245 ->expects($this->at(0))
248 ->will($this->returnValue(
BP .
'/app/etc'));
251 foreach ($mockMethods as $mockMethod => $returnValue) {
252 $this->directoryWriteMock
253 ->expects($this->at(
$index))
254 ->method($mockMethod)
255 ->will($this->returnValue($returnValue));
261 array_values($this->filePermissions->getUnnecessaryWritableDirectoriesForApplication())
271 [[
'isExist' =>
true,
'isDirectory' =>
true,
'isReadable' =>
true,
'isWritable' =>
false], []],
272 [[
'isExist' =>
false], [
BP .
'/app/etc']],
279 $this->directoryListMock
280 ->expects($this->at(4))
283 ->will($this->returnValue(
BP .
'/generated'));
288 $this->directoryListMock
289 ->expects($this->at(0))
292 ->will($this->returnValue(
BP .
'/app/etc'));
293 $this->directoryListMock
294 ->expects($this->at(1))
297 ->will($this->returnValue(
BP .
'/var'));
298 $this->directoryListMock
299 ->expects($this->at(2))
302 ->will($this->returnValue(
BP .
'/pub/media'));
303 $this->directoryListMock
304 ->expects($this->at(3))
307 ->will($this->returnValue(
BP .
'/pub/static'));
313 $this->directoryWriteMock
314 ->expects($this->at(0))
316 ->will($this->returnValue(
true));
317 $this->directoryWriteMock
318 ->expects($this->at(1))
319 ->method(
'isDirectory')
320 ->will($this->returnValue(
true));
321 $this->directoryWriteMock
322 ->expects($this->at(2))
323 ->method(
'isReadable')
324 ->will($this->returnValue(
true));
325 $this->directoryWriteMock
326 ->expects($this->at(3))
327 ->method(
'isWritable')
328 ->will($this->returnValue(
true));
331 $this->directoryWriteMock
332 ->expects($this->at(4))
334 ->will($this->returnValue(
false));
337 $this->directoryWriteMock
338 ->expects($this->at(5))
340 ->will($this->returnValue(
true));
341 $this->directoryWriteMock
342 ->expects($this->at(6))
343 ->method(
'isDirectory')
344 ->will($this->returnValue(
false));
347 $this->directoryWriteMock
348 ->expects($this->at(7))
350 ->will($this->returnValue(
true));
351 $this->directoryWriteMock
352 ->expects($this->at(8))
353 ->method(
'isDirectory')
354 ->will($this->returnValue(
true));
355 $this->directoryWriteMock
356 ->expects($this->at(9))
357 ->method(
'isReadable')
358 ->will($this->returnValue(
true));
359 $this->directoryWriteMock
360 ->expects($this->at(10))
361 ->method(
'isWritable')
362 ->will($this->returnValue(
false));
getUnnecessaryWritableDirectoriesForApplicationDataProvider()
testGetInstallationWritableDirectoriesInProduction()
testGetApplicationNonWritableDirectories()
testGetUnnecessaryWritableDirectoriesForApplication(array $mockMethods, array $expected)
setUpDirectoryWriteInstallation()
getApplicationCurrentNonWritableDirectoriesDataProvider()
testGetMissingWritableDirectoriesForDbUpgrade()
setUpDirectoryListInstallationInProduction()
testGetApplicationCurrentNonWritableDirectories(array $mockMethods, array $expected)
testGetMissingWritableDirectoriesAndPathsForInstallation($mageMode)
testGetInstallationWritableDirectories($mageMode)
testGetInstallationCurrentWritableDirectories()
setUpDirectoryListInstallation()
testGetMissingWritableDirectoriesAndPathsForInstallationInProduction()