summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2017-05-18 16:38:54 +0200
committerRobin Appelman <robin@icewind.nl>2017-05-18 16:38:54 +0200
commit1f1e1b0d000488ac6a7032ae2ba8ba7e25232b22 (patch)
treed2836b4168f081a9a682fe59e5ec4821be2198ca /tests
parentcd2b567c21c7329640ff8b819261dec6ee819249 (diff)
downloadnextcloud-server-1f1e1b0d000488ac6a7032ae2ba8ba7e25232b22.tar.gz
nextcloud-server-1f1e1b0d000488ac6a7032ae2ba8ba7e25232b22.zip
use unmasked permissions during scanning
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/Files/Storage/Wrapper/PermissionsMaskTest.php47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/lib/Files/Storage/Wrapper/PermissionsMaskTest.php b/tests/lib/Files/Storage/Wrapper/PermissionsMaskTest.php
index d0903ce5f97..354db9d069d 100644
--- a/tests/lib/Files/Storage/Wrapper/PermissionsMaskTest.php
+++ b/tests/lib/Files/Storage/Wrapper/PermissionsMaskTest.php
@@ -8,7 +8,9 @@
namespace Test\Files\Storage\Wrapper;
+use OC\Files\Storage\Wrapper\Wrapper;
use OCP\Constants;
+use OCP\Files\Cache\IScanner;
/**
* @group DB
@@ -114,4 +116,49 @@ class PermissionsMaskTest extends \Test\Files\Storage\Storage {
$this->assertEquals(Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE, $this->sourceStorage->getCache()->get('foo')->getPermissions());
$this->assertEquals(Constants::PERMISSION_READ, $storage->getCache()->get('foo')->getPermissions());
}
+
+ public function testScanNewWrappedFiles() {
+ $storage = $this->getMaskedStorage(Constants::PERMISSION_READ + Constants::PERMISSION_CREATE);
+ $wrappedStorage = new Wrapper(['storage' => $storage]);
+ $wrappedStorage->file_put_contents('foo', 'bar');
+ $wrappedStorage->getScanner()->scan('');
+
+ $this->assertEquals(Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE, $this->sourceStorage->getCache()->get('foo')->getPermissions());
+ $this->assertEquals(Constants::PERMISSION_READ, $storage->getCache()->get('foo')->getPermissions());
+ }
+
+ public function testScanUnchanged() {
+ $this->sourceStorage->mkdir('foo');
+ $this->sourceStorage->file_put_contents('foo/bar.txt', 'bar');
+
+ $this->sourceStorage->getScanner()->scan('foo');
+
+ $storage = $this->getMaskedStorage(Constants::PERMISSION_READ);
+ $scanner = $storage->getScanner();
+ $called = false;
+ $scanner->listen('\OC\Files\Cache\Scanner', 'addToCache', function () use (&$called) {
+ $called = true;
+ });
+ $scanner->scan('foo', IScanner::SCAN_RECURSIVE, IScanner::REUSE_ETAG | IScanner::REUSE_SIZE);
+
+ $this->assertFalse($called);
+ }
+
+ public function testScanUnchangedWrapped() {
+ $this->sourceStorage->mkdir('foo');
+ $this->sourceStorage->file_put_contents('foo/bar.txt', 'bar');
+
+ $this->sourceStorage->getScanner()->scan('foo');
+
+ $storage = $this->getMaskedStorage(Constants::PERMISSION_READ);
+ $wrappedStorage = new Wrapper(['storage' => $storage]);
+ $scanner = $wrappedStorage->getScanner();
+ $called = false;
+ $scanner->listen('\OC\Files\Cache\Scanner', 'addToCache', function () use (&$called) {
+ $called = true;
+ });
+ $scanner->scan('foo', IScanner::SCAN_RECURSIVE, IScanner::REUSE_ETAG | IScanner::REUSE_SIZE);
+
+ $this->assertFalse($called);
+ }
}