From 11215f4e275f7e7d1aafdb8af440550d27562ad8 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 24 Feb 2016 10:39:04 +0100 Subject: Return -3 for unlimited quota Returns -3 for unlimited quota in Webdav response. Also adjusted personal page to show unlimited quota when set. --- apps/dav/lib/connector/sabre/directory.php | 7 +++- apps/dav/tests/unit/connector/sabre/directory.php | 39 +++++++++++++++++++++-- apps/files_sharing/lib/sharedstorage.php | 4 +++ 3 files changed, 46 insertions(+), 4 deletions(-) (limited to 'apps') diff --git a/apps/dav/lib/connector/sabre/directory.php b/apps/dav/lib/connector/sabre/directory.php index 0119879a171..f31eff30b65 100644 --- a/apps/dav/lib/connector/sabre/directory.php +++ b/apps/dav/lib/connector/sabre/directory.php @@ -291,9 +291,14 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node } try { $storageInfo = \OC_Helper::getStorageInfo($this->info->getPath(), $this->info); + if ($storageInfo['quota'] === \OCP\Files\FileInfo::SPACE_UNLIMITED) { + $free = \OCP\Files\FileInfo::SPACE_UNLIMITED; + } else { + $free = $storageInfo['free']; + } $this->quotaInfo = array( $storageInfo['used'], - $storageInfo['free'] + $free ); return $this->quotaInfo; } catch (\OCP\Files\StorageNotAvailableException $e) { diff --git a/apps/dav/tests/unit/connector/sabre/directory.php b/apps/dav/tests/unit/connector/sabre/directory.php index 317e089925b..c4ddc38b3e1 100644 --- a/apps/dav/tests/unit/connector/sabre/directory.php +++ b/apps/dav/tests/unit/connector/sabre/directory.php @@ -199,15 +199,48 @@ class Directory extends \Test\TestCase { $dir->getChild('.'); } - public function testGetQuotaInfo() { + public function testGetQuotaInfoUnlimited() { $storage = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Quota') ->disableOriginalConstructor() ->getMock(); + $storage->expects($this->any()) + ->method('instanceOfStorage') + ->will($this->returnValueMap([ + '\OC\Files\Storage\Shared' => false, + '\OC\Files\Storage\Wrapper\Quota' => false, + ])); + + $storage->expects($this->never()) + ->method('getQuota'); + $storage->expects($this->once()) + ->method('free_space') + ->will($this->returnValue(800)); + + $this->info->expects($this->once()) + ->method('getSize') + ->will($this->returnValue(200)); + + $this->info->expects($this->once()) + ->method('getStorage') + ->will($this->returnValue($storage)); + + $dir = new \OCA\DAV\Connector\Sabre\Directory($this->view, $this->info); + $this->assertEquals([200, -3], $dir->getQuotaInfo()); //200 used, unlimited + } + + public function testGetQuotaInfoSpecific() { + $storage = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Quota') + ->disableOriginalConstructor() + ->getMock(); + + $storage->expects($this->any()) ->method('instanceOfStorage') - ->with('\OC\Files\Storage\Wrapper\Quota') - ->will($this->returnValue(true)); + ->will($this->returnValueMap([ + ['\OC\Files\Storage\Shared', false], + ['\OC\Files\Storage\Wrapper\Quota', true], + ])); $storage->expects($this->once()) ->method('getQuota') diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 101503a03fb..600599d7175 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -725,4 +725,8 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { list($targetStorage) = $this->ownerView->resolvePath($ownerPath); return $targetStorage->isLocal(); } + + public function getSourceStorage() { + return $this->sourceStorage; + } } -- cgit v1.2.3