From 41fb6b08480f587e632c1eef6dc58ee2ecde1864 Mon Sep 17 00:00:00 2001 From: Philipp Gampe Date: Mon, 29 Jul 2013 22:15:32 +0200 Subject: [PATCH] [BUGFIX] Incorrect check for empty folder The condition in ResourceStorage::deleteFolder is wrong. Negate the isFolderEmpty() clause. Resolves: #50125 Releases: 6.2, 6.1, 6.0 Change-Id: Ia60f3e97ff8d1e0cc2671cec1b31cfc995c235b1 Reviewed-on: https://review.typo3.org/22674 Reviewed-by: Christian Kuhn Tested-by: Christian Kuhn Reviewed-by: Wouter Wolters Tested-by: Wouter Wolters --- .../core/Classes/Resource/ResourceStorage.php | 2 +- .../Tests/Unit/Resource/ResourceStorageTest.php | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/typo3/sysext/core/Classes/Resource/ResourceStorage.php b/typo3/sysext/core/Classes/Resource/ResourceStorage.php index 64865c854806..f244b2bd2b6c 100644 --- a/typo3/sysext/core/Classes/Resource/ResourceStorage.php +++ b/typo3/sysext/core/Classes/Resource/ResourceStorage.php @@ -1508,7 +1508,7 @@ class ResourceStorage { if (!$this->checkFolderActionPermission('remove', $folderObject)) { throw new Exception\InsufficientFileAccessPermissionsException('You are not allowed to access the folder "' . $folderObject->getIdentifier() . '\'', 1323423953); } - if ($this->driver->isFolderEmpty($folderObject) && !$deleteRecursively) { + if (!$this->driver->isFolderEmpty($folderObject) && !$deleteRecursively) { throw new \RuntimeException('Could not delete folder "' . $folderObject->getIdentifier() . '" because it is not empty.', 1325952534); } diff --git a/typo3/sysext/core/Tests/Unit/Resource/ResourceStorageTest.php b/typo3/sysext/core/Tests/Unit/Resource/ResourceStorageTest.php index 9faa1c5af707..90e2516e0aa8 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/ResourceStorageTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/ResourceStorageTest.php @@ -531,6 +531,23 @@ class ResourceStorageTest extends \TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCa $this->fixture->createFolder('newFolder', $mockedParentFolder); } + /** + * @test + * @expectedException \RuntimeException + */ + public function deleteFolderThrowsExceptionIfFolderIsNotEmptyAndRecursiveDeleteIsDisabled() { + /** @var \TYPO3\CMS\Core\Resource\Folder|\PHPUnit_Framework_MockObject_MockObject $folderMock */ + $folderMock = $this->getMock('TYPO3\\CMS\\Core\\Resource\\Folder', array(), array(), '', FALSE); + /** @var \TYPO3\CMS\Core\Resource\Driver\AbstractDriver|\PHPUnit_Framework_MockObject_MockObject $driverMock */ + $driverMock = $this->getMock('TYPO3\\CMS\\Core\\Resource\\Driver\\AbstractDriver', array(), array(), '', FALSE); + $driverMock->expects($this->once())->method('isFolderEmpty')->will($this->returnValue(FALSE)); + /** @var \TYPO3\CMS\Core\Resource\ResourceStorage|\PHPUnit_Framework_MockObject_MockObject|\TYPO3\CMS\Core\Tests\AccessibleObjectInterface $fixture */ + $fixture = $this->getAccessibleMock('TYPO3\\CMS\\Core\\Resource\\ResourceStorage', array('checkFolderActionPermission'), array(), '', FALSE); + $fixture->expects($this->any())->method('checkFolderActionPermission')->will($this->returnValue(TRUE)); + $fixture->_set('driver', $driverMock); + $fixture->deleteFolder($folderMock, FALSE); + } + /** * @test */ -- 2.20.1