diff --git a/tests/ACL/ACLScannerTest.php b/tests/ACL/ACLScannerTest.php new file mode 100644 index 000000000..dae8dbf80 --- /dev/null +++ b/tests/ACL/ACLScannerTest.php @@ -0,0 +1,60 @@ +getMockBuilder(ACLManager::class) + ->disableOriginalConstructor() + ->getMock(); + $manager->method('getACLPermissionsForPath') + ->willReturnCallback(function($path) use ($rules) { + return $rules[$path] ?? Constants::PERMISSION_ALL; + }); + return $manager; + } + + public function testScanAclStorage() { + $baseStorage = new Temporary([]); + $baseStorage->mkdir('foo'); + $baseStorage->mkdir('foo/bar'); + $baseStorage->mkdir('foo/bar/asd'); + $cache = $baseStorage->getCache(); + $baseStorage->getScanner()->scan(''); + + $cache->update($cache->getId('foo/bar/asd'), ['size' => -1]); + $cache->calculateFolderSize('foo/bar'); + $cache->calculateFolderSize('foo'); + + $this->assertEquals(-1, $cache->get('foo/bar')->getSize()); + + $acls = $this->getAclManager([ + 'foo/bar' => 0, + 'foo/bar/asd' => 0, + ]); + + $aclStorage = new ACLStorageWrapper([ + 'storage' => $baseStorage, + 'acl_manager' => $acls, + 'in_share' => false, + ]); + + $scanner = $aclStorage->getScanner(); + $aclCache = $aclStorage->getCache(); + $scanner->scan(''); + + $this->assertEquals(0, $cache->get('foo/bar')->getSize()); + + $this->assertEquals(31, $cache->get('foo/bar')->getPermissions()); + $this->assertEquals(false, $aclCache->get('foo/bar')); + } +}