aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/files/config/usermountcache.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/files/config/usermountcache.php')
-rw-r--r--tests/lib/files/config/usermountcache.php375
1 files changed, 0 insertions, 375 deletions
diff --git a/tests/lib/files/config/usermountcache.php b/tests/lib/files/config/usermountcache.php
deleted file mode 100644
index 070c2f6176d..00000000000
--- a/tests/lib/files/config/usermountcache.php
+++ /dev/null
@@ -1,375 +0,0 @@
-<?php
-/**
- * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-namespace Test\Files\Config;
-
-use OC\DB\QueryBuilder\Literal;
-use OC\Files\Mount\MountPoint;
-use OC\Log;
-use OC\User\Manager;
-use OCP\Files\Config\ICachedMountInfo;
-use OCP\IDBConnection;
-use OCP\IUserManager;
-use Test\TestCase;
-use Test\Util\User\Dummy;
-
-/**
- * @group DB
- */
-class UserMountCache extends TestCase {
- /**
- * @var IDBConnection
- */
- private $connection;
-
- /**
- * @var IUserManager
- */
- private $userManager;
-
- /**
- * @var \OC\Files\Config\UserMountCache
- */
- private $cache;
-
- private $fileIds = [];
-
- public function setUp() {
- $this->fileIds = [];
- $this->connection = \OC::$server->getDatabaseConnection();
- $this->userManager = new Manager(null);
- $userBackend = new Dummy();
- $userBackend->createUser('u1', '');
- $userBackend->createUser('u2', '');
- $this->userManager->registerBackend($userBackend);
- $this->cache = new \OC\Files\Config\UserMountCache($this->connection, $this->userManager, $this->getMock('\OC\Log'));
- }
-
- public function tearDown() {
- $builder = $this->connection->getQueryBuilder();
-
- $builder->delete('mounts')->execute();
-
- $builder = $this->connection->getQueryBuilder();
-
- foreach ($this->fileIds as $fileId) {
- $builder->delete('filecache')
- ->where($builder->expr()->eq('fileid', new Literal($fileId)))
- ->execute();
- }
- }
-
- private function getStorage($storageId, $rootId) {
- $storageCache = $this->getMockBuilder('\OC\Files\Cache\Storage')
- ->disableOriginalConstructor()
- ->getMock();
- $storageCache->expects($this->any())
- ->method('getNumericId')
- ->will($this->returnValue($storageId));
-
- $cache = $this->getMockBuilder('\OC\Files\Cache\Cache')
- ->disableOriginalConstructor()
- ->getMock();
- $cache->expects($this->any())
- ->method('getId')
- ->will($this->returnValue($rootId));
-
- $storage = $this->getMockBuilder('\OC\Files\Storage\Storage')
- ->disableOriginalConstructor()
- ->getMock();
- $storage->expects($this->any())
- ->method('getStorageCache')
- ->will($this->returnValue($storageCache));
- $storage->expects($this->any())
- ->method('getCache')
- ->will($this->returnValue($cache));
-
- return $storage;
- }
-
- private function clearCache() {
- $this->invokePrivate($this->cache, 'mountsForUsers', [[]]);
- }
-
- public function testNewMounts() {
- $user = $this->userManager->get('u1');
-
- $storage = $this->getStorage(10, 20);
- $mount = new MountPoint($storage, '/asd/');
-
- $this->cache->registerMounts($user, [$mount]);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForUser($user);
-
- $this->assertCount(1, $cachedMounts);
- $cachedMount = $cachedMounts[0];
- $this->assertEquals('/asd/', $cachedMount->getMountPoint());
- $this->assertEquals($user, $cachedMount->getUser());
- $this->assertEquals($storage->getCache()->getId(''), $cachedMount->getRootId());
- $this->assertEquals($storage->getStorageCache()->getNumericId(), $cachedMount->getStorageId());
- }
-
- public function testSameMounts() {
- $user = $this->userManager->get('u1');
-
- $storage = $this->getStorage(10, 20);
- $mount = new MountPoint($storage, '/asd/');
-
- $this->cache->registerMounts($user, [$mount]);
-
- $this->clearCache();
-
- $this->cache->registerMounts($user, [$mount]);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForUser($user);
-
- $this->assertCount(1, $cachedMounts);
- $cachedMount = $cachedMounts[0];
- $this->assertEquals('/asd/', $cachedMount->getMountPoint());
- $this->assertEquals($user, $cachedMount->getUser());
- $this->assertEquals($storage->getCache()->getId(''), $cachedMount->getRootId());
- $this->assertEquals($storage->getStorageCache()->getNumericId(), $cachedMount->getStorageId());
- }
-
- public function testRemoveMounts() {
- $user = $this->userManager->get('u1');
-
- $storage = $this->getStorage(10, 20);
- $mount = new MountPoint($storage, '/asd/');
-
- $this->cache->registerMounts($user, [$mount]);
-
- $this->clearCache();
-
- $this->cache->registerMounts($user, []);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForUser($user);
-
- $this->assertCount(0, $cachedMounts);
- }
-
- public function testChangeMounts() {
- $user = $this->userManager->get('u1');
-
- $storage = $this->getStorage(10, 20);
- $mount = new MountPoint($storage, '/foo/');
-
- $this->cache->registerMounts($user, [$mount]);
-
- $this->clearCache();
-
- $this->cache->registerMounts($user, [$mount]);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForUser($user);
-
- $this->assertCount(1, $cachedMounts);
- $cachedMount = $cachedMounts[0];
- $this->assertEquals('/foo/', $cachedMount->getMountPoint());
- }
-
- public function testGetMountsForUser() {
- $user1 = $this->userManager->get('u1');
- $user2 = $this->userManager->get('u2');
-
- $mount1 = new MountPoint($this->getStorage(1, 2), '/foo/');
- $mount2 = new MountPoint($this->getStorage(3, 4), '/bar/');
-
- $this->cache->registerMounts($user1, [$mount1, $mount2]);
- $this->cache->registerMounts($user2, [$mount2]);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForUser($user1);
-
- $this->assertCount(2, $cachedMounts);
- $this->assertEquals('/foo/', $cachedMounts[0]->getMountPoint());
- $this->assertEquals($user1, $cachedMounts[0]->getUser());
- $this->assertEquals(2, $cachedMounts[0]->getRootId());
- $this->assertEquals(1, $cachedMounts[0]->getStorageId());
-
- $this->assertEquals('/bar/', $cachedMounts[1]->getMountPoint());
- $this->assertEquals($user1, $cachedMounts[1]->getUser());
- $this->assertEquals(4, $cachedMounts[1]->getRootId());
- $this->assertEquals(3, $cachedMounts[1]->getStorageId());
- }
-
- public function testGetMountsByStorageId() {
- $user1 = $this->userManager->get('u1');
- $user2 = $this->userManager->get('u2');
-
- $mount1 = new MountPoint($this->getStorage(1, 2), '/foo/');
- $mount2 = new MountPoint($this->getStorage(3, 4), '/bar/');
-
- $this->cache->registerMounts($user1, [$mount1, $mount2]);
- $this->cache->registerMounts($user2, [$mount2]);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForStorageId(3);
- $this->sortMounts($cachedMounts);
-
- $this->assertCount(2, $cachedMounts);
-
- $this->assertEquals('/bar/', $cachedMounts[0]->getMountPoint());
- $this->assertEquals($user1, $cachedMounts[0]->getUser());
- $this->assertEquals(4, $cachedMounts[0]->getRootId());
- $this->assertEquals(3, $cachedMounts[0]->getStorageId());
-
- $this->assertEquals('/bar/', $cachedMounts[1]->getMountPoint());
- $this->assertEquals($user2, $cachedMounts[1]->getUser());
- $this->assertEquals(4, $cachedMounts[1]->getRootId());
- $this->assertEquals(3, $cachedMounts[1]->getStorageId());
- }
-
- public function testGetMountsByRootId() {
- $user1 = $this->userManager->get('u1');
- $user2 = $this->userManager->get('u2');
-
- $mount1 = new MountPoint($this->getStorage(1, 2), '/foo/');
- $mount2 = new MountPoint($this->getStorage(3, 4), '/bar/');
-
- $this->cache->registerMounts($user1, [$mount1, $mount2]);
- $this->cache->registerMounts($user2, [$mount2]);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForRootId(4);
- $this->sortMounts($cachedMounts);
-
- $this->assertCount(2, $cachedMounts);
-
- $this->assertEquals('/bar/', $cachedMounts[0]->getMountPoint());
- $this->assertEquals($user1, $cachedMounts[0]->getUser());
- $this->assertEquals(4, $cachedMounts[0]->getRootId());
- $this->assertEquals(3, $cachedMounts[0]->getStorageId());
-
- $this->assertEquals('/bar/', $cachedMounts[1]->getMountPoint());
- $this->assertEquals($user2, $cachedMounts[1]->getUser());
- $this->assertEquals(4, $cachedMounts[1]->getRootId());
- $this->assertEquals(3, $cachedMounts[1]->getStorageId());
- }
-
- private function sortMounts(&$mounts) {
- usort($mounts, function (ICachedMountInfo $a, ICachedMountInfo $b) {
- return strcmp($a->getUser()->getUID(), $b->getUser()->getUID());
- });
- }
-
- private function createCacheEntry($internalPath, $storageId) {
- $this->connection->insertIfNotExist('*PREFIX*filecache', [
- 'storage' => $storageId,
- 'path' => $internalPath,
- 'path_hash' => md5($internalPath),
- 'parent' => -1,
- 'name' => basename($internalPath),
- 'mimetype' => 0,
- 'mimepart' => 0,
- 'size' => 0,
- 'storage_mtime' => 0,
- 'encrypted' => 0,
- 'unencrypted_size' => 0,
- 'etag' => '',
- 'permissions' => 31
- ], ['storage', 'path_hash']);
- $id = (int)$this->connection->lastInsertId('*PREFIX*filecache');
- $this->fileIds[] = $id;
- return $id;
- }
-
- public function testGetMountsForFileIdRootId() {
- $user1 = $this->userManager->get('u1');
-
- $rootId = $this->createCacheEntry('', 2);
-
- $mount1 = new MountPoint($this->getStorage(2, $rootId), '/foo/');
-
- $this->cache->registerMounts($user1, [$mount1]);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForFileId($rootId);
-
- $this->assertCount(1, $cachedMounts);
-
- $this->assertEquals('/foo/', $cachedMounts[0]->getMountPoint());
- $this->assertEquals($user1, $cachedMounts[0]->getUser());
- $this->assertEquals($rootId, $cachedMounts[0]->getRootId());
- $this->assertEquals(2, $cachedMounts[0]->getStorageId());
- }
-
- public function testGetMountsForFileIdSubFolder() {
- $user1 = $this->userManager->get('u1');
-
- $rootId = $this->createCacheEntry('', 2);
- $fileId = $this->createCacheEntry('/foo/bar', 2);
-
- $mount1 = new MountPoint($this->getStorage(2, $rootId), '/foo/');
-
- $this->cache->registerMounts($user1, [$mount1]);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForFileId($fileId);
-
- $this->assertCount(1, $cachedMounts);
-
- $this->assertEquals('/foo/', $cachedMounts[0]->getMountPoint());
- $this->assertEquals($user1, $cachedMounts[0]->getUser());
- $this->assertEquals($rootId, $cachedMounts[0]->getRootId());
- $this->assertEquals(2, $cachedMounts[0]->getStorageId());
- }
-
- public function testGetMountsForFileIdSubFolderMount() {
- $user1 = $this->userManager->get('u1');
-
- $this->createCacheEntry('', 2);
- $folderId = $this->createCacheEntry('/foo', 2);
- $fileId = $this->createCacheEntry('/foo/bar', 2);
-
- $mount1 = new MountPoint($this->getStorage(2, $folderId), '/foo/');
-
- $this->cache->registerMounts($user1, [$mount1]);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForFileId($fileId);
-
- $this->assertCount(1, $cachedMounts);
-
- $this->assertEquals('/foo/', $cachedMounts[0]->getMountPoint());
- $this->assertEquals($user1, $cachedMounts[0]->getUser());
- $this->assertEquals($folderId, $cachedMounts[0]->getRootId());
- $this->assertEquals(2, $cachedMounts[0]->getStorageId());
- }
-
- public function testGetMountsForFileIdSubFolderMountOutside() {
- $user1 = $this->userManager->get('u1');
-
- $this->createCacheEntry('', 2);
- $folderId = $this->createCacheEntry('/foo', 2);
- $fileId = $this->createCacheEntry('/bar/asd', 2);
-
- $mount1 = new MountPoint($this->getStorage(2, $folderId), '/foo/');
-
- $this->cache->registerMounts($user1, [$mount1]);
-
- $this->clearCache();
-
- $cachedMounts = $this->cache->getMountsForFileId($fileId);
-
- $this->assertCount(0, $cachedMounts);
- }
-}