diff options
Diffstat (limited to 'apps/files_sharing/tests/watcher.php')
-rw-r--r-- | apps/files_sharing/tests/watcher.php | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/apps/files_sharing/tests/watcher.php b/apps/files_sharing/tests/watcher.php deleted file mode 100644 index 247fb59f351..00000000000 --- a/apps/files_sharing/tests/watcher.php +++ /dev/null @@ -1,182 +0,0 @@ -<?php -/** - * @author Björn Schießle <schiessle@owncloud.com> - * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <icewind@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @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/> - * - */ - -/** - * Class Test_Files_Sharing_Watcher - * - * @group DB - */ -class Test_Files_Sharing_Watcher extends OCA\Files_sharing\Tests\TestCase { - - /** - * @var \OC\Files\Storage\Storage - */ - private $ownerStorage; - - /** - * @var \OC\Files\Cache\Cache - */ - private $ownerCache; - - /** - * @var \OC\Files\Storage\Storage - */ - private $sharedStorage; - - /** - * @var \OC\Files\Cache\Cache - */ - private $sharedCache; - - protected function setUp() { - parent::setUp(); - - self::loginHelper(self::TEST_FILES_SHARING_API_USER1); - - // prepare user1's dir structure - $textData = "dummy file data\n"; - $this->view->mkdir('container'); - $this->view->mkdir('container/shareddir'); - $this->view->mkdir('container/shareddir/subdir'); - - list($this->ownerStorage, $internalPath) = $this->view->resolvePath(''); - $this->ownerCache = $this->ownerStorage->getCache(); - $this->ownerStorage->getScanner()->scan(''); - - // share "shareddir" with user2 - $fileinfo = $this->view->getFileInfo('container/shareddir'); - \OCP\Share::shareItem('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER, - self::TEST_FILES_SHARING_API_USER2, 31); - - // login as user2 - self::loginHelper(self::TEST_FILES_SHARING_API_USER2); - - // retrieve the shared storage - $secondView = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER2); - list($this->sharedStorage, $internalPath) = $secondView->resolvePath('files/shareddir'); - $this->sharedCache = $this->sharedStorage->getCache(); - } - - protected function tearDown() { - if ($this->sharedCache) { - $this->sharedCache->clear(); - } - - self::loginHelper(self::TEST_FILES_SHARING_API_USER1); - - if ($this->view) { - $fileinfo = $this->view->getFileInfo('container/shareddir'); - \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER, - self::TEST_FILES_SHARING_API_USER2); - - $this->view->deleteAll('container'); - - $this->ownerCache->clear(); - } - - parent::tearDown(); - } - - /** - * Tests that writing a file using the shared storage will propagate the file - * size to the owner's parent folders. - */ - function testFolderSizePropagationToOwnerStorage() { - $initialSizes = self::getOwnerDirSizes('files/container/shareddir'); - - $textData = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - $dataLen = strlen($textData); - $this->sharedCache->put('bar.txt', array('mtime' => 10, 'storage_mtime' => 10, 'size' => $dataLen, 'mimetype' => 'text/plain')); - $this->sharedStorage->file_put_contents('bar.txt', $textData); - $this->sharedCache->put('', array('mtime' => 10, 'storage_mtime' => 10, 'size' => '-1', 'mimetype' => 'httpd/unix-directory')); - - // run the propagation code - $this->sharedStorage->getWatcher()->checkUpdate(''); - $this->sharedStorage->getCache()->correctFolderSize(''); - - // the owner's parent dirs must have increase size - $newSizes = self::getOwnerDirSizes('files/container/shareddir'); - $this->assertEquals($initialSizes[''] + $dataLen, $newSizes['']); - $this->assertEquals($initialSizes['files'] + $dataLen, $newSizes['files']); - $this->assertEquals($initialSizes['files/container'] + $dataLen, $newSizes['files/container']); - $this->assertEquals($initialSizes['files/container/shareddir'] + $dataLen, $newSizes['files/container/shareddir']); - - // no more updates - $result = $this->sharedStorage->getWatcher()->checkUpdate(''); - - $this->assertFalse($result); - } - - /** - * Tests that writing a file using the shared storage will propagate the file - * size to the owner's parent folders. - */ - function testSubFolderSizePropagationToOwnerStorage() { - $initialSizes = self::getOwnerDirSizes('files/container/shareddir/subdir'); - - $textData = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - $dataLen = strlen($textData); - $this->sharedCache->put('subdir/bar.txt', array('mtime' => 10, 'storage_mtime' => 10, 'size' => $dataLen, 'mimetype' => 'text/plain')); - $this->sharedStorage->file_put_contents('subdir/bar.txt', $textData); - $this->sharedCache->put('subdir', array('mtime' => 10, 'storage_mtime' => 10, 'size' => $dataLen, 'mimetype' => 'text/plain')); - - // run the propagation code - $this->sharedStorage->getWatcher()->checkUpdate('subdir'); - $this->sharedStorage->getCache()->correctFolderSize('subdir'); - - // the owner's parent dirs must have increase size - $newSizes = self::getOwnerDirSizes('files/container/shareddir/subdir'); - $this->assertEquals($initialSizes[''] + $dataLen, $newSizes['']); - $this->assertEquals($initialSizes['files'] + $dataLen, $newSizes['files']); - $this->assertEquals($initialSizes['files/container'] + $dataLen, $newSizes['files/container']); - $this->assertEquals($initialSizes['files/container/shareddir'] + $dataLen, $newSizes['files/container/shareddir']); - $this->assertEquals($initialSizes['files/container/shareddir/subdir'] + $dataLen, $newSizes['files/container/shareddir/subdir']); - - // no more updates - $result = $this->sharedStorage->getWatcher()->checkUpdate('subdir'); - - $this->assertFalse($result); - } - - /** - * Returns the sizes of the path and its parent dirs in a hash - * where the key is the path and the value is the size. - * @param string $path - */ - function getOwnerDirSizes($path) { - $result = array(); - - while ($path != '' && $path != '' && $path != '.') { - $cachedData = $this->ownerCache->get($path); - $result[$path] = $cachedData['size']; - $path = dirname($path); - } - $cachedData = $this->ownerCache->get(''); - $result[''] = $cachedData['size']; - return $result; - } -} |