aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_trashbin/tests
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_trashbin/tests')
-rw-r--r--apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php25
-rw-r--r--apps/files_trashbin/tests/CapabilitiesTest.php6
-rw-r--r--apps/files_trashbin/tests/Command/CleanUpTest.php80
-rw-r--r--apps/files_trashbin/tests/Command/ExpireTest.php2
-rw-r--r--apps/files_trashbin/tests/Controller/PreviewControllerTest.php34
-rw-r--r--apps/files_trashbin/tests/ExpirationTest.php25
-rw-r--r--apps/files_trashbin/tests/Sabre/TrashbinPluginTest.php72
-rw-r--r--apps/files_trashbin/tests/StorageTest.php118
-rw-r--r--apps/files_trashbin/tests/TrashbinTest.php47
9 files changed, 212 insertions, 197 deletions
diff --git a/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php b/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php
index ee833e6beb8..9468fb7add0 100644
--- a/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php
+++ b/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -18,23 +20,12 @@ use Psr\Log\LoggerInterface;
use Test\TestCase;
class ExpireTrashTest extends TestCase {
- /** @var IAppConfig&MockObject */
- private $appConfig;
-
- /** @var IUserManager&MockObject */
- private $userManager;
-
- /** @var Expiration&MockObject */
- private $expiration;
-
- /** @var IJobList&MockObject */
- private $jobList;
-
- /** @var LoggerInterface&MockObject */
- private $logger;
-
- /** @var ITimeFactory&MockObject */
- private $time;
+ private IAppConfig&MockObject $appConfig;
+ private IUserManager&MockObject $userManager;
+ private Expiration&MockObject $expiration;
+ private IJobList&MockObject $jobList;
+ private LoggerInterface&MockObject $logger;
+ private ITimeFactory&MockObject $time;
protected function setUp(): void {
parent::setUp();
diff --git a/apps/files_trashbin/tests/CapabilitiesTest.php b/apps/files_trashbin/tests/CapabilitiesTest.php
index a5e4e79aefd..1c460cc5665 100644
--- a/apps/files_trashbin/tests/CapabilitiesTest.php
+++ b/apps/files_trashbin/tests/CapabilitiesTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -9,9 +11,7 @@ use OCA\Files_Trashbin\Capabilities;
use Test\TestCase;
class CapabilitiesTest extends TestCase {
-
- /** @var Capabilities */
- private $capabilities;
+ private Capabilities $capabilities;
protected function setUp(): void {
parent::setUp();
diff --git a/apps/files_trashbin/tests/Command/CleanUpTest.php b/apps/files_trashbin/tests/Command/CleanUpTest.php
index 25d38752e91..3dce8f0c92e 100644
--- a/apps/files_trashbin/tests/Command/CleanUpTest.php
+++ b/apps/files_trashbin/tests/Command/CleanUpTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -6,12 +8,13 @@
*/
namespace OCA\Files_Trashbin\Tests\Command;
-use OC\User\Manager;
use OCA\Files_Trashbin\Command\CleanUp;
use OCP\Files\IRootFolder;
use OCP\IDBConnection;
+use OCP\IUserManager;
use OCP\Server;
use OCP\UserInterface;
+use PHPUnit\Framework\MockObject\MockObject;
use Symfony\Component\Console\Exception\InvalidOptionException;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\NullOutput;
@@ -26,31 +29,17 @@ use Test\TestCase;
* @package OCA\Files_Trashbin\Tests\Command
*/
class CleanUpTest extends TestCase {
-
- /** @var CleanUp */
- protected $cleanup;
-
- /** @var \PHPUnit\Framework\MockObject\MockObject | Manager */
- protected $userManager;
-
- /** @var \PHPUnit\Framework\MockObject\MockObject | IRootFolder */
- protected $rootFolder;
-
- /** @var IDBConnection */
- protected $dbConnection;
-
- /** @var string */
- protected $trashTable = 'files_trash';
-
- /** @var string */
- protected $user0 = 'user0';
+ protected IUserManager&MockObject $userManager;
+ protected IRootFolder&MockObject $rootFolder;
+ protected IDBConnection $dbConnection;
+ protected CleanUp $cleanup;
+ protected string $trashTable = 'files_trash';
+ protected string $user0 = 'user0';
protected function setUp(): void {
parent::setUp();
- $this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')
- ->disableOriginalConstructor()->getMock();
- $this->userManager = $this->getMockBuilder('OC\User\Manager')
- ->disableOriginalConstructor()->getMock();
+ $this->rootFolder = $this->createMock(IRootFolder::class);
+ $this->userManager = $this->createMock(IUserManager::class);
$this->dbConnection = Server::get(IDBConnection::class);
@@ -60,9 +49,9 @@ class CleanUpTest extends TestCase {
/**
* populate files_trash table with 10 dummy values
*/
- public function initTable() {
+ public function initTable(): void {
$query = $this->dbConnection->getQueryBuilder();
- $query->delete($this->trashTable)->execute();
+ $query->delete($this->trashTable)->executeStatement();
for ($i = 0; $i < 10; $i++) {
$query->insert($this->trashTable)
->values([
@@ -70,19 +59,18 @@ class CleanUpTest extends TestCase {
'timestamp' => $query->expr()->literal($i),
'location' => $query->expr()->literal('.'),
'user' => $query->expr()->literal('user' . $i % 2)
- ])->execute();
+ ])->executeStatement();
}
$getAllQuery = $this->dbConnection->getQueryBuilder();
$result = $getAllQuery->select('id')
->from($this->trashTable)
- ->execute()
+ ->executeQuery()
->fetchAll();
- $this->assertSame(10, count($result));
+ $this->assertCount(10, $result);
}
/**
* @dataProvider dataTestRemoveDeletedFiles
- * @param boolean $nodeExists
*/
public function testRemoveDeletedFiles(bool $nodeExists): void {
$this->initTable();
@@ -101,7 +89,7 @@ class CleanUpTest extends TestCase {
$this->rootFolder->expects($this->never())->method('get');
$this->rootFolder->expects($this->never())->method('delete');
}
- $this->invokePrivate($this->cleanup, 'removeDeletedFiles', [$this->user0, new NullOutput(), false]);
+ self::invokePrivate($this->cleanup, 'removeDeletedFiles', [$this->user0, new NullOutput(), false]);
if ($nodeExists) {
// if the delete operation was executed only files from user1
@@ -110,11 +98,11 @@ class CleanUpTest extends TestCase {
$query->select('user')
->from($this->trashTable);
- $qResult = $query->execute();
+ $qResult = $query->executeQuery();
$result = $qResult->fetchAll();
$qResult->closeCursor();
- $this->assertSame(5, count($result));
+ $this->assertCount(5, $result);
foreach ($result as $r) {
$this->assertSame('user1', $r['user']);
}
@@ -124,12 +112,12 @@ class CleanUpTest extends TestCase {
$getAllQuery = $this->dbConnection->getQueryBuilder();
$result = $getAllQuery->select('id')
->from($this->trashTable)
- ->execute()
+ ->executeQuery()
->fetchAll();
- $this->assertSame(10, count($result));
+ $this->assertCount(10, $result);
}
}
- public function dataTestRemoveDeletedFiles() {
+ public static function dataTestRemoveDeletedFiles(): array {
return [
[true],
[false]
@@ -141,8 +129,8 @@ class CleanUpTest extends TestCase {
*/
public function testExecuteDeleteListOfUsers(): void {
$userIds = ['user1', 'user2', 'user3'];
- $instance = $this->getMockBuilder('OCA\Files_Trashbin\Command\CleanUp')
- ->setMethods(['removeDeletedFiles'])
+ $instance = $this->getMockBuilder(\OCA\Files_Trashbin\Command\CleanUp::class)
+ ->onlyMethods(['removeDeletedFiles'])
->setConstructorArgs([$this->rootFolder, $this->userManager, $this->dbConnection])
->getMock();
$instance->expects($this->exactly(count($userIds)))
@@ -152,8 +140,7 @@ class CleanUpTest extends TestCase {
});
$this->userManager->expects($this->exactly(count($userIds)))
->method('userExists')->willReturn(true);
- $inputInterface = $this->getMockBuilder('\Symfony\Component\Console\Input\InputInterface')
- ->disableOriginalConstructor()->getMock();
+ $inputInterface = $this->createMock(\Symfony\Component\Console\Input\InputInterface::class);
$inputInterface->method('getArgument')
->with('user_id')
->willReturn($userIds);
@@ -162,9 +149,8 @@ class CleanUpTest extends TestCase {
['all-users', false],
['verbose', false],
]);
- $outputInterface = $this->getMockBuilder('\Symfony\Component\Console\Output\OutputInterface')
- ->disableOriginalConstructor()->getMock();
- $this->invokePrivate($instance, 'execute', [$inputInterface, $outputInterface]);
+ $outputInterface = $this->createMock(\Symfony\Component\Console\Output\OutputInterface::class);
+ self::invokePrivate($instance, 'execute', [$inputInterface, $outputInterface]);
}
/**
@@ -173,8 +159,8 @@ class CleanUpTest extends TestCase {
public function testExecuteAllUsers(): void {
$userIds = [];
$backendUsers = ['user1', 'user2'];
- $instance = $this->getMockBuilder('OCA\Files_Trashbin\Command\CleanUp')
- ->setMethods(['removeDeletedFiles'])
+ $instance = $this->getMockBuilder(\OCA\Files_Trashbin\Command\CleanUp::class)
+ ->onlyMethods(['removeDeletedFiles'])
->setConstructorArgs([$this->rootFolder, $this->userManager, $this->dbConnection])
->getMock();
$backend = $this->createMock(UserInterface::class);
@@ -199,7 +185,7 @@ class CleanUpTest extends TestCase {
$this->userManager
->method('getBackends')
->willReturn([$backend]);
- $this->invokePrivate($instance, 'execute', [$inputInterface, $outputInterface]);
+ self::invokePrivate($instance, 'execute', [$inputInterface, $outputInterface]);
}
public function testExecuteNoUsersAndNoAllUsers(): void {
@@ -217,7 +203,7 @@ class CleanUpTest extends TestCase {
$this->expectException(InvalidOptionException::class);
$this->expectExceptionMessage('Either specify a user_id or --all-users');
- $this->invokePrivate($this->cleanup, 'execute', [$inputInterface, $outputInterface]);
+ self::invokePrivate($this->cleanup, 'execute', [$inputInterface, $outputInterface]);
}
public function testExecuteUsersAndAllUsers(): void {
@@ -235,6 +221,6 @@ class CleanUpTest extends TestCase {
$this->expectException(InvalidOptionException::class);
$this->expectExceptionMessage('Either specify a user_id or --all-users');
- $this->invokePrivate($this->cleanup, 'execute', [$inputInterface, $outputInterface]);
+ self::invokePrivate($this->cleanup, 'execute', [$inputInterface, $outputInterface]);
}
}
diff --git a/apps/files_trashbin/tests/Command/ExpireTest.php b/apps/files_trashbin/tests/Command/ExpireTest.php
index 4402e07bbb0..5a66dac8c6e 100644
--- a/apps/files_trashbin/tests/Command/ExpireTest.php
+++ b/apps/files_trashbin/tests/Command/ExpireTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
diff --git a/apps/files_trashbin/tests/Controller/PreviewControllerTest.php b/apps/files_trashbin/tests/Controller/PreviewControllerTest.php
index 1076870bb9f..bb951c9c8c7 100644
--- a/apps/files_trashbin/tests/Controller/PreviewControllerTest.php
+++ b/apps/files_trashbin/tests/Controller/PreviewControllerTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -20,32 +22,18 @@ use OCP\IPreview;
use OCP\IRequest;
use OCP\IUser;
use OCP\IUserSession;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class PreviewControllerTest extends TestCase {
- /** @var IRootFolder|\PHPUnit\Framework\MockObject\MockObject */
- private $rootFolder;
-
- /** @var string */
- private $userId;
-
- /** @var IMimeTypeDetector|\PHPUnit\Framework\MockObject\MockObject */
- private $mimeTypeDetector;
-
- /** @var IPreview|\PHPUnit\Framework\MockObject\MockObject */
- private $previewManager;
-
- /** @var ITimeFactory|\PHPUnit\Framework\MockObject\MockObject */
- private $time;
-
- /** @var PreviewController */
- private $controller;
-
- /** @var ITrashManager|\PHPUnit\Framework\MockObject\MockObject */
- private $trashManager;
-
- /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */
- private $userSession;
+ private IRootFolder&MockObject $rootFolder;
+ private string $userId;
+ private IMimeTypeDetector&MockObject $mimeTypeDetector;
+ private IPreview&MockObject $previewManager;
+ private ITimeFactory&MockObject $time;
+ private ITrashManager&MockObject $trashManager;
+ private IUserSession&MockObject $userSession;
+ private PreviewController $controller;
protected function setUp(): void {
parent::setUp();
diff --git a/apps/files_trashbin/tests/ExpirationTest.php b/apps/files_trashbin/tests/ExpirationTest.php
index 7f026c16806..aab07de8162 100644
--- a/apps/files_trashbin/tests/ExpirationTest.php
+++ b/apps/files_trashbin/tests/ExpirationTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -16,7 +18,7 @@ class ExpirationTest extends \Test\TestCase {
public const FAKE_TIME_NOW = 1000000;
- public function expirationData() {
+ public static function expirationData(): array {
$today = 100 * self::SECONDS_PER_DAY;
$back10Days = (100 - 10) * self::SECONDS_PER_DAY;
$back20Days = (100 - 20) * self::SECONDS_PER_DAY;
@@ -82,14 +84,8 @@ class ExpirationTest extends \Test\TestCase {
/**
* @dataProvider expirationData
- *
- * @param string $retentionObligation
- * @param int $timeNow
- * @param int $timestamp
- * @param bool $quotaExceeded
- * @param string $expectedResult
*/
- public function testExpiration($retentionObligation, $timeNow, $timestamp, $quotaExceeded, $expectedResult): void {
+ public function testExpiration(string $retentionObligation, int $timeNow, int $timestamp, bool $quotaExceeded, bool $expectedResult): void {
$mockedConfig = $this->getMockedConfig($retentionObligation);
$mockedTimeFactory = $this->getMockedTimeFactory($timeNow);
@@ -100,7 +96,7 @@ class ExpirationTest extends \Test\TestCase {
}
- public function timestampTestData(): array {
+ public static function timestampTestData(): array {
return [
[ 'disabled', false],
[ 'auto', false ],
@@ -116,11 +112,8 @@ class ExpirationTest extends \Test\TestCase {
/**
* @dataProvider timestampTestData
- *
- * @param string $configValue
- * @param int $expectedMaxAgeTimestamp
*/
- public function testGetMaxAgeAsTimestamp($configValue, $expectedMaxAgeTimestamp): void {
+ public function testGetMaxAgeAsTimestamp(string $configValue, bool|int $expectedMaxAgeTimestamp): void {
$mockedConfig = $this->getMockedConfig($configValue);
$mockedTimeFactory = $this->getMockedTimeFactory(
self::FAKE_TIME_NOW
@@ -132,10 +125,9 @@ class ExpirationTest extends \Test\TestCase {
}
/**
- * @param int $time
* @return ITimeFactory|MockObject
*/
- private function getMockedTimeFactory($time) {
+ private function getMockedTimeFactory(int $time) {
$mockedTimeFactory = $this->createMock(ITimeFactory::class);
$mockedTimeFactory->expects($this->any())
->method('getTime')
@@ -145,10 +137,9 @@ class ExpirationTest extends \Test\TestCase {
}
/**
- * @param string $returnValue
* @return IConfig|MockObject
*/
- private function getMockedConfig($returnValue) {
+ private function getMockedConfig(string $returnValue) {
$mockedConfig = $this->createMock(IConfig::class);
$mockedConfig->expects($this->any())
->method('getSystemValue')
diff --git a/apps/files_trashbin/tests/Sabre/TrashbinPluginTest.php b/apps/files_trashbin/tests/Sabre/TrashbinPluginTest.php
new file mode 100644
index 00000000000..6c566afc738
--- /dev/null
+++ b/apps/files_trashbin/tests/Sabre/TrashbinPluginTest.php
@@ -0,0 +1,72 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCA\Files_Trashbin\Tests\Sabre;
+
+use OC\Files\FileInfo;
+use OC\Files\View;
+use OCA\Files_Trashbin\Sabre\ITrash;
+use OCA\Files_Trashbin\Sabre\RestoreFolder;
+use OCA\Files_Trashbin\Sabre\TrashbinPlugin;
+use OCA\Files_Trashbin\Trash\ITrashItem;
+use OCP\IPreview;
+use Sabre\DAV\Server;
+use Sabre\DAV\Tree;
+use Test\TestCase;
+
+class TrashbinPluginTest extends TestCase {
+ private Server $server;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $tree = $this->createMock(Tree::class);
+ $this->server = new Server($tree);
+ }
+
+ /**
+ * @dataProvider quotaProvider
+ */
+ public function testQuota(int $quota, int $fileSize, bool $expectedResult): void {
+ $fileInfo = $this->createMock(ITrashItem::class);
+ $fileInfo->method('getSize')
+ ->willReturn($fileSize);
+
+ $trashNode = $this->createMock(ITrash::class);
+ $trashNode->method('getFileInfo')
+ ->willReturn($fileInfo);
+
+ $restoreNode = $this->createMock(RestoreFolder::class);
+
+ $this->server->tree->method('getNodeForPath')
+ ->willReturn($trashNode, $restoreNode);
+
+ $previewManager = $this->createMock(IPreview::class);
+
+ $view = $this->createMock(View::class);
+ $view->method('free_space')
+ ->willReturn($quota);
+
+ $plugin = new TrashbinPlugin($previewManager, $view);
+ $plugin->initialize($this->server);
+
+ $sourcePath = 'trashbin/test/trash/file1';
+ $destinationPath = 'trashbin/test/restore/file1';
+ $this->assertEquals($expectedResult, $plugin->beforeMove($sourcePath, $destinationPath));
+ }
+
+ public static function quotaProvider(): array {
+ return [
+ [ 1024, 512, true ],
+ [ 512, 513, false ],
+ [ FileInfo::SPACE_NOT_COMPUTED, 1024, true ],
+ [ FileInfo::SPACE_UNKNOWN, 1024, true ],
+ [ FileInfo::SPACE_UNLIMITED, 1024, true ]
+ ];
+ }
+}
diff --git a/apps/files_trashbin/tests/StorageTest.php b/apps/files_trashbin/tests/StorageTest.php
index 5c73e47b307..2b2508a358b 100644
--- a/apps/files_trashbin/tests/StorageTest.php
+++ b/apps/files_trashbin/tests/StorageTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -27,6 +29,7 @@ use OCP\IUserManager;
use OCP\Lock\ILockingProvider;
use OCP\Server;
use OCP\Share\IShare;
+use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\Traits\MountProviderTrait;
@@ -50,20 +53,9 @@ class TemporaryNoCross extends Temporary {
class StorageTest extends \Test\TestCase {
use MountProviderTrait;
- /**
- * @var string
- */
- private $user;
-
- /**
- * @var View
- */
- private $rootView;
-
- /**
- * @var View
- */
- private $userView;
+ private string $user;
+ private View $rootView;
+ private View $userView;
// 239 chars so appended timestamp of 12 chars will exceed max length of 250 chars
private const LONG_FILENAME = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt';
@@ -121,7 +113,7 @@ class StorageTest extends \Test\TestCase {
// check if file is in trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('test.txt', substr($name, 0, strrpos($name, '.')));
}
@@ -138,7 +130,7 @@ class StorageTest extends \Test\TestCase {
// check if folder is in trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('folder', substr($name, 0, strrpos($name, '.')));
@@ -162,7 +154,7 @@ class StorageTest extends \Test\TestCase {
// check if file is in trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals($truncatedFilename, substr($name, 0, strrpos($name, '.')));
}
@@ -181,7 +173,7 @@ class StorageTest extends \Test\TestCase {
// check if file is in trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals($truncatedFilename, substr($name, 0, strrpos($name, '.')));
}
@@ -207,7 +199,7 @@ class StorageTest extends \Test\TestCase {
// check if file is in trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('subfile.txt', substr($name, 0, strrpos($name, '.')));
}
@@ -234,12 +226,12 @@ class StorageTest extends \Test\TestCase {
// check if folder is in trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('folder', substr($name, 0, strrpos($name, '.')));
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/' . $name . '/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('subfile.txt', $name);
}
@@ -262,13 +254,13 @@ class StorageTest extends \Test\TestCase {
// check if versions are in trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('test.txt.v', substr($name, 0, strlen('test.txt.v')));
// versions deleted
$results = $this->rootView->getDirectoryContent($this->user . '/files_versions/');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
}
/**
@@ -279,7 +271,7 @@ class StorageTest extends \Test\TestCase {
$this->userView->file_put_contents('folder/inside.txt', 'v1');
$results = $this->rootView->getDirectoryContent($this->user . '/files_versions/folder/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$this->userView->rmdir('folder');
@@ -289,19 +281,19 @@ class StorageTest extends \Test\TestCase {
// check if versions are in trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('folder.d', substr($name, 0, strlen('folder.d')));
// check if versions are in trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions/' . $name . '/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('inside.txt.v', substr($name, 0, strlen('inside.txt.v')));
// versions deleted
$results = $this->rootView->getDirectoryContent($this->user . '/files_versions/folder/');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
}
/**
@@ -314,12 +306,12 @@ class StorageTest extends \Test\TestCase {
$this->userView->file_put_contents('share/test.txt', 'v2');
$results = $this->rootView->getDirectoryContent($this->user . '/files_versions/share/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$recipientUser = $this->getUniqueId('recipient_');
Server::get(IUserManager::class)->createUser($recipientUser, $recipientUser);
- $node = \OC::$server->getUserFolder($this->user)->get('share');
+ $node = \OCP\Server::get(IRootFolder::class)->getUserFolder($this->user)->get('share');
$share = Server::get(\OCP\Share\IManager::class)->newShare();
$share->setNode($node)
->setShareType(IShare::TYPE_USER)
@@ -341,18 +333,18 @@ class StorageTest extends \Test\TestCase {
// check if versions are in trashbin for both users
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions');
- $this->assertEquals(1, count($results), 'Versions in owner\'s trashbin');
+ $this->assertCount(1, $results, 'Versions in owner\'s trashbin');
$name = $results[0]->getName();
$this->assertEquals('test.txt.v', substr($name, 0, strlen('test.txt.v')));
$results = $this->rootView->getDirectoryContent($recipientUser . '/files_trashbin/versions');
- $this->assertEquals(1, count($results), 'Versions in recipient\'s trashbin');
+ $this->assertCount(1, $results, 'Versions in recipient\'s trashbin');
$name = $results[0]->getName();
$this->assertEquals('test.txt.v', substr($name, 0, strlen('test.txt.v')));
// versions deleted
$results = $this->rootView->getDirectoryContent($this->user . '/files_versions/share/');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
}
/**
@@ -366,12 +358,11 @@ class StorageTest extends \Test\TestCase {
$this->userView->file_put_contents('share/folder/test.txt', 'v2');
$results = $this->rootView->getDirectoryContent($this->user . '/files_versions/share/folder/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$recipientUser = $this->getUniqueId('recipient_');
Server::get(IUserManager::class)->createUser($recipientUser, $recipientUser);
-
- $node = \OC::$server->getUserFolder($this->user)->get('share');
+ $node = \OCP\Server::get(IRootFolder::class)->getUserFolder($this->user)->get('share');
$share = Server::get(\OCP\Share\IManager::class)->newShare();
$share->setNode($node)
->setShareType(IShare::TYPE_USER)
@@ -393,31 +384,31 @@ class StorageTest extends \Test\TestCase {
// check if versions are in trashbin for owner
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('folder.d', substr($name, 0, strlen('folder.d')));
// check if file versions are in trashbin for owner
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions/' . $name . '/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('test.txt.v', substr($name, 0, strlen('test.txt.v')));
// check if versions are in trashbin for recipient
$results = $this->rootView->getDirectoryContent($recipientUser . '/files_trashbin/versions');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('folder.d', substr($name, 0, strlen('folder.d')));
// check if file versions are in trashbin for recipient
$results = $this->rootView->getDirectoryContent($recipientUser . '/files_trashbin/versions/' . $name . '/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
$name = $results[0]->getName();
$this->assertEquals('test.txt.v', substr($name, 0, strlen('test.txt.v')));
// versions deleted
$results = $this->rootView->getDirectoryContent($recipientUser . '/files_versions/share/folder/');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
}
/**
@@ -433,10 +424,10 @@ class StorageTest extends \Test\TestCase {
$this->userView->file_put_contents('test.txt', 'v1');
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
$results = $this->rootView->getDirectoryContent($this->user . '/files_versions/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
// move to another storage
$this->userView->rename('test.txt', 'substorage/test.txt');
@@ -448,15 +439,15 @@ class StorageTest extends \Test\TestCase {
// versions were moved too
$results = $this->rootView->getDirectoryContent($this->user . '/files_versions/substorage');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
// check that nothing got trashed by the rename's unlink() call
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
// check that versions were moved and not trashed
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions/');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
}
/**
@@ -472,10 +463,10 @@ class StorageTest extends \Test\TestCase {
$this->userView->file_put_contents('folder/inside.txt', 'v1');
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
$results = $this->rootView->getDirectoryContent($this->user . '/files_versions/folder/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
// move to another storage
$this->userView->rename('folder', 'substorage/folder');
@@ -487,15 +478,15 @@ class StorageTest extends \Test\TestCase {
// versions were moved too
$results = $this->rootView->getDirectoryContent($this->user . '/files_versions/substorage/folder/');
- $this->assertEquals(1, count($results));
+ $this->assertCount(1, $results);
// check that nothing got trashed by the rename's unlink() call
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
// check that versions were moved and not trashed
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions/');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
}
/**
@@ -503,11 +494,11 @@ class StorageTest extends \Test\TestCase {
*/
public function testSingleStorageDeleteFileFail(): void {
/**
- * @var Temporary|\PHPUnit\Framework\MockObject\MockObject $storage
+ * @var Temporary&MockObject $storage
*/
- $storage = $this->getMockBuilder('\OC\Files\Storage\Temporary')
+ $storage = $this->getMockBuilder(\OC\Files\Storage\Temporary::class)
->setConstructorArgs([[]])
- ->setMethods(['rename', 'unlink', 'moveFromStorage'])
+ ->onlyMethods(['rename', 'unlink', 'moveFromStorage'])
->getMock();
$storage->expects($this->any())
@@ -532,7 +523,7 @@ class StorageTest extends \Test\TestCase {
// file should not be in the trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
}
/**
@@ -540,11 +531,11 @@ class StorageTest extends \Test\TestCase {
*/
public function testSingleStorageDeleteFolderFail(): void {
/**
- * @var Temporary|\PHPUnit\Framework\MockObject\MockObject $storage
+ * @var Temporary&MockObject $storage
*/
- $storage = $this->getMockBuilder('\OC\Files\Storage\Temporary')
+ $storage = $this->getMockBuilder(\OC\Files\Storage\Temporary::class)
->setConstructorArgs([[]])
- ->setMethods(['rename', 'unlink', 'rmdir'])
+ ->onlyMethods(['rename', 'unlink', 'rmdir'])
->getMock();
$storage->expects($this->any())
@@ -566,18 +557,17 @@ class StorageTest extends \Test\TestCase {
// file should not be in the trashbin
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/');
- $this->assertEquals(0, count($results));
+ $this->assertCount(0, $results);
}
/**
* @dataProvider dataTestShouldMoveToTrash
*/
- public function testShouldMoveToTrash($mountPoint, $path, $userExists, $appDisablesTrash, $expected): void {
+ public function testShouldMoveToTrash(string $mountPoint, string $path, bool $userExists, bool $appDisablesTrash, bool $expected): void {
$fileID = 1;
$cache = $this->createMock(ICache::class);
$cache->expects($this->any())->method('getId')->willReturn($fileID);
- $tmpStorage = $this->getMockBuilder('\OC\Files\Storage\Temporary')
- ->disableOriginalConstructor()->getMock($cache);
+ $tmpStorage = $this->createMock(\OC\Files\Storage\Temporary::class);
$tmpStorage->expects($this->any())->method('getCache')->willReturn($cache);
$userManager = $this->getMockBuilder(IUserManager::class)
->disableOriginalConstructor()->getMock();
@@ -606,7 +596,9 @@ class StorageTest extends \Test\TestCase {
$eventDispatcher,
$rootFolder
]
- )->setMethods(['createMoveToTrashEvent'])->getMock();
+ )
+ ->onlyMethods(['createMoveToTrashEvent'])
+ ->getMock();
$storage->expects($this->any())->method('createMoveToTrashEvent')->with($node)
->willReturn($event);
@@ -616,7 +608,7 @@ class StorageTest extends \Test\TestCase {
);
}
- public function dataTestShouldMoveToTrash() {
+ public static function dataTestShouldMoveToTrash(): array {
return [
['/schiesbn/', '/files/test.txt', true, false, true],
['/schiesbn/', '/files/test.txt', false, false, false],
diff --git a/apps/files_trashbin/tests/TrashbinTest.php b/apps/files_trashbin/tests/TrashbinTest.php
index 3d2ceee0dcd..d8486ccbdc2 100644
--- a/apps/files_trashbin/tests/TrashbinTest.php
+++ b/apps/files_trashbin/tests/TrashbinTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -22,6 +24,7 @@ use OCP\App\IAppManager;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Constants;
use OCP\Files\FileInfo;
+use OCP\Files\IRootFolder;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IUserManager;
@@ -41,16 +44,8 @@ class TrashbinTest extends \Test\TestCase {
private $trashRoot2;
private static $rememberRetentionObligation;
-
- /**
- * @var bool
- */
- private static $trashBinStatus;
-
- /**
- * @var View
- */
- private $rootView;
+ private static bool $trashBinStatus;
+ private View $rootView;
public static function setUpBeforeClass(): void {
parent::setUpBeforeClass();
@@ -74,7 +69,7 @@ class TrashbinTest extends \Test\TestCase {
$config = Server::get(IConfig::class);
//configure trashbin
- self::$rememberRetentionObligation = $config->getSystemValue('trashbin_retention_obligation', Expiration::DEFAULT_RETENTION_OBLIGATION);
+ self::$rememberRetentionObligation = (string)$config->getSystemValue('trashbin_retention_obligation', Expiration::DEFAULT_RETENTION_OBLIGATION);
/** @var Expiration $expiration */
$expiration = Server::get(Expiration::class);
$expiration->setRetentionObligation('auto, 2');
@@ -190,14 +185,14 @@ class TrashbinTest extends \Test\TestCase {
// only file2.txt should be left
$remainingFiles = array_slice($manipulatedList, $count);
- $this->assertSame(1, count($remainingFiles));
+ $this->assertCount(1, $remainingFiles);
$remainingFile = reset($remainingFiles);
// TODO: failing test
#$this->assertSame('file2.txt', $remainingFile['name']);
// check that file1.txt and file3.txt was really deleted
$newTrashContent = Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1);
- $this->assertSame(1, count($newTrashContent));
+ $this->assertCount(1, $newTrashContent);
$element = reset($newTrashContent);
// TODO: failing test
#$this->assertSame('file2.txt', $element['name']);
@@ -285,8 +280,8 @@ class TrashbinTest extends \Test\TestCase {
* @param FileInfo[] $result
* @param string[] $expected
*/
- private function verifyArray($result, $expected) {
- $this->assertSame(count($expected), count($result));
+ private function verifyArray(array $result, array $expected): void {
+ $this->assertCount(count($expected), $result);
foreach ($expected as $expectedFile) {
$found = false;
foreach ($result as $fileInTrash) {
@@ -304,10 +299,8 @@ class TrashbinTest extends \Test\TestCase {
/**
* @param FileInfo[] $files
- * @param string $trashRoot
- * @param integer $expireDate
*/
- private function manipulateDeleteTime($files, $trashRoot, $expireDate) {
+ private function manipulateDeleteTime(array $files, string $trashRoot, int $expireDate): array {
$counter = 0;
foreach ($files as &$file) {
// modify every second file
@@ -361,7 +354,7 @@ class TrashbinTest extends \Test\TestCase {
* Test restoring a file
*/
public function testRestoreFileInRoot(): void {
- $userFolder = \OC::$server->getUserFolder();
+ $userFolder = \OCP\Server::get(IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1);
$file = $userFolder->newFile('file1.txt');
$file->putContent('foo');
@@ -393,7 +386,7 @@ class TrashbinTest extends \Test\TestCase {
* Test restoring a file in subfolder
*/
public function testRestoreFileInSubfolder(): void {
- $userFolder = \OC::$server->getUserFolder();
+ $userFolder = \OCP\Server::get(IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1);
$folder = $userFolder->newFolder('folder');
$file = $folder->newFile('file1.txt');
$file->putContent('foo');
@@ -426,7 +419,7 @@ class TrashbinTest extends \Test\TestCase {
* Test restoring a folder
*/
public function testRestoreFolder(): void {
- $userFolder = \OC::$server->getUserFolder();
+ $userFolder = \OCP\Server::get(IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1);
$folder = $userFolder->newFolder('folder');
$file = $folder->newFile('file1.txt');
$file->putContent('foo');
@@ -459,7 +452,7 @@ class TrashbinTest extends \Test\TestCase {
* Test restoring a file from inside a trashed folder
*/
public function testRestoreFileFromTrashedSubfolder(): void {
- $userFolder = \OC::$server->getUserFolder();
+ $userFolder = \OCP\Server::get(IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1);
$folder = $userFolder->newFolder('folder');
$file = $folder->newFile('file1.txt');
$file->putContent('foo');
@@ -493,7 +486,7 @@ class TrashbinTest extends \Test\TestCase {
* The file should then land in the root.
*/
public function testRestoreFileWithMissingSourceFolder(): void {
- $userFolder = \OC::$server->getUserFolder();
+ $userFolder = \OCP\Server::get(IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1);
$folder = $userFolder->newFolder('folder');
$file = $folder->newFile('file1.txt');
$file->putContent('foo');
@@ -530,7 +523,7 @@ class TrashbinTest extends \Test\TestCase {
* with the same name in the root folder
*/
public function testRestoreFileDoesNotOverwriteExistingInRoot(): void {
- $userFolder = \OC::$server->getUserFolder();
+ $userFolder = \OCP\Server::get(IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1);
$file = $userFolder->newFile('file1.txt');
$file->putContent('foo');
@@ -570,7 +563,7 @@ class TrashbinTest extends \Test\TestCase {
* with the same name in the source folder
*/
public function testRestoreFileDoesNotOverwriteExistingInSubfolder(): void {
- $userFolder = \OC::$server->getUserFolder();
+ $userFolder = \OCP\Server::get(IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1);
$folder = $userFolder->newFolder('folder');
$file = $folder->newFile('file1.txt');
$file->putContent('foo');
@@ -624,7 +617,7 @@ class TrashbinTest extends \Test\TestCase {
* the file to root instead
*/
public function testRestoreFileIntoReadOnlySourceFolder(): void {
- $userFolder = \OC::$server->getUserFolder();
+ $userFolder = \OCP\Server::get(IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1);
$folder = $userFolder->newFolder('folder');
$file = $folder->newFile('file1.txt');
$file->putContent('foo');
@@ -680,7 +673,7 @@ class TrashbinTest extends \Test\TestCase {
Filesystem::tearDown();
\OC_User::setUserId($user);
\OC_Util::setupFS($user);
- \OC::$server->getUserFolder($user);
+ \OCP\Server::get(IRootFolder::class)->getUserFolder($user);
}
}