Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2016-05-12 13:07:06 +0300
committerThomas Müller <DeepDiver1975@users.noreply.github.com>2016-05-12 13:07:06 +0300
commitb34bacd0718fa24c67a8ef0aa6f3b824a9b525bb (patch)
tree904bda1263850905c2c8164f4f1367d8c7bc9d46 /apps/files/tests/Command
parenteea98f1d74daf2a20c6b08b9df743f0478c48103 (diff)
Move Files app to PSR-4 (#24569)
* Move lib/ of Files app to PSR-4 * Move tests to PSR-4
Diffstat (limited to 'apps/files/tests/Command')
-rw-r--r--apps/files/tests/Command/DeleteOrphanedFilesTest.php130
1 files changed, 130 insertions, 0 deletions
diff --git a/apps/files/tests/Command/DeleteOrphanedFilesTest.php b/apps/files/tests/Command/DeleteOrphanedFilesTest.php
new file mode 100644
index 00000000000..ff29942bc4a
--- /dev/null
+++ b/apps/files/tests/Command/DeleteOrphanedFilesTest.php
@@ -0,0 +1,130 @@
+<?php
+/**
+ * @author Morris Jobke <hey@morrisjobke.de>
+ * @author Robin Appelman <icewind@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Files\Tests\Command;
+
+use OCA\Files\Command\DeleteOrphanedFiles;
+use OCP\Files\StorageNotAvailableException;
+
+/**
+ * Class DeleteOrphanedFilesTest
+ *
+ * @group DB
+ *
+ * @package OCA\Files\Tests\Command
+ */
+class DeleteOrphanedFilesTest extends \Test\TestCase {
+
+ /**
+ * @var DeleteOrphanedFiles
+ */
+ private $command;
+
+ /**
+ * @var \OCP\IDBConnection
+ */
+ private $connection;
+
+ /**
+ * @var string
+ */
+ private $user1;
+
+ protected function setup() {
+ parent::setUp();
+
+ $this->connection = \OC::$server->getDatabaseConnection();
+
+ $this->user1 = $this->getUniqueID('user1_');
+
+ $userManager = \OC::$server->getUserManager();
+ $userManager->createUser($this->user1, 'pass');
+
+ $this->command = new DeleteOrphanedFiles($this->connection);
+ }
+
+ protected function tearDown() {
+ $userManager = \OC::$server->getUserManager();
+ $user1 = $userManager->get($this->user1);
+ if($user1) {
+ $user1->delete();
+ }
+
+ $this->logout();
+
+ parent::tearDown();
+ }
+
+ protected function getFile($fileId) {
+ $stmt = $this->connection->executeQuery('SELECT * FROM `*PREFIX*filecache` WHERE `fileid` = ?', [$fileId]);
+ return $stmt->fetchAll();
+ }
+
+ /**
+ * Test clearing orphaned files
+ */
+ public function testClearFiles() {
+ $input = $this->getMockBuilder('Symfony\Component\Console\Input\InputInterface')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $output = $this->getMockBuilder('Symfony\Component\Console\Output\OutputInterface')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->loginAsUser($this->user1);
+
+ $view = new \OC\Files\View('/' . $this->user1 . '/');
+ $view->mkdir('files/test');
+
+ $fileInfo = $view->getFileInfo('files/test');
+
+ $storageId = $fileInfo->getStorage()->getId();
+
+ $this->assertCount(1, $this->getFile($fileInfo->getId()), 'Asserts that file is available');
+
+ $this->command->execute($input, $output);
+
+ $this->assertCount(1, $this->getFile($fileInfo->getId()), 'Asserts that file is still available');
+
+ $deletedRows = $this->connection->executeUpdate('DELETE FROM `*PREFIX*storages` WHERE `id` = ?', [$storageId]);
+ $this->assertNotNull($deletedRows, 'Asserts that storage got deleted');
+ $this->assertSame(1, $deletedRows, 'Asserts that storage got deleted');
+
+ // parent folder, `files`, ´test` and `welcome.txt` => 4 elements
+ $output
+ ->expects($this->once())
+ ->method('writeln')
+ ->with('4 orphaned file cache entries deleted');
+
+ $this->command->execute($input, $output);
+
+ $this->assertCount(0, $this->getFile($fileInfo->getId()), 'Asserts that file gets cleaned up');
+
+ // since we deleted the storage it might throw a (valid) StorageNotAvailableException
+ try {
+ $view->unlink('files/test');
+ } catch (StorageNotAvailableException $e) {
+ }
+ }
+}
+