Skip to content

Commit

Permalink
add test for scanning with acl
Browse files Browse the repository at this point in the history
Signed-off-by: Robin Appelman <[email protected]>
  • Loading branch information
icewind1991 committed Feb 2, 2024
1 parent ec37702 commit b77405d
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions tests/ACL/ACLScannerTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php

namespace OCA\groupfolders\tests\ACL;

use OC\Files\Storage\Temporary;
use OCA\GroupFolders\ACL\ACLManager;
use OCA\GroupFolders\ACL\ACLStorageWrapper;
use OCP\Constants;
use Test\TestCase;

/**
* @group DB
*/
class ACLScannerTest extends TestCase {
private function getAclManager(array $rules): ACLManager {
$manager = $this->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'));
}
}

0 comments on commit b77405d

Please sign in to comment.