mirror of
https://github.com/nextcloud/server.git
synced 2026-02-03 20:41:22 -05:00
To continue this formatting madness, here's a tiny patch that adds unified formatting for control structures like if and loops as well as classes, their methods and anonymous functions. This basically forces the constructs to start on the same line. This is not exactly what PSR2 wants, but I think we can have a few exceptions with "our" style. The starting of braces on the same line is pracrically standard for our code. This also removes and empty lines from method/function bodies at the beginning and end. Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
235 lines
7.5 KiB
PHP
235 lines
7.5 KiB
PHP
<?php
|
|
/**
|
|
* Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>
|
|
* This file is licensed under the Affero General Public License version 3 or
|
|
* later.
|
|
* See the COPYING-README file.
|
|
*/
|
|
|
|
namespace Test;
|
|
|
|
use OC\Files\Storage\Temporary;
|
|
|
|
/**
|
|
* Test the storage functions of OC_Helper
|
|
*
|
|
* @group DB
|
|
*/
|
|
class HelperStorageTest extends \Test\TestCase {
|
|
/** @var string */
|
|
private $user;
|
|
/** @var \OC\Files\Storage\Storage */
|
|
private $storageMock;
|
|
/** @var \OC\Files\Storage\Storage */
|
|
private $storage;
|
|
|
|
protected function setUp(): void {
|
|
parent::setUp();
|
|
|
|
$this->user = $this->getUniqueID('user_');
|
|
\OC_User::useBackend('dummy');
|
|
\OC::$server->getUserManager()->createUser($this->user, $this->user);
|
|
|
|
$this->storage = \OC\Files\Filesystem::getStorage('/');
|
|
\OC\Files\Filesystem::tearDown();
|
|
\OC_User::setUserId($this->user);
|
|
\OC\Files\Filesystem::init($this->user, '/' . $this->user . '/files');
|
|
\OC\Files\Filesystem::clearMounts();
|
|
|
|
$this->storageMock = null;
|
|
}
|
|
|
|
protected function tearDown(): void {
|
|
$this->user = null;
|
|
|
|
if ($this->storageMock) {
|
|
$this->storageMock->getCache()->clear();
|
|
$this->storageMock = null;
|
|
}
|
|
\OC\Files\Filesystem::tearDown();
|
|
\OC\Files\Filesystem::mount($this->storage, [], '/');
|
|
|
|
\OC_User::setUserId('');
|
|
$user = \OC::$server->getUserManager()->get($this->user);
|
|
if ($user !== null) {
|
|
$user->delete();
|
|
}
|
|
\OC::$server->getConfig()->deleteAllUserValues($this->user);
|
|
|
|
parent::tearDown();
|
|
}
|
|
|
|
/**
|
|
* Returns a storage mock that returns the given value as
|
|
* free space
|
|
*
|
|
* @param int $freeSpace free space value
|
|
* @return \OC\Files\Storage\Storage
|
|
*/
|
|
private function getStorageMock($freeSpace = 12) {
|
|
$this->storageMock = $this->getMockBuilder(Temporary::class)
|
|
->setMethods(['free_space'])
|
|
->setConstructorArgs([''])
|
|
->getMock();
|
|
|
|
$this->storageMock->expects($this->once())
|
|
->method('free_space')
|
|
->willReturn(12);
|
|
return $this->storageMock;
|
|
}
|
|
|
|
/**
|
|
* Test getting the storage info
|
|
*/
|
|
function testGetStorageInfo() {
|
|
$homeStorage = $this->getStorageMock(12);
|
|
\OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files');
|
|
$homeStorage->file_put_contents('test.txt', '01234');
|
|
|
|
$storageInfo = \OC_Helper::getStorageInfo('');
|
|
$this->assertEquals(12, $storageInfo['free']);
|
|
$this->assertEquals(5, $storageInfo['used']);
|
|
$this->assertEquals(17, $storageInfo['total']);
|
|
}
|
|
|
|
/**
|
|
* Test getting the storage info, ignoring extra mount points
|
|
*/
|
|
function testGetStorageInfoExcludingExtStorage() {
|
|
$homeStorage = $this->getStorageMock(12);
|
|
\OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files');
|
|
$homeStorage->file_put_contents('test.txt', '01234');
|
|
|
|
$extStorage = new \OC\Files\Storage\Temporary([]);
|
|
$extStorage->file_put_contents('extfile.txt', 'abcdefghijklmnopq');
|
|
$extStorage->getScanner()->scan(''); // update root size
|
|
|
|
\OC\Files\Filesystem::mount($extStorage, [], '/' . $this->user . '/files/ext');
|
|
|
|
$storageInfo = \OC_Helper::getStorageInfo('');
|
|
$this->assertEquals(12, $storageInfo['free']);
|
|
$this->assertEquals(5, $storageInfo['used']);
|
|
$this->assertEquals(17, $storageInfo['total']);
|
|
}
|
|
|
|
/**
|
|
* Test getting the storage info, including extra mount points
|
|
*/
|
|
function testGetStorageInfoIncludingExtStorage() {
|
|
$homeStorage = new \OC\Files\Storage\Temporary([]);
|
|
\OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files');
|
|
$homeStorage->file_put_contents('test.txt', '01234');
|
|
|
|
$extStorage = new \OC\Files\Storage\Temporary([]);
|
|
$extStorage->file_put_contents('extfile.txt', 'abcdefghijklmnopq');
|
|
$extStorage->getScanner()->scan(''); // update root size
|
|
|
|
\OC\Files\Filesystem::mount($extStorage, [], '/' . $this->user . '/files/ext');
|
|
|
|
$config = \OC::$server->getConfig();
|
|
$oldConfig = $config->getSystemValue('quota_include_external_storage', false);
|
|
$config->setSystemValue('quota_include_external_storage', 'true');
|
|
|
|
$config->setUserValue($this->user, 'files', 'quota', '25');
|
|
|
|
$storageInfo = \OC_Helper::getStorageInfo('');
|
|
$this->assertEquals(3, $storageInfo['free']);
|
|
$this->assertEquals(22, $storageInfo['used']);
|
|
$this->assertEquals(25, $storageInfo['total']);
|
|
|
|
$config->setSystemValue('quota_include_external_storage', $oldConfig);
|
|
$config->setUserValue($this->user, 'files', 'quota', 'default');
|
|
}
|
|
|
|
/**
|
|
* Test getting the storage info excluding extra mount points
|
|
* when user has no quota set, even when quota ext storage option
|
|
* was set
|
|
*/
|
|
function testGetStorageInfoIncludingExtStorageWithNoUserQuota() {
|
|
$homeStorage = $this->getStorageMock(12);
|
|
\OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files');
|
|
$homeStorage->file_put_contents('test.txt', '01234');
|
|
|
|
$extStorage = new \OC\Files\Storage\Temporary([]);
|
|
$extStorage->file_put_contents('extfile.txt', 'abcdefghijklmnopq');
|
|
$extStorage->getScanner()->scan(''); // update root size
|
|
|
|
\OC\Files\Filesystem::mount($extStorage, [], '/' . $this->user . '/files/ext');
|
|
|
|
$config = \OC::$server->getConfig();
|
|
$oldConfig = $config->getSystemValue('quota_include_external_storage', false);
|
|
$config->setSystemValue('quota_include_external_storage', 'true');
|
|
|
|
$storageInfo = \OC_Helper::getStorageInfo('');
|
|
$this->assertEquals(12, $storageInfo['free'], '12 bytes free in home storage');
|
|
$this->assertEquals(22, $storageInfo['used'], '5 bytes of home storage and 17 bytes of the temporary storage are used');
|
|
$this->assertEquals(34, $storageInfo['total'], '5 bytes used and 12 bytes free in home storage as well as 17 bytes used in temporary storage');
|
|
|
|
$config->setSystemValue('quota_include_external_storage', $oldConfig);
|
|
}
|
|
|
|
|
|
/**
|
|
* Test getting the storage info with quota enabled
|
|
*/
|
|
function testGetStorageInfoWithQuota() {
|
|
$homeStorage = $this->getStorageMock(12);
|
|
$homeStorage->file_put_contents('test.txt', '01234');
|
|
$homeStorage = new \OC\Files\Storage\Wrapper\Quota(
|
|
[
|
|
'storage' => $homeStorage,
|
|
'quota' => 7
|
|
]
|
|
);
|
|
\OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files');
|
|
|
|
$storageInfo = \OC_Helper::getStorageInfo('');
|
|
$this->assertEquals(2, $storageInfo['free']);
|
|
$this->assertEquals(5, $storageInfo['used']);
|
|
$this->assertEquals(7, $storageInfo['total']);
|
|
}
|
|
|
|
/**
|
|
* Test getting the storage info when data exceeds quota
|
|
*/
|
|
function testGetStorageInfoWhenSizeExceedsQuota() {
|
|
$homeStorage = $this->getStorageMock(12);
|
|
$homeStorage->file_put_contents('test.txt', '0123456789');
|
|
$homeStorage = new \OC\Files\Storage\Wrapper\Quota(
|
|
[
|
|
'storage' => $homeStorage,
|
|
'quota' => 7
|
|
]
|
|
);
|
|
\OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files');
|
|
|
|
$storageInfo = \OC_Helper::getStorageInfo('');
|
|
$this->assertEquals(0, $storageInfo['free']);
|
|
$this->assertEquals(10, $storageInfo['used']);
|
|
// total = quota
|
|
$this->assertEquals(7, $storageInfo['total']);
|
|
}
|
|
|
|
/**
|
|
* Test getting the storage info when the remaining
|
|
* free storage space is less than the quota
|
|
*/
|
|
function testGetStorageInfoWhenFreeSpaceLessThanQuota() {
|
|
$homeStorage = $this->getStorageMock(12);
|
|
$homeStorage->file_put_contents('test.txt', '01234');
|
|
$homeStorage = new \OC\Files\Storage\Wrapper\Quota(
|
|
[
|
|
'storage' => $homeStorage,
|
|
'quota' => 18
|
|
]
|
|
);
|
|
\OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files');
|
|
|
|
$storageInfo = \OC_Helper::getStorageInfo('');
|
|
$this->assertEquals(12, $storageInfo['free']);
|
|
$this->assertEquals(5, $storageInfo['used']);
|
|
// total = free + used (because quota > total)
|
|
$this->assertEquals(17, $storageInfo['total']);
|
|
}
|
|
}
|