diff options
author | Vincent Petry <pvince81@owncloud.com> | 2013-10-25 12:33:16 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2013-10-25 12:33:16 +0200 |
commit | c8df27de73f845f6d1661386f06304b7c209e7d7 (patch) | |
tree | d98ad6e5c6e7305a3a1cd21eaf0285b4a7155d23 | |
parent | d8b245490bf0e74156c66ca594977cbdb2920c4e (diff) | |
download | nextcloud-server-c8df27de73f845f6d1661386f06304b7c209e7d7.tar.gz nextcloud-server-c8df27de73f845f6d1661386f06304b7c209e7d7.zip |
Fixed quota stream to not wrap read-only fopen calls
-rw-r--r-- | lib/private/files/storage/wrapper/quota.php | 2 | ||||
-rw-r--r-- | tests/lib/files/storage/wrapper/quota.php | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/lib/private/files/storage/wrapper/quota.php b/lib/private/files/storage/wrapper/quota.php index e2da8cf2e05..43016e0892f 100644 --- a/lib/private/files/storage/wrapper/quota.php +++ b/lib/private/files/storage/wrapper/quota.php @@ -95,7 +95,7 @@ class Quota extends Wrapper { public function fopen($path, $mode) { $source = $this->storage->fopen($path, $mode); $free = $this->free_space(''); - if ($free >= 0) { + if ($free >= 0 && $mode !== 'r') { return \OC\Files\Stream\Quota::wrap($source, $free); } else { return $source; diff --git a/tests/lib/files/storage/wrapper/quota.php b/tests/lib/files/storage/wrapper/quota.php index 3702f8154f5..9b14335782f 100644 --- a/tests/lib/files/storage/wrapper/quota.php +++ b/tests/lib/files/storage/wrapper/quota.php @@ -58,4 +58,26 @@ class Quota extends \Test\Files\Storage\Storage { fclose($stream); $this->assertEquals('foobarqwe', $instance->file_get_contents('foo')); } + + public function testReturnRegularStreamOnRead(){ + $instance = $this->getLimitedStorage(9); + + // create test file first + $stream = $instance->fopen('foo', 'w+'); + fwrite($stream, 'blablacontent'); + fclose($stream); + + $stream = $instance->fopen('foo', 'r'); + $meta = stream_get_meta_data($stream); + $this->assertEquals('plainfile', $meta['wrapper_type']); + fclose($stream); + } + + public function testReturnQuotaStreamOnWrite(){ + $instance = $this->getLimitedStorage(9); + $stream = $instance->fopen('foo', 'w+'); + $meta = stream_get_meta_data($stream); + $this->assertEquals('user-space', $meta['wrapper_type']); + fclose($stream); + } } |