summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authoricewind1991 <robin@icewind.nl>2014-06-05 11:23:32 +0200
committericewind1991 <robin@icewind.nl>2014-06-05 11:23:32 +0200
commitbd373d9621a409cba626ac7b1a4bb9d03c3b0f3b (patch)
treeaf58b8b4159a148d297248fb68a25e4530515647 /tests
parente0c4e960d9d1289c28dfbffde2fb9c1d30987f56 (diff)
parentda889ff029446119cf6159e75c48ef83be7de7e8 (diff)
downloadnextcloud-server-bd373d9621a409cba626ac7b1a4bb9d03c3b0f3b.tar.gz
nextcloud-server-bd373d9621a409cba626ac7b1a4bb9d03c3b0f3b.zip
Merge pull request #7878 from owncloud/quota-extstorageswitch
Added switch to count external storage data in quota
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/helperstorage.php145
1 files changed, 124 insertions, 21 deletions
diff --git a/tests/lib/helperstorage.php b/tests/lib/helperstorage.php
index 010a54e3bb0..4fdd9dd6b9b 100644
--- a/tests/lib/helperstorage.php
+++ b/tests/lib/helperstorage.php
@@ -15,35 +15,78 @@ class Test_Helper_Storage extends PHPUnit_Framework_TestCase {
public function setUp() {
$this->user = 'user_' . uniqid();
+ \OC_User::createUser($this->user, $this->user);
+
\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;
+ }
+
+ public function tearDown() {
+ $this->user = null;
+ if ($this->storageMock) {
+ $this->storageMock->getCache()->clear();
+ $this->storageMock = null;
+ }
+ \OC\Files\Filesystem::tearDown();
+
+ \OC_User::setUserId('');
+ \OC_User::deleteUser($this->user);
+ \OC_Preferences::deleteUser($this->user);
+ }
+
+ /**
+ * 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->getMock(
'\OC\Files\Storage\Temporary',
array('free_space'),
array('')
);
- \OC\Files\Filesystem::clearMounts();
$this->storageMock->expects($this->once())
->method('free_space')
->will($this->returnValue(12));
+ return $this->storageMock;
}
- public function tearDown() {
- $this->user = null;
+ /**
+ * Test getting the storage info
+ */
+ function testGetStorageInfo() {
+ $homeStorage = $this->getStorageMock(12);
+ \OC\Files\Filesystem::mount($homeStorage, array(), '/' . $this->user . '/files');
+ $homeStorage->file_put_contents('test.txt', '01234');
- $this->storageMock->getCache()->clear();
- \OC\Files\Filesystem::tearDown();
+ $storageInfo = \OC_Helper::getStorageInfo('');
+ $this->assertEquals(12, $storageInfo['free']);
+ $this->assertEquals(5, $storageInfo['used']);
+ $this->assertEquals(17, $storageInfo['total']);
}
/**
- * Test getting the storage info
+ * Test getting the storage info, ignoring extra mount points
*/
- function testGetStorageInfo() {
- \OC\Files\Filesystem::mount($this->storageMock, array(), '/' . $this->user . '/files');
- $this->storageMock->file_put_contents('test.txt', '01234');
+ function testGetStorageInfoExcludingExtStorage() {
+ $homeStorage = $this->getStorageMock(12);
+ \OC\Files\Filesystem::mount($homeStorage, array(), '/' . $this->user . '/files');
+ $homeStorage->file_put_contents('test.txt', '01234');
+
+ $extStorage = new \OC\Files\Storage\Temporary(array());
+ $extStorage->file_put_contents('extfile.txt', 'abcdefghijklmnopq');
+ $extStorage->getScanner()->scan(''); // update root size
+
+ \OC\Files\Filesystem::mount($extStorage, array(), '/' . $this->user . '/files/ext');
$storageInfo = \OC_Helper::getStorageInfo('');
$this->assertEquals(12, $storageInfo['free']);
@@ -52,17 +95,75 @@ class Test_Helper_Storage extends PHPUnit_Framework_TestCase {
}
/**
+ * Test getting the storage info, including extra mount points
+ */
+ function testGetStorageInfoIncludingExtStorage() {
+ $homeStorage = new \OC\Files\Storage\Temporary(array());
+ \OC\Files\Filesystem::mount($homeStorage, array(), '/' . $this->user . '/files');
+ $homeStorage->file_put_contents('test.txt', '01234');
+
+ $extStorage = new \OC\Files\Storage\Temporary(array());
+ $extStorage->file_put_contents('extfile.txt', 'abcdefghijklmnopq');
+ $extStorage->getScanner()->scan(''); // update root size
+
+ \OC\Files\Filesystem::mount($extStorage, array(), '/' . $this->user . '/files/ext');
+
+ $oldConfig = \OC_Config::getValue('quota_include_external_storage', false);
+ \OC_Config::setValue('quota_include_external_storage', 'true');
+
+ $config = \OC::$server->getConfig();
+ $userQuota = $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']);
+
+ \OC_Config::setValue('quota_include_external_storage', $oldConfig);
+ $userQuota = $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, array(), '/' . $this->user . '/files');
+ $homeStorage->file_put_contents('test.txt', '01234');
+
+ $extStorage = new \OC\Files\Storage\Temporary(array());
+ $extStorage->file_put_contents('extfile.txt', 'abcdefghijklmnopq');
+ $extStorage->getScanner()->scan(''); // update root size
+
+ \OC\Files\Filesystem::mount($extStorage, array(), '/' . $this->user . '/files/ext');
+
+ $oldConfig = \OC_Config::getValue('quota_include_external_storage', false);
+ \OC_Config::setValue('quota_include_external_storage', 'true');
+
+ $storageInfo = \OC_Helper::getStorageInfo('');
+ $this->assertEquals(12, $storageInfo['free']);
+ $this->assertEquals(5, $storageInfo['used']);
+ $this->assertEquals(17, $storageInfo['total']);
+
+ \OC_Config::setValue('quota_include_external_storage', $oldConfig);
+ }
+
+
+ /**
* Test getting the storage info with quota enabled
*/
function testGetStorageInfoWithQuota() {
- $this->storageMock->file_put_contents('test.txt', '01234');
- $this->storageMock = new \OC\Files\Storage\Wrapper\Quota(
+ $homeStorage = $this->getStorageMock(12);
+ $homeStorage->file_put_contents('test.txt', '01234');
+ $homeStorage = new \OC\Files\Storage\Wrapper\Quota(
array(
- 'storage' => $this->storageMock,
+ 'storage' => $homeStorage,
'quota' => 7
)
);
- \OC\Files\Filesystem::mount($this->storageMock, array(), '/' . $this->user . '/files');
+ \OC\Files\Filesystem::mount($homeStorage, array(), '/' . $this->user . '/files');
$storageInfo = \OC_Helper::getStorageInfo('');
$this->assertEquals(2, $storageInfo['free']);
@@ -74,14 +175,15 @@ class Test_Helper_Storage extends PHPUnit_Framework_TestCase {
* Test getting the storage info when data exceeds quota
*/
function testGetStorageInfoWhenSizeExceedsQuota() {
- $this->storageMock->file_put_contents('test.txt', '0123456789');
- $this->storageMock = new \OC\Files\Storage\Wrapper\Quota(
+ $homeStorage = $this->getStorageMock(12);
+ $homeStorage->file_put_contents('test.txt', '0123456789');
+ $homeStorage = new \OC\Files\Storage\Wrapper\Quota(
array(
- 'storage' => $this->storageMock,
+ 'storage' => $homeStorage,
'quota' => 7
)
);
- \OC\Files\Filesystem::mount($this->storageMock, array(), '/' . $this->user . '/files');
+ \OC\Files\Filesystem::mount($homeStorage, array(), '/' . $this->user . '/files');
$storageInfo = \OC_Helper::getStorageInfo('');
$this->assertEquals(0, $storageInfo['free']);
@@ -95,14 +197,15 @@ class Test_Helper_Storage extends PHPUnit_Framework_TestCase {
* free storage space is less than the quota
*/
function testGetStorageInfoWhenFreeSpaceLessThanQuota() {
- $this->storageMock->file_put_contents('test.txt', '01234');
- $this->storageMock = new \OC\Files\Storage\Wrapper\Quota(
+ $homeStorage = $this->getStorageMock(12);
+ $homeStorage->file_put_contents('test.txt', '01234');
+ $homeStorage = new \OC\Files\Storage\Wrapper\Quota(
array(
- 'storage' => $this->storageMock,
+ 'storage' => $homeStorage,
'quota' => 18
)
);
- \OC\Files\Filesystem::mount($this->storageMock, array(), '/' . $this->user . '/files');
+ \OC\Files\Filesystem::mount($homeStorage, array(), '/' . $this->user . '/files');
$storageInfo = \OC_Helper::getStorageInfo('');
$this->assertEquals(12, $storageInfo['free']);