]> source.dussan.org Git - nextcloud-server.git/commitdiff
don't lose file size during rename
authorBjoern Schiessle <schiessle@owncloud.com>
Mon, 26 May 2014 10:37:43 +0000 (12:37 +0200)
committerBjoern Schiessle <schiessle@owncloud.com>
Mon, 26 May 2014 12:11:33 +0000 (14:11 +0200)
apps/files_sharing/lib/sharedstorage.php
apps/files_sharing/tests/sharedstorage.php

index 02a8ebab93ac2dca995879c9c1ecd0a4f1ed2238..67ccbd134035a7a66bdd9d251acc4c87c41f4453 100644 (file)
@@ -177,13 +177,9 @@ class Shared extends \OC\Files\Storage\Common {
        }
 
        public function filesize($path) {
-               if ($path == '' || $path == '/' || $this->is_dir($path)) {
-                       return 0;
-               } else if ($source = $this->getSourcePath($path)) {
-                       list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
-                       return $storage->filesize($internalPath);
-               }
-               return false;
+               $source = $this->getSourcePath($path);
+               list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+               return $storage->filesize($internalPath);
        }
 
        public function isCreatable($path) {
index 258a2a9841b787aedea9b0aaa7dda60ede9be7bf..b80ab6b4f14a51cc15a754f3d8b9ea589993e7ec 100644 (file)
@@ -36,12 +36,17 @@ class Test_Files_Sharing_Storage extends Test_Files_Sharing_Base {
 
                $this->filename = '/share-api-storage.txt';
 
-               // save file with content
+
                $this->view->mkdir($this->folder);
+
+               // save file with content
+               $this->view->file_put_contents($this->filename, "root file");
+               $this->view->file_put_contents($this->folder . $this->filename, "file in subfolder");
        }
 
        function tearDown() {
-               $this->view->deleteAll($this->folder);
+               $this->view->unlink($this->folder);
+               $this->view->unlink($this->filename);
 
                parent::tearDown();
        }
@@ -123,7 +128,42 @@ class Test_Files_Sharing_Storage extends Test_Files_Sharing_Base {
                $this->assertTrue($this->view->file_exists( $this->folder. '/foo.txt'));
 
                //cleanup
-               $this->view->unlink($this->folder);
+               \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
+                       self::TEST_FILES_SHARING_API_USER2);
+       }
+
+       public function testFilesize() {
+
+               $fileinfoFolder = $this->view->getFileInfo($this->folder);
+               $fileinfoFile = $this->view->getFileInfo($this->filename);
+
+               $folderSize = $this->view->filesize($this->folder);
+               $file1Size = $this->view->filesize($this->folder. $this->filename);
+               $file2Size = $this->view->filesize($this->filename);
+
+               $result = \OCP\Share::shareItem('folder', $fileinfoFolder['fileid'], \OCP\Share::SHARE_TYPE_USER,
+                       self::TEST_FILES_SHARING_API_USER2, 31);
+               $this->assertTrue($result);
+
+               $result = \OCP\Share::shareItem('file', $fileinfoFile['fileid'], \OCP\Share::SHARE_TYPE_USER,
+                       self::TEST_FILES_SHARING_API_USER2, 31);
+               $this->assertTrue($result);
+
+               self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
+
+               // compare file size between user1 and user2, should always be the same
+               $this->assertSame($folderSize, \OC\Files\Filesystem::filesize($this->folder));
+               $this->assertSame($file1Size, \OC\Files\Filesystem::filesize($this->folder . $this->filename));
+               $this->assertSame($file2Size, \OC\Files\Filesystem::filesize($this->filename));
+
+               //cleanup
+               self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
+               $result = \OCP\Share::unshare('folder', $fileinfoFolder['fileid'], \OCP\Share::SHARE_TYPE_USER,
+                       self::TEST_FILES_SHARING_API_USER2);
+               $this->assertTrue($result);
+               $result = \OCP\Share::unshare('file', $fileinfoFile['fileid'], \OCP\Share::SHARE_TYPE_USER,
+                       self::TEST_FILES_SHARING_API_USER2);
+               $this->assertTrue($result);
        }
 
 }