Return unencrypted_size of folder when queried
This fixes the "used space" to be based on the unencrypted size, not encrypted size, to be consistent with how quota/space is handled when encryption is enabled
This commit is contained in:
parent
7f24d42ca5
commit
48d63a6278
|
@ -340,6 +340,13 @@ class Proxy extends \OC_FileProxy {
|
|||
|
||||
// if path is a folder do nothing
|
||||
if ($view->is_dir($path)) {
|
||||
$proxyState = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
$fileInfo = $view->getFileInfo($path);
|
||||
\OC_FileProxy::$enabled = $proxyState;
|
||||
if ($fileInfo['unencrypted_size'] > 0) {
|
||||
return $fileInfo['unencrypted_size'];
|
||||
}
|
||||
return $size;
|
||||
}
|
||||
|
||||
|
|
|
@ -112,4 +112,24 @@ class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase {
|
|||
|
||||
}
|
||||
|
||||
function testPostFileSizeWithDirectory() {
|
||||
|
||||
$this->view->file_put_contents($this->filename, $this->data);
|
||||
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
// get root size, must match the file's unencrypted size
|
||||
$unencryptedSize = $this->view->filesize('');
|
||||
|
||||
\OC_FileProxy::$enabled = true;
|
||||
|
||||
$encryptedSize = $this->view->filesize('');
|
||||
|
||||
$this->assertTrue($encryptedSize !== $unencryptedSize);
|
||||
|
||||
// cleanup
|
||||
$this->view->unlink($this->filename);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -36,6 +36,11 @@ class Quota extends Wrapper {
|
|||
$cache = $this->getCache();
|
||||
$data = $cache->get($path);
|
||||
if (is_array($data) and isset($data['size'])) {
|
||||
if (isset($data['unencrypted_size'])
|
||||
&& $data['unencrypted_size'] > 0
|
||||
) {
|
||||
return $data['unencrypted_size'];
|
||||
}
|
||||
return $data['size'];
|
||||
} else {
|
||||
return \OC\Files\SPACE_NOT_COMPUTED;
|
||||
|
|
|
@ -53,6 +53,22 @@ class Quota extends \Test\Files\Storage\Storage {
|
|||
$this->assertEquals(9, $instance->free_space(''));
|
||||
}
|
||||
|
||||
public function testFreeSpaceWithUsedSpace() {
|
||||
$instance = $this->getLimitedStorage(9);
|
||||
$instance->getCache()->put(
|
||||
'', array('size' => 3, 'unencrypted_size' => 0)
|
||||
);
|
||||
$this->assertEquals(6, $instance->free_space(''));
|
||||
}
|
||||
|
||||
public function testFreeSpaceWithUsedSpaceAndEncryption() {
|
||||
$instance = $this->getLimitedStorage(9);
|
||||
$instance->getCache()->put(
|
||||
'', array('size' => 7, 'unencrypted_size' => 3)
|
||||
);
|
||||
$this->assertEquals(6, $instance->free_space(''));
|
||||
}
|
||||
|
||||
public function testFWriteNotEnoughSpace() {
|
||||
$instance = $this->getLimitedStorage(9);
|
||||
$stream = $instance->fopen('foo', 'w+');
|
||||
|
|
Loading…
Reference in New Issue