diff options
Diffstat (limited to 'tests/lib/files/storage/wrapper')
-rw-r--r-- | tests/lib/files/storage/wrapper/availability.php | 149 | ||||
-rw-r--r-- | tests/lib/files/storage/wrapper/encryption.php | 925 | ||||
-rw-r--r-- | tests/lib/files/storage/wrapper/jail.php | 51 | ||||
-rw-r--r-- | tests/lib/files/storage/wrapper/permissionsmask.php | 105 | ||||
-rw-r--r-- | tests/lib/files/storage/wrapper/quota.php | 211 | ||||
-rw-r--r-- | tests/lib/files/storage/wrapper/wrapper.php | 34 |
6 files changed, 0 insertions, 1475 deletions
diff --git a/tests/lib/files/storage/wrapper/availability.php b/tests/lib/files/storage/wrapper/availability.php deleted file mode 100644 index 9b394df8ca3..00000000000 --- a/tests/lib/files/storage/wrapper/availability.php +++ /dev/null @@ -1,149 +0,0 @@ -<?php -/** - * @author Robin McCorkell <rmccorkell@karoshi.org.uk> - * - * @copyright Copyright (c) 2015, 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 Test\Files\Storage\Wrapper; - -class Availability extends \Test\TestCase { - protected function getWrapperInstance() { - $storage = $this->getMockBuilder('\OC\Files\Storage\Temporary') - ->disableOriginalConstructor() - ->getMock(); - $wrapper = new \OC\Files\Storage\Wrapper\Availability(['storage' => $storage]); - return [$storage, $wrapper]; - } - - /** - * Storage is available - */ - public function testAvailable() { - list($storage, $wrapper) = $this->getWrapperInstance(); - $storage->expects($this->once()) - ->method('getAvailability') - ->willReturn(['available' => true, 'last_checked' => 0]); - $storage->expects($this->never()) - ->method('test'); - $storage->expects($this->once()) - ->method('mkdir'); - - $wrapper->mkdir('foobar'); - } - - /** - * Storage marked unavailable, TTL not expired - * - * @expectedException \OCP\Files\StorageNotAvailableException - */ - public function testUnavailable() { - list($storage, $wrapper) = $this->getWrapperInstance(); - $storage->expects($this->once()) - ->method('getAvailability') - ->willReturn(['available' => false, 'last_checked' => time()]); - $storage->expects($this->never()) - ->method('test'); - $storage->expects($this->never()) - ->method('mkdir'); - - $wrapper->mkdir('foobar'); - } - - /** - * Storage marked unavailable, TTL expired - */ - public function testUnavailableRecheck() { - list($storage, $wrapper) = $this->getWrapperInstance(); - $storage->expects($this->once()) - ->method('getAvailability') - ->willReturn(['available' => false, 'last_checked' => 0]); - $storage->expects($this->once()) - ->method('test') - ->willReturn(true); - $storage->expects($this->once()) - ->method('setAvailability') - ->with($this->equalTo(true)); - $storage->expects($this->once()) - ->method('mkdir'); - - $wrapper->mkdir('foobar'); - } - - /** - * Storage marked available, but throws StorageNotAvailableException - * - * @expectedException \OCP\Files\StorageNotAvailableException - */ - public function testAvailableThrowStorageNotAvailable() { - list($storage, $wrapper) = $this->getWrapperInstance(); - $storage->expects($this->once()) - ->method('getAvailability') - ->willReturn(['available' => true, 'last_checked' => 0]); - $storage->expects($this->never()) - ->method('test'); - $storage->expects($this->once()) - ->method('mkdir') - ->will($this->throwException(new \OCP\Files\StorageNotAvailableException())); - $storage->expects($this->once()) - ->method('setAvailability') - ->with($this->equalTo(false)); - - $wrapper->mkdir('foobar'); - } - - /** - * Storage available, but call fails - * Method failure does not indicate storage unavailability - */ - public function testAvailableFailure() { - list($storage, $wrapper) = $this->getWrapperInstance(); - $storage->expects($this->once()) - ->method('getAvailability') - ->willReturn(['available' => true, 'last_checked' => 0]); - $storage->expects($this->never()) - ->method('test'); - $storage->expects($this->once()) - ->method('mkdir') - ->willReturn(false); - $storage->expects($this->never()) - ->method('setAvailability'); - - $wrapper->mkdir('foobar'); - } - - /** - * Storage available, but throws exception - * Standard exception does not indicate storage unavailability - * - * @expectedException \Exception - */ - public function testAvailableThrow() { - list($storage, $wrapper) = $this->getWrapperInstance(); - $storage->expects($this->once()) - ->method('getAvailability') - ->willReturn(['available' => true, 'last_checked' => 0]); - $storage->expects($this->never()) - ->method('test'); - $storage->expects($this->once()) - ->method('mkdir') - ->will($this->throwException(new \Exception())); - $storage->expects($this->never()) - ->method('setAvailability'); - - $wrapper->mkdir('foobar'); - } -} diff --git a/tests/lib/files/storage/wrapper/encryption.php b/tests/lib/files/storage/wrapper/encryption.php deleted file mode 100644 index 651299a3eab..00000000000 --- a/tests/lib/files/storage/wrapper/encryption.php +++ /dev/null @@ -1,925 +0,0 @@ -<?php - -namespace Test\Files\Storage\Wrapper; - -use OC\Encryption\Util; -use OC\Files\Storage\Temporary; -use OC\Files\View; -use Test\Files\Storage\Storage; - -class Encryption extends Storage { - - /** - * block size will always be 8192 for a PHP stream - * @see https://bugs.php.net/bug.php?id=21641 - * @var integer - */ - protected $headerSize = 8192; - - /** - * @var Temporary - */ - private $sourceStorage; - - /** - * @var \OC\Files\Storage\Wrapper\Encryption | \PHPUnit_Framework_MockObject_MockObject - */ - protected $instance; - - /** - * @var \OC\Encryption\Keys\Storage | \PHPUnit_Framework_MockObject_MockObject - */ - private $keyStore; - - /** - * @var \OC\Encryption\Util | \PHPUnit_Framework_MockObject_MockObject - */ - private $util; - - /** - * @var \OC\Encryption\Manager | \PHPUnit_Framework_MockObject_MockObject - */ - private $encryptionManager; - - /** - * @var \OCP\Encryption\IEncryptionModule | \PHPUnit_Framework_MockObject_MockObject - */ - private $encryptionModule; - - /** - * @var \OC\Encryption\Update | \PHPUnit_Framework_MockObject_MockObject - */ - private $update; - - /** - * @var \OC\Files\Cache\Cache | \PHPUnit_Framework_MockObject_MockObject - */ - private $cache; - - /** - * @var \OC\Log | \PHPUnit_Framework_MockObject_MockObject - */ - private $logger; - - /** - * @var \OC\Encryption\File | \PHPUnit_Framework_MockObject_MockObject - */ - private $file; - - - /** - * @var \OC\Files\Mount\MountPoint | \PHPUnit_Framework_MockObject_MockObject - */ - private $mount; - - /** - * @var \OC\Files\Mount\Manager | \PHPUnit_Framework_MockObject_MockObject - */ - private $mountManager; - - /** - * @var \OC\Group\Manager | \PHPUnit_Framework_MockObject_MockObject - */ - private $groupManager; - - /** - * @var \OCP\IConfig | \PHPUnit_Framework_MockObject_MockObject - */ - private $config; - - /** @var \OC\Memcache\ArrayCache | \PHPUnit_Framework_MockObject_MockObject */ - private $arrayCache; - - - /** @var integer dummy unencrypted size */ - private $dummySize = -1; - - protected function setUp() { - - parent::setUp(); - - $mockModule = $this->buildMockModule(); - $this->encryptionManager = $this->getMockBuilder('\OC\Encryption\Manager') - ->disableOriginalConstructor() - ->setMethods(['getEncryptionModule', 'isEnabled']) - ->getMock(); - $this->encryptionManager->expects($this->any()) - ->method('getEncryptionModule') - ->willReturn($mockModule); - - $this->arrayCache = $this->getMock('OC\Memcache\ArrayCache'); - $this->config = $this->getMockBuilder('\OCP\IConfig') - ->disableOriginalConstructor() - ->getMock(); - $this->groupManager = $this->getMockBuilder('\OC\Group\Manager') - ->disableOriginalConstructor() - ->getMock(); - - $this->util = $this->getMock( - '\OC\Encryption\Util', - ['getUidAndFilename', 'isFile', 'isExcluded'], - [new View(), new \OC\User\Manager(), $this->groupManager, $this->config, $this->arrayCache]); - $this->util->expects($this->any()) - ->method('getUidAndFilename') - ->willReturnCallback(function ($path) { - return ['user1', $path]; - }); - - $this->file = $this->getMockBuilder('\OC\Encryption\File') - ->disableOriginalConstructor() - ->setMethods(['getAccessList']) - ->getMock(); - $this->file->expects($this->any())->method('getAccessList')->willReturn([]); - - $this->logger = $this->getMock('\OC\Log'); - - $this->sourceStorage = new Temporary(array()); - - $this->keyStore = $this->getMockBuilder('\OC\Encryption\Keys\Storage') - ->disableOriginalConstructor()->getMock(); - - $this->update = $this->getMockBuilder('\OC\Encryption\Update') - ->disableOriginalConstructor()->getMock(); - - $this->mount = $this->getMockBuilder('\OC\Files\Mount\MountPoint') - ->disableOriginalConstructor() - ->setMethods(['getOption']) - ->getMock(); - $this->mount->expects($this->any())->method('getOption')->willReturnCallback(function ($option, $default) { - if ($option === 'encrypt' && $default === true) { - global $mockedMountPointEncryptionEnabled; - if ($mockedMountPointEncryptionEnabled !== null) { - return $mockedMountPointEncryptionEnabled; - } - } - return true; - }); - - $this->cache = $this->getMockBuilder('\OC\Files\Cache\Cache') - ->disableOriginalConstructor()->getMock(); - $this->cache->expects($this->any()) - ->method('get') - ->willReturnCallback(function($path) {return ['encrypted' => false, 'path' => $path];}); - - $this->mountManager = $this->getMockBuilder('\OC\Files\Mount\Manager') - ->disableOriginalConstructor()->getMock(); - - $this->instance = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Encryption') - ->setConstructorArgs( - [ - [ - 'storage' => $this->sourceStorage, - 'root' => 'foo', - 'mountPoint' => '/', - 'mount' => $this->mount - ], - $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache - ] - ) - ->setMethods(['getMetaData', 'getCache', 'getEncryptionModule']) - ->getMock(); - - $this->instance->expects($this->any()) - ->method('getMetaData') - ->willReturnCallback(function ($path) { - return ['encrypted' => true, 'size' => $this->dummySize, 'path' => $path]; - }); - - $this->instance->expects($this->any()) - ->method('getCache') - ->willReturn($this->cache); - - $this->instance->expects($this->any()) - ->method('getEncryptionModule') - ->willReturn($mockModule); - } - - /** - * @return \PHPUnit_Framework_MockObject_MockObject - */ - protected function buildMockModule() { - $this->encryptionModule = $this->getMockBuilder('\OCP\Encryption\IEncryptionModule') - ->disableOriginalConstructor() - ->setMethods(['getId', 'getDisplayName', 'begin', 'end', 'encrypt', 'decrypt', 'update', 'shouldEncrypt', 'getUnencryptedBlockSize', 'isReadable', 'encryptAll', 'prepareDecryptAll']) - ->getMock(); - - $this->encryptionModule->expects($this->any())->method('getId')->willReturn('UNIT_TEST_MODULE'); - $this->encryptionModule->expects($this->any())->method('getDisplayName')->willReturn('Unit test module'); - $this->encryptionModule->expects($this->any())->method('begin')->willReturn([]); - $this->encryptionModule->expects($this->any())->method('end')->willReturn(''); - $this->encryptionModule->expects($this->any())->method('encrypt')->willReturnArgument(0); - $this->encryptionModule->expects($this->any())->method('decrypt')->willReturnArgument(0); - $this->encryptionModule->expects($this->any())->method('update')->willReturn(true); - $this->encryptionModule->expects($this->any())->method('shouldEncrypt')->willReturn(true); - $this->encryptionModule->expects($this->any())->method('getUnencryptedBlockSize')->willReturn(8192); - $this->encryptionModule->expects($this->any())->method('isReadable')->willReturn(true); - return $this->encryptionModule; - } - - /** - * @dataProvider dataTestGetMetaData - * - * @param string $path - * @param array $metaData - * @param bool $encrypted - * @param bool $unencryptedSizeSet - * @param int $storedUnencryptedSize - * @param array $expected - */ - public function testGetMetaData($path, $metaData, $encrypted, $unencryptedSizeSet, $storedUnencryptedSize, $expected) { - - $sourceStorage = $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor()->getMock(); - - $cache = $this->getMockBuilder('\OC\Files\Cache\Cache') - ->disableOriginalConstructor()->getMock(); - $cache->expects($this->any()) - ->method('get') - ->willReturnCallback( - function($path) use ($encrypted) { - return ['encrypted' => $encrypted, 'path' => $path, 'size' => 0, 'fileid' => 1]; - } - ); - - $this->instance = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Encryption') - ->setConstructorArgs( - [ - [ - 'storage' => $sourceStorage, - 'root' => 'foo', - 'mountPoint' => '/', - 'mount' => $this->mount - ], - $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache - ] - ) - ->setMethods(['getCache', 'verifyUnencryptedSize']) - ->getMock(); - - if($unencryptedSizeSet) { - $this->invokePrivate($this->instance, 'unencryptedSize', [[$path => $storedUnencryptedSize]]); - } - - $fileEntry = $this->getMockBuilder('\OC\Files\Cache\Cache') - ->disableOriginalConstructor()->getMock(); - $sourceStorage->expects($this->once())->method('getMetaData')->with($path) - ->willReturn($metaData); - $sourceStorage->expects($this->any()) - ->method('getCache') - ->with($path) - ->willReturn($fileEntry); - $fileEntry->expects($this->any()) - ->method('get') - ->with($metaData['fileid']); - - $this->instance->expects($this->any())->method('getCache')->willReturn($cache); - $this->instance->expects($this->any())->method('verifyUnencryptedSize') - ->with($path, 0)->willReturn($expected['size']); - - $result = $this->instance->getMetaData($path); - if(isset($expected['encrypted'])) { - $this->assertSame($expected['encrypted'], (bool)$result['encrypted']); - - if(isset($expected['encryptedVersion'])) { - $this->assertSame($expected['encryptedVersion'], $result['encryptedVersion']); - } - } - $this->assertSame($expected['size'], $result['size']); - } - - public function dataTestGetMetaData() { - return [ - ['/test.txt', ['size' => 42, 'encrypted' => 2, 'encryptedVersion' => 2, 'fileid' => 1], true, true, 12, ['size' => 12, 'encrypted' => true, 'encryptedVersion' => 2]], - ['/test.txt', null, true, true, 12, null], - ['/test.txt', ['size' => 42, 'encrypted' => 0, 'fileid' => 1], false, false, 12, ['size' => 42, 'encrypted' => false]], - ['/test.txt', ['size' => 42, 'encrypted' => false, 'fileid' => 1], true, false, 12, ['size' => 12, 'encrypted' => true]] - ]; - } - - public function testFilesize() { - $cache = $this->getMockBuilder('\OC\Files\Cache\Cache') - ->disableOriginalConstructor()->getMock(); - $cache->expects($this->any()) - ->method('get') - ->willReturn(['encrypted' => true, 'path' => '/test.txt', 'size' => 0, 'fileid' => 1]); - - $this->instance = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Encryption') - ->setConstructorArgs( - [ - [ - 'storage' => $this->sourceStorage, - 'root' => 'foo', - 'mountPoint' => '/', - 'mount' => $this->mount - ], - $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache - ] - ) - ->setMethods(['getCache', 'verifyUnencryptedSize']) - ->getMock(); - - $this->instance->expects($this->any())->method('getCache')->willReturn($cache); - $this->instance->expects($this->any())->method('verifyUnencryptedSize') - ->willReturn(42); - - - $this->assertSame(42, - $this->instance->filesize('/test.txt') - ); - - } - - /** - * @dataProvider dataTestVerifyUnencryptedSize - * - * @param int $encryptedSize - * @param int $unencryptedSize - * @param bool $failure - * @param int $expected - */ - public function testVerifyUnencryptedSize($encryptedSize, $unencryptedSize, $failure, $expected) { - $sourceStorage = $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor()->getMock(); - - $this->instance = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Encryption') - ->setConstructorArgs( - [ - [ - 'storage' => $sourceStorage, - 'root' => 'foo', - 'mountPoint' => '/', - 'mount' => $this->mount - ], - $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache - ] - ) - ->setMethods(['fixUnencryptedSize']) - ->getMock(); - - $sourceStorage->expects($this->once())->method('filesize')->willReturn($encryptedSize); - - $this->instance->expects($this->any())->method('fixUnencryptedSize') - ->with('/test.txt', $encryptedSize, $unencryptedSize) - ->willReturnCallback( - function() use ($failure, $expected) { - if ($failure) { - throw new \Exception(); - } else { - return $expected; - } - } - ); - - $this->assertSame( - $expected, - $this->invokePrivate($this->instance, 'verifyUnencryptedSize', ['/test.txt', $unencryptedSize]) - ); - } - - public function dataTestVerifyUnencryptedSize() { - return [ - [120, 80, false, 80], - [120, 120, false, 80], - [120, -1, false, 80], - [120, -1, true, -1] - ]; - } - - /** - * @dataProvider dataTestCopyAndRename - * - * @param string $source - * @param string $target - * @param $encryptionEnabled - * @param boolean $renameKeysReturn - */ - public function testRename($source, - $target, - $encryptionEnabled, - $renameKeysReturn) { - if ($encryptionEnabled) { - $this->keyStore - ->expects($this->once()) - ->method('renameKeys') - ->willReturn($renameKeysReturn); - } else { - $this->keyStore - ->expects($this->never())->method('renameKeys'); - } - $this->util->expects($this->any()) - ->method('isFile')->willReturn(true); - $this->encryptionManager->expects($this->once()) - ->method('isEnabled')->willReturn($encryptionEnabled); - - $this->instance->mkdir($source); - $this->instance->mkdir(dirname($target)); - $this->instance->rename($source, $target); - } - - public function testCopyEncryption() { - $this->instance->file_put_contents('source.txt', 'bar'); - $this->instance->copy('source.txt', 'target.txt'); - $this->assertSame('bar', $this->instance->file_get_contents('target.txt')); - $targetMeta = $this->instance->getMetaData('target.txt'); - $sourceMeta = $this->instance->getMetaData('source.txt'); - $this->assertSame($sourceMeta['encrypted'], $targetMeta['encrypted']); - $this->assertSame($sourceMeta['size'], $targetMeta['size']); - } - - /** - * data provider for testCopyTesting() and dataTestCopyAndRename() - * - * @return array - */ - public function dataTestCopyAndRename() { - return array( - array('source', 'target', true, false, false), - array('source', 'target', true, true, false), - array('source', '/subFolder/target', true, false, false), - array('source', '/subFolder/target', true, true, true), - array('source', '/subFolder/target', false, true, false), - ); - } - - public function testIsLocal() { - $this->encryptionManager->expects($this->once()) - ->method('isEnabled')->willReturn(true); - $this->assertFalse($this->instance->isLocal()); - } - - /** - * @dataProvider dataTestRmdir - * - * @param string $path - * @param boolean $rmdirResult - * @param boolean $isExcluded - * @param boolean $encryptionEnabled - */ - public function testRmdir($path, $rmdirResult, $isExcluded, $encryptionEnabled) { - $sourceStorage = $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor()->getMock(); - - $util = $this->getMockBuilder('\OC\Encryption\Util')->disableOriginalConstructor()->getMock(); - - $sourceStorage->expects($this->once())->method('rmdir')->willReturn($rmdirResult); - $util->expects($this->any())->method('isExcluded')-> willReturn($isExcluded); - $this->encryptionManager->expects($this->any())->method('isEnabled')->willReturn($encryptionEnabled); - - $encryptionStorage = new \OC\Files\Storage\Wrapper\Encryption( - [ - 'storage' => $sourceStorage, - 'root' => 'foo', - 'mountPoint' => '/mountPoint', - 'mount' => $this->mount - ], - $this->encryptionManager, $util, $this->logger, $this->file, null, $this->keyStore, $this->update - ); - - - if ($rmdirResult === true && $isExcluded === false && $encryptionEnabled === true) { - $this->keyStore->expects($this->once())->method('deleteAllFileKeys')->with('/mountPoint' . $path); - } else { - $this->keyStore->expects($this->never())->method('deleteAllFileKeys'); - } - - $encryptionStorage->rmdir($path); - } - - public function dataTestRmdir() { - return array( - array('/file.txt', true, true, true), - array('/file.txt', false, true, true), - array('/file.txt', true, false, true), - array('/file.txt', false, false, true), - array('/file.txt', true, true, false), - array('/file.txt', false, true, false), - array('/file.txt', true, false, false), - array('/file.txt', false, false, false), - ); - } - - /** - * @dataProvider dataTestCopyKeys - * - * @param boolean $excluded - * @param boolean $expected - */ - public function testCopyKeys($excluded, $expected) { - $this->util->expects($this->once()) - ->method('isExcluded') - ->willReturn($excluded); - - if ($excluded) { - $this->keyStore->expects($this->never())->method('copyKeys'); - } else { - $this->keyStore->expects($this->once())->method('copyKeys')->willReturn(true); - } - - $this->assertSame($expected, - self::invokePrivate($this->instance, 'copyKeys', ['/source', '/target']) - ); - } - - public function dataTestCopyKeys() { - return array( - array(true, false), - array(false, true), - ); - } - - /** - * @dataProvider dataTestGetHeader - * - * @param string $path - * @param bool $strippedPathExists - * @param string $strippedPath - */ - public function testGetHeader($path, $strippedPathExists, $strippedPath) { - - $sourceStorage = $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor()->getMock(); - - $util = $this->getMockBuilder('\OC\Encryption\Util') - ->setConstructorArgs( - [ - new View(), - new \OC\User\Manager(), - $this->groupManager, - $this->config, - $this->arrayCache - ] - )->getMock(); - - $instance = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Encryption') - ->setConstructorArgs( - [ - [ - 'storage' => $sourceStorage, - 'root' => 'foo', - 'mountPoint' => '/', - 'mount' => $this->mount - ], - $this->encryptionManager, $util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache - ] - ) - ->setMethods(['readFirstBlock', 'parseRawHeader']) - ->getMock(); - - $instance->expects($this->once())->method(('parseRawHeader')) - ->willReturn([Util::HEADER_ENCRYPTION_MODULE_KEY => 'OC_DEFAULT_MODULE']); - - if ($strippedPathExists) { - $instance->expects($this->once())->method('readFirstBlock') - ->with($strippedPath)->willReturn(''); - } else { - $instance->expects($this->once())->method('readFirstBlock') - ->with($path)->willReturn(''); - } - - $util->expects($this->once())->method('stripPartialFileExtension') - ->with($path)->willReturn($strippedPath); - $sourceStorage->expects($this->once()) - ->method('file_exists') - ->with($strippedPath) - ->willReturn($strippedPathExists); - - $this->invokePrivate($instance, 'getHeader', [$path]); - } - - public function dataTestGetHeader() { - return array( - array('/foo/bar.txt', false, '/foo/bar.txt'), - array('/foo/bar.txt.part', false, '/foo/bar.txt'), - array('/foo/bar.txt.ocTransferId7437493.part', false, '/foo/bar.txt'), - array('/foo/bar.txt.part', true, '/foo/bar.txt'), - array('/foo/bar.txt.ocTransferId7437493.part', true, '/foo/bar.txt'), - ); - } - - /** - * test if getHeader adds the default module correctly to the header for - * legacy files - * - * @dataProvider dataTestGetHeaderAddLegacyModule - */ - public function testGetHeaderAddLegacyModule($header, $isEncrypted, $expected) { - - $sourceStorage = $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor()->getMock(); - - $util = $this->getMockBuilder('\OC\Encryption\Util') - ->setConstructorArgs([new View(), new \OC\User\Manager(), $this->groupManager, $this->config, $this->arrayCache]) - ->getMock(); - - $cache = $this->getMockBuilder('\OC\Files\Cache\Cache') - ->disableOriginalConstructor()->getMock(); - $cache->expects($this->any()) - ->method('get') - ->willReturnCallback(function($path) use ($isEncrypted) {return ['encrypted' => $isEncrypted, 'path' => $path];}); - - $instance = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Encryption') - ->setConstructorArgs( - [ - [ - 'storage' => $sourceStorage, - 'root' => 'foo', - 'mountPoint' => '/', - 'mount' => $this->mount - ], - $this->encryptionManager, $util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache - ] - ) - ->setMethods(['readFirstBlock', 'parseRawHeader', 'getCache']) - ->getMock(); - - $instance->expects($this->once())->method(('parseRawHeader'))->willReturn($header); - $instance->expects($this->any())->method('getCache')->willReturn($cache); - - $result = $this->invokePrivate($instance, 'getHeader', ['test.txt']); - $this->assertSameSize($expected, $result); - foreach ($result as $key => $value) { - $this->assertArrayHasKey($key, $expected); - $this->assertSame($expected[$key], $value); - } - } - - public function dataTestGetHeaderAddLegacyModule() { - return [ - [['cipher' => 'AES-128'], true, ['cipher' => 'AES-128', Util::HEADER_ENCRYPTION_MODULE_KEY => 'OC_DEFAULT_MODULE']], - [[], true, [Util::HEADER_ENCRYPTION_MODULE_KEY => 'OC_DEFAULT_MODULE']], - [[], false, []], - ]; - } - - /** - * @dataProvider dataTestParseRawHeader - */ - public function testParseRawHeader($rawHeader, $expected) { - $instance = new \OC\Files\Storage\Wrapper\Encryption( - [ - 'storage' => $this->sourceStorage, - 'root' => 'foo', - 'mountPoint' => '/', - 'mount' => $this->mount - ], - $this->encryptionManager, $this->util, $this->logger, $this->file, null, $this->keyStore, $this->update, $this->mountManager, $this->arrayCache - - ); - - $result = $this->invokePrivate($instance, 'parseRawHeader', [$rawHeader]); - $this->assertSameSize($expected, $result); - foreach ($result as $key => $value) { - $this->assertArrayHasKey($key, $expected); - $this->assertSame($expected[$key], $value); - } - } - - public function dataTestParseRawHeader() { - return [ - [str_pad('HBEGIN:oc_encryption_module:0:HEND', $this->headerSize, '-', STR_PAD_RIGHT) - , [Util::HEADER_ENCRYPTION_MODULE_KEY => '0']], - [str_pad('HBEGIN:oc_encryption_module:0:custom_header:foo:HEND', $this->headerSize, '-', STR_PAD_RIGHT) - , ['custom_header' => 'foo', Util::HEADER_ENCRYPTION_MODULE_KEY => '0']], - [str_pad('HelloWorld', $this->headerSize, '-', STR_PAD_RIGHT), []], - ['', []], - [str_pad('HBEGIN:oc_encryption_module:0', $this->headerSize, '-', STR_PAD_RIGHT) - , []], - [str_pad('oc_encryption_module:0:HEND', $this->headerSize, '-', STR_PAD_RIGHT) - , []], - ]; - } - - public function dataCopyBetweenStorage() { - return [ - [true, true, true], - [true, false, false], - [false, true, false], - [false, false, false], - ]; - } - - public function testCopyBetweenStorageMinimumEncryptedVersion() { - $storage2 = $this->getMockBuilder('OCP\Files\Storage') - ->disableOriginalConstructor() - ->getMock(); - - $sourceInternalPath = $targetInternalPath = 'file.txt'; - $preserveMtime = $isRename = false; - - $storage2->expects($this->any()) - ->method('fopen') - ->willReturnCallback(function($path, $mode) { - $temp = \OC::$server->getTempManager(); - return fopen($temp->getTemporaryFile(), $mode); - }); - $cache = $this->getMock('\OCP\Files\Cache\ICache'); - $cache->expects($this->once()) - ->method('get') - ->with($sourceInternalPath) - ->willReturn(['encryptedVersion' => 0]); - $storage2->expects($this->once()) - ->method('getCache') - ->willReturn($cache); - $this->encryptionManager->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); - global $mockedMountPointEncryptionEnabled; - $mockedMountPointEncryptionEnabled = true; - - $expectedCachePut = [ - 'encrypted' => true, - ]; - $expectedCachePut['encryptedVersion'] = 1; - - $this->cache->expects($this->once()) - ->method('put') - ->with($sourceInternalPath, $expectedCachePut); - - $this->invokePrivate($this->instance, 'copyBetweenStorage', [$storage2, $sourceInternalPath, $targetInternalPath, $preserveMtime, $isRename]); - - $this->assertFalse(false); - } - - /** - * @dataProvider dataCopyBetweenStorage - * - * @param bool $encryptionEnabled - * @param bool $mountPointEncryptionEnabled - * @param bool $expectedEncrypted - */ - public function testCopyBetweenStorage($encryptionEnabled, $mountPointEncryptionEnabled, $expectedEncrypted) { - $storage2 = $this->getMockBuilder('OCP\Files\Storage') - ->disableOriginalConstructor() - ->getMock(); - - $sourceInternalPath = $targetInternalPath = 'file.txt'; - $preserveMtime = $isRename = false; - - $storage2->expects($this->any()) - ->method('fopen') - ->willReturnCallback(function($path, $mode) { - $temp = \OC::$server->getTempManager(); - return fopen($temp->getTemporaryFile(), $mode); - }); - if($expectedEncrypted) { - $cache = $this->getMock('\OCP\Files\Cache\ICache'); - $cache->expects($this->once()) - ->method('get') - ->with($sourceInternalPath) - ->willReturn(['encryptedVersion' => 12345]); - $storage2->expects($this->once()) - ->method('getCache') - ->willReturn($cache); - } - $this->encryptionManager->expects($this->any()) - ->method('isEnabled') - ->willReturn($encryptionEnabled); - // FIXME can not overwrite the return after definition -// $this->mount->expects($this->at(0)) -// ->method('getOption') -// ->with('encrypt', true) -// ->willReturn($mountPointEncryptionEnabled); - global $mockedMountPointEncryptionEnabled; - $mockedMountPointEncryptionEnabled = $mountPointEncryptionEnabled; - - $expectedCachePut = [ - 'encrypted' => $expectedEncrypted, - ]; - if($expectedEncrypted === true) { - $expectedCachePut['encryptedVersion'] = 12345; - } - - $this->arrayCache->expects($this->never())->method('set'); - - $this->cache->expects($this->once()) - ->method('put') - ->with($sourceInternalPath, $expectedCachePut); - - $this->invokePrivate($this->instance, 'copyBetweenStorage', [$storage2, $sourceInternalPath, $targetInternalPath, $preserveMtime, $isRename]); - - $this->assertFalse(false); - } - - /** - * @dataProvider dataTestCopyBetweenStorageVersions - * - * @param string $sourceInternalPath - * @param string $targetInternalPath - * @param bool $copyResult - * @param bool $encrypted - */ - public function testCopyBetweenStorageVersions($sourceInternalPath, $targetInternalPath, $copyResult, $encrypted) { - - $sourceStorage = $this->getMockBuilder('OCP\Files\Storage') - ->disableOriginalConstructor() - ->getMock(); - - $targetStorage = $this->getMockBuilder('OCP\Files\Storage') - ->disableOriginalConstructor() - ->getMock(); - - $cache = $this->getMockBuilder('\OC\Files\Cache\Cache') - ->disableOriginalConstructor()->getMock(); - - $mountPoint = '/mountPoint'; - - /** @var \OC\Files\Storage\Wrapper\Encryption |\PHPUnit_Framework_MockObject_MockObject $instance */ - $instance = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Encryption') - ->setConstructorArgs( - [ - [ - 'storage' => $targetStorage, - 'root' => 'foo', - 'mountPoint' => $mountPoint, - 'mount' => $this->mount - ], - $this->encryptionManager, - $this->util, - $this->logger, - $this->file, - null, - $this->keyStore, - $this->update, - $this->mountManager, - $this->arrayCache - ] - ) - ->setMethods(['updateUnencryptedSize', 'getCache']) - ->getMock(); - - $targetStorage->expects($this->once())->method('copyFromStorage') - ->with($sourceStorage, $sourceInternalPath, $targetInternalPath) - ->willReturn($copyResult); - - $instance->expects($this->any())->method('getCache') - ->willReturn($cache); - - $this->arrayCache->expects($this->once())->method('set') - ->with('encryption_copy_version_' . $sourceInternalPath, true); - - if ($copyResult) { - $cache->expects($this->once())->method('get') - ->with($sourceInternalPath) - ->willReturn(['encrypted' => $encrypted, 'size' => 42]); - if ($encrypted) { - $instance->expects($this->once())->method('updateUnencryptedSize') - ->with($mountPoint . $targetInternalPath, 42); - } else { - $instance->expects($this->never())->method('updateUnencryptedSize'); - } - } else { - $instance->expects($this->never())->method('updateUnencryptedSize'); - } - - $result = $this->invokePrivate( - $instance, - 'copyBetweenStorage', - [ - $sourceStorage, - $sourceInternalPath, - $targetInternalPath, - false, - false - ] - ); - - $this->assertSame($copyResult, $result); - } - - public function dataTestCopyBetweenStorageVersions() { - return [ - ['/files/foo.txt', '/files_versions/foo.txt.768743', true, true], - ['/files/foo.txt', '/files_versions/foo.txt.768743', true, false], - ['/files/foo.txt', '/files_versions/foo.txt.768743', false, true], - ['/files/foo.txt', '/files_versions/foo.txt.768743', false, false], - ['/files_versions/foo.txt.6487634', '/files/foo.txt', true, true], - ['/files_versions/foo.txt.6487634', '/files/foo.txt', true, false], - ['/files_versions/foo.txt.6487634', '/files/foo.txt', false, true], - ['/files_versions/foo.txt.6487634', '/files/foo.txt', false, false], - - ]; - } - - /** - * @dataProvider dataTestIsVersion - * @param string $path - * @param bool $expected - */ - public function testIsVersion($path, $expected) { - $this->assertSame($expected, - $this->invokePrivate($this->instance, 'isVersion', [$path]) - ); - } - - public function dataTestIsVersion() { - return [ - ['files_versions/foo', true], - ['/files_versions/foo', true], - ['//files_versions/foo', true], - ['files/versions/foo', false], - ['files/files_versions/foo', false], - ['files_versions_test/foo', false], - ]; - } - -} diff --git a/tests/lib/files/storage/wrapper/jail.php b/tests/lib/files/storage/wrapper/jail.php deleted file mode 100644 index 9b16bc5a321..00000000000 --- a/tests/lib/files/storage/wrapper/jail.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -namespace Test\Files\Storage\Wrapper; - -class Jail extends \Test\Files\Storage\Storage { - - /** - * @var \OC\Files\Storage\Temporary - */ - private $sourceStorage; - - public function setUp() { - parent::setUp(); - $this->sourceStorage = new \OC\Files\Storage\Temporary(array()); - $this->sourceStorage->mkdir('foo'); - $this->instance = new \OC\Files\Storage\Wrapper\Jail(array( - 'storage' => $this->sourceStorage, - 'root' => 'foo' - )); - } - - public function tearDown() { - // test that nothing outside our jail is touched - $contents = array(); - $dh = $this->sourceStorage->opendir(''); - while ($file = readdir($dh)) { - if (!\OC\Files\Filesystem::isIgnoredDir($file)) { - $contents[] = $file; - } - } - $this->assertEquals(array('foo'), $contents); - $this->sourceStorage->cleanUp(); - parent::tearDown(); - } - - public function testMkDirRooted() { - $this->instance->mkdir('bar'); - $this->assertTrue($this->sourceStorage->is_dir('foo/bar')); - } - - public function testFilePutContentsRooted() { - $this->instance->file_put_contents('bar', 'asd'); - $this->assertEquals('asd', $this->sourceStorage->file_get_contents('foo/bar')); - } -} diff --git a/tests/lib/files/storage/wrapper/permissionsmask.php b/tests/lib/files/storage/wrapper/permissionsmask.php deleted file mode 100644 index 7e8c387677c..00000000000 --- a/tests/lib/files/storage/wrapper/permissionsmask.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -namespace Test\Files\Storage\Wrapper; - -use OCP\Constants; - -class PermissionsMask extends \Test\Files\Storage\Storage { - - /** - * @var \OC\Files\Storage\Temporary - */ - private $sourceStorage; - - public function setUp() { - parent::setUp(); - $this->sourceStorage = new \OC\Files\Storage\Temporary(array()); - $this->instance = $this->getMaskedStorage(Constants::PERMISSION_ALL); - } - - public function tearDown() { - $this->sourceStorage->cleanUp(); - parent::tearDown(); - } - - protected function getMaskedStorage($mask) { - return new \OC\Files\Storage\Wrapper\PermissionsMask(array( - 'storage' => $this->sourceStorage, - 'mask' => $mask - )); - } - - public function testMkdirNoCreate() { - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE); - $this->assertFalse($storage->mkdir('foo')); - $this->assertFalse($storage->file_exists('foo')); - } - - public function testRmdirNoDelete() { - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_DELETE); - $this->assertTrue($storage->mkdir('foo')); - $this->assertTrue($storage->file_exists('foo')); - $this->assertFalse($storage->rmdir('foo')); - $this->assertTrue($storage->file_exists('foo')); - } - - public function testTouchNewFileNoCreate() { - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE); - $this->assertFalse($storage->touch('foo')); - $this->assertFalse($storage->file_exists('foo')); - } - - public function testTouchNewFileNoUpdate() { - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE); - $this->assertTrue($storage->touch('foo')); - $this->assertTrue($storage->file_exists('foo')); - } - - public function testTouchExistingFileNoUpdate() { - $this->sourceStorage->touch('foo'); - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE); - $this->assertFalse($storage->touch('foo')); - } - - public function testUnlinkNoDelete() { - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_DELETE); - $this->assertTrue($storage->touch('foo')); - $this->assertTrue($storage->file_exists('foo')); - $this->assertFalse($storage->unlink('foo')); - $this->assertTrue($storage->file_exists('foo')); - } - - public function testPutContentsNewFileNoUpdate() { - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE); - $this->assertTrue($storage->file_put_contents('foo', 'bar')); - $this->assertEquals('bar', $storage->file_get_contents('foo')); - } - - public function testPutContentsNewFileNoCreate() { - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE); - $this->assertFalse($storage->file_put_contents('foo', 'bar')); - } - - public function testPutContentsExistingFileNoUpdate() { - $this->sourceStorage->touch('foo'); - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE); - $this->assertFalse($storage->file_put_contents('foo', 'bar')); - } - - public function testFopenExistingFileNoUpdate() { - $this->sourceStorage->touch('foo'); - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE); - $this->assertFalse($storage->fopen('foo', 'w')); - } - - public function testFopenNewFileNoCreate() { - $storage = $this->getMaskedStorage(Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE); - $this->assertFalse($storage->fopen('foo', 'w')); - } -} diff --git a/tests/lib/files/storage/wrapper/quota.php b/tests/lib/files/storage/wrapper/quota.php deleted file mode 100644 index d087a3eef33..00000000000 --- a/tests/lib/files/storage/wrapper/quota.php +++ /dev/null @@ -1,211 +0,0 @@ -<?php -/** - * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -namespace Test\Files\Storage\Wrapper; - -//ensure the constants are loaded -use OC\Files\Cache\CacheEntry; - -\OC::$loader->load('\OC\Files\Filesystem'); - -/** - * Class Quota - * - * @group DB - * - * @package Test\Files\Storage\Wrapper - */ -class Quota extends \Test\Files\Storage\Storage { - /** - * @var string tmpDir - */ - private $tmpDir; - - protected function setUp() { - parent::setUp(); - - $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); - $storage = new \OC\Files\Storage\Local(array('datadir' => $this->tmpDir)); - $this->instance = new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => 10000000)); - } - - protected function tearDown() { - \OC_Helper::rmdirr($this->tmpDir); - parent::tearDown(); - } - - /** - * @param integer $limit - */ - protected function getLimitedStorage($limit) { - $storage = new \OC\Files\Storage\Local(array('datadir' => $this->tmpDir)); - $storage->mkdir('files'); - $storage->getScanner()->scan(''); - return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $limit)); - } - - public function testFilePutContentsNotEnoughSpace() { - $instance = $this->getLimitedStorage(3); - $this->assertFalse($instance->file_put_contents('files/foo', 'foobar')); - } - - public function testCopyNotEnoughSpace() { - $instance = $this->getLimitedStorage(9); - $this->assertEquals(6, $instance->file_put_contents('files/foo', 'foobar')); - $instance->getScanner()->scan(''); - $this->assertFalse($instance->copy('files/foo', 'files/bar')); - } - - public function testFreeSpace() { - $instance = $this->getLimitedStorage(9); - $this->assertEquals(9, $instance->free_space('')); - } - - public function testFreeSpaceWithUsedSpace() { - $instance = $this->getLimitedStorage(9); - $instance->getCache()->put( - '', array('size' => 3) - ); - $this->assertEquals(6, $instance->free_space('')); - } - - public function testFreeSpaceWithUnknownDiskSpace() { - $storage = $this->getMock( - '\OC\Files\Storage\Local', - array('free_space'), - array(array('datadir' => $this->tmpDir)) - ); - $storage->expects($this->any()) - ->method('free_space') - ->will($this->returnValue(-2)); - $storage->getScanner()->scan(''); - - $instance = new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => 9)); - $instance->getCache()->put( - '', array('size' => 3) - ); - $this->assertEquals(6, $instance->free_space('')); - } - - public function testFreeSpaceWithUsedSpaceAndEncryption() { - $instance = $this->getLimitedStorage(9); - $instance->getCache()->put( - '', array('size' => 7) - ); - $this->assertEquals(2, $instance->free_space('')); - } - - public function testFWriteNotEnoughSpace() { - $instance = $this->getLimitedStorage(9); - $stream = $instance->fopen('files/foo', 'w+'); - $this->assertEquals(6, fwrite($stream, 'foobar')); - $this->assertEquals(3, fwrite($stream, 'qwerty')); - fclose($stream); - $this->assertEquals('foobarqwe', $instance->file_get_contents('files/foo')); - } - - public function testStreamCopyWithEnoughSpace() { - $instance = $this->getLimitedStorage(16); - $inputStream = fopen('data://text/plain,foobarqwerty', 'r'); - $outputStream = $instance->fopen('files/foo', 'w+'); - list($count, $result) = \OC_Helper::streamCopy($inputStream, $outputStream); - $this->assertEquals(12, $count); - $this->assertTrue($result); - fclose($inputStream); - fclose($outputStream); - } - - public function testStreamCopyNotEnoughSpace() { - $instance = $this->getLimitedStorage(9); - $inputStream = fopen('data://text/plain,foobarqwerty', 'r'); - $outputStream = $instance->fopen('files/foo', 'w+'); - list($count, $result) = \OC_Helper::streamCopy($inputStream, $outputStream); - $this->assertEquals(9, $count); - $this->assertFalse($result); - fclose($inputStream); - fclose($outputStream); - } - - public function testReturnFalseWhenFopenFailed() { - $failStorage = $this->getMock( - '\OC\Files\Storage\Local', - array('fopen'), - array(array('datadir' => $this->tmpDir))); - $failStorage->expects($this->any()) - ->method('fopen') - ->will($this->returnValue(false)); - - $instance = new \OC\Files\Storage\Wrapper\Quota(array('storage' => $failStorage, 'quota' => 1000)); - - $this->assertFalse($instance->fopen('failedfopen', 'r')); - } - - public function testReturnRegularStreamOnRead() { - $instance = $this->getLimitedStorage(9); - - // create test file first - $stream = $instance->fopen('files/foo', 'w+'); - fwrite($stream, 'blablacontent'); - fclose($stream); - - $stream = $instance->fopen('files/foo', 'r'); - $meta = stream_get_meta_data($stream); - $this->assertEquals('plainfile', $meta['wrapper_type']); - fclose($stream); - - $stream = $instance->fopen('files/foo', 'rb'); - $meta = stream_get_meta_data($stream); - $this->assertEquals('plainfile', $meta['wrapper_type']); - fclose($stream); - } - - public function testReturnRegularStreamWhenOutsideFiles() { - $instance = $this->getLimitedStorage(9); - $instance->mkdir('files_other'); - - // create test file first - $stream = $instance->fopen('files_other/foo', 'w+'); - $meta = stream_get_meta_data($stream); - $this->assertEquals('plainfile', $meta['wrapper_type']); - fclose($stream); - } - - public function testReturnQuotaStreamOnWrite() { - $instance = $this->getLimitedStorage(9); - $stream = $instance->fopen('files/foo', 'w+'); - $meta = stream_get_meta_data($stream); - $expected_type = defined('HHVM_VERSION') ? 'File' : 'user-space'; - $this->assertEquals($expected_type, $meta['wrapper_type']); - fclose($stream); - } - - public function testSpaceRoot() { - $storage = $this->getMockBuilder('\OC\Files\Storage\Local')->disableOriginalConstructor()->getMock(); - $cache = $this->getMockBuilder('\OC\Files\Cache\Cache')->disableOriginalConstructor()->getMock(); - $storage->expects($this->once()) - ->method('getCache') - ->will($this->returnValue($cache)); - $storage->expects($this->once()) - ->method('free_space') - ->will($this->returnValue(2048)); - $cache->expects($this->once()) - ->method('get') - ->with('files') - ->will($this->returnValue(new CacheEntry(['size' => 50]))); - - $instance = new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => 1024, 'root' => 'files')); - - $this->assertEquals(1024 - 50, $instance->free_space('')); - } - - public function testInstanceOfStorageWrapper() { - $this->assertTrue($this->instance->instanceOfStorage('\OC\Files\Storage\Local')); - $this->assertTrue($this->instance->instanceOfStorage('\OC\Files\Storage\Wrapper\Wrapper')); - $this->assertTrue($this->instance->instanceOfStorage('\OC\Files\Storage\Wrapper\Quota')); - } -} diff --git a/tests/lib/files/storage/wrapper/wrapper.php b/tests/lib/files/storage/wrapper/wrapper.php deleted file mode 100644 index a5a678cb9f7..00000000000 --- a/tests/lib/files/storage/wrapper/wrapper.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -namespace Test\Files\Storage\Wrapper; - -class Wrapper extends \Test\Files\Storage\Storage { - /** - * @var string tmpDir - */ - private $tmpDir; - - protected function setUp() { - parent::setUp(); - - $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); - $storage = new \OC\Files\Storage\Local(array('datadir' => $this->tmpDir)); - $this->instance = new \OC\Files\Storage\Wrapper\Wrapper(array('storage' => $storage)); - } - - protected function tearDown() { - \OC_Helper::rmdirr($this->tmpDir); - parent::tearDown(); - } - - public function testInstanceOfStorageWrapper() { - $this->assertTrue($this->instance->instanceOfStorage('\OC\Files\Storage\Local')); - $this->assertTrue($this->instance->instanceOfStorage('\OC\Files\Storage\Wrapper\Wrapper')); - } -} |