]> source.dussan.org Git - nextcloud-server.git/commitdiff
Test for proper removal of mount entries 21729/head
authorJulius Härtl <jus@bitgrid.net>
Wed, 8 Jul 2020 07:54:26 +0000 (09:54 +0200)
committerJulius Härtl <jus@bitgrid.net>
Wed, 8 Jul 2020 07:54:26 +0000 (09:54 +0200)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
apps/files/tests/Command/DeleteOrphanedFilesTest.php

index 7147d58891d903b75de41665883eeab11892f21a..556c8d5eee6d466e13af59cdc0a634e6cd690aba 100644 (file)
@@ -87,6 +87,11 @@ class DeleteOrphanedFilesTest extends TestCase {
                return $stmt->fetchAll();
        }
 
+       protected function getMounts($storageId) {
+               $stmt = $this->connection->executeQuery('SELECT * FROM `*PREFIX*mounts` WHERE `storage_id` = ?', [$storageId]);
+               return $stmt->fetchAll();
+       }
+
        /**
         * Test clearing orphaned files
         */
@@ -98,20 +103,28 @@ class DeleteOrphanedFilesTest extends TestCase {
                        ->disableOriginalConstructor()
                        ->getMock();
 
+               // scan home storage so that mounts are properly setup
+               \OC::$server->getRootFolder()->getUserFolder($this->user1)->getStorage()->getScanner()->scan('');
+
                $this->loginAsUser($this->user1);
 
+
                $view = new View('/' . $this->user1 . '/');
                $view->mkdir('files/test');
 
                $fileInfo = $view->getFileInfo('files/test');
 
                $storageId = $fileInfo->getStorage()->getId();
+               $numericStorageId = $fileInfo->getStorage()->getStorageCache()->getNumericId();
 
                $this->assertCount(1, $this->getFile($fileInfo->getId()), 'Asserts that file is available');
+               $this->assertCount(1, $this->getMounts($numericStorageId), 'Asserts that mount is available');
 
                $this->command->execute($input, $output);
 
                $this->assertCount(1, $this->getFile($fileInfo->getId()), 'Asserts that file is still available');
+               $this->assertCount(1, $this->getMounts($numericStorageId), 'Asserts that mount is still available');
+
 
                $deletedRows = $this->connection->executeUpdate('DELETE FROM `*PREFIX*storages` WHERE `id` = ?', [$storageId]);
                $this->assertNotNull($deletedRows, 'Asserts that storage got deleted');
@@ -119,13 +132,19 @@ class DeleteOrphanedFilesTest extends TestCase {
 
                // parent folder, `files`, ´test` and `welcome.txt` => 4 elements
                $output
-                       ->expects($this->once())
+                       ->expects($this->at(0))
                        ->method('writeln')
                        ->with('3 orphaned file cache entries deleted');
 
+               $output
+                       ->expects($this->at(1))
+                       ->method('writeln')
+                       ->with('1 orphaned mount entries deleted');
+
                $this->command->execute($input, $output);
 
                $this->assertCount(0, $this->getFile($fileInfo->getId()), 'Asserts that file gets cleaned up');
+               $this->assertCount(0, $this->getMounts($numericStorageId), 'Asserts that mount gets cleaned up');
 
                // since we deleted the storage it might throw a (valid) StorageNotAvailableException
                try {