summaryrefslogtreecommitdiffstats
path: root/tests/lib/Share20/DefaultShareProviderTest.php
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2016-12-22 21:44:21 +0100
committerRoeland Jago Douma <roeland@famdouma.nl>2017-04-13 12:58:50 +0200
commit2cbac3357ba445a3a4cd073e119efb871ea0f719 (patch)
tree42f12e6334f0f14b8f122bf1355f325366123396 /tests/lib/Share20/DefaultShareProviderTest.php
parent97f8ca6595caf051eae9c9261bdbd481c9dd4be1 (diff)
downloadnextcloud-server-2cbac3357ba445a3a4cd073e119efb871ea0f719.tar.gz
nextcloud-server-2cbac3357ba445a3a4cd073e119efb871ea0f719.zip
Offload acceslist creation to providers
* This allows for effective queries. * Introduce currentAccess parameter to speciy if the users needs to have currently acces (deleted incomming group share). (For notifications) Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'tests/lib/Share20/DefaultShareProviderTest.php')
-rw-r--r--tests/lib/Share20/DefaultShareProviderTest.php175
1 files changed, 175 insertions, 0 deletions
diff --git a/tests/lib/Share20/DefaultShareProviderTest.php b/tests/lib/Share20/DefaultShareProviderTest.php
index fce5668440d..ccc9f0f5112 100644
--- a/tests/lib/Share20/DefaultShareProviderTest.php
+++ b/tests/lib/Share20/DefaultShareProviderTest.php
@@ -2434,4 +2434,179 @@ class DefaultShareProviderTest extends \Test\TestCase {
$u3->delete();
$g1->delete();
}
+
+ public function testGetAccessListNoCurrentAccessRequired() {
+ $userManager = \OC::$server->getUserManager();
+ $groupManager = \OC::$server->getGroupManager();
+ $rootFolder = \OC::$server->getRootFolder();
+
+ $provider = new DefaultShareProvider(
+ $this->dbConn,
+ $userManager,
+ $groupManager,
+ $rootFolder
+ );
+
+ $u1 = $userManager->createUser('testShare1', 'test');
+ $u2 = $userManager->createUser('testShare2', 'test');
+ $u3 = $userManager->createUser('testShare3', 'test');
+ $u4 = $userManager->createUser('testShare4', 'test');
+ $u5 = $userManager->createUser('testShare5', 'test');
+
+ $g1 = $groupManager->createGroup('group1');
+ $g1->addUser($u3);
+ $g1->addUser($u4);
+
+ $u1Folder = $rootFolder->getUserFolder($u1->getUID());
+ $folder1 = $u1Folder->newFolder('foo');
+ $folder2 = $folder1->newFolder('baz');
+ $file1 = $folder2->newFile('bar');
+
+ $shareManager = \OC::$server->getShareManager();
+ $share1 = $shareManager->newShare();
+ $share1->setNode($folder1)
+ ->setSharedBy($u1->getUID())
+ ->setSharedWith($u2->getUID())
+ ->setShareOwner($u1->getUID())
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(\OCP\Constants::PERMISSION_ALL);
+ $share1 = $this->provider->create($share1);
+
+ $share2 = $shareManager->newShare();
+ $share2->setNode($folder2)
+ ->setSharedBy($u2->getUID())
+ ->setSharedWith($g1->getGID())
+ ->setShareOwner($u1->getUID())
+ ->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
+ ->setPermissions(\OCP\Constants::PERMISSION_ALL);
+ $share2 = $this->provider->create($share2);
+
+ $shareManager->deleteFromSelf($share2, $u4->getUID());
+
+ $share3 = $shareManager->newShare();
+ $share3->setNode($file1)
+ ->setSharedBy($u3->getUID())
+ ->setShareOwner($u1->getUID())
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ $share3 = $this->provider->create($share3);
+
+ $share4 = $shareManager->newShare();
+ $share4->setNode($file1)
+ ->setSharedBy($u3->getUID())
+ ->setSharedWith($u5->getUID())
+ ->setShareOwner($u1->getUID())
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ $share4 = $this->provider->create($share4);
+
+ $result = $provider->getAccessList([$folder1, $folder2, $file1], false);
+
+ $this->assertCount(4, $result['users']);
+ $this->assertContains('testShare2', $result['users']);
+ $this->assertContains('testShare3', $result['users']);
+ $this->assertContains('testShare4', $result['users']);
+ $this->assertContains('testShare5', $result['users']);
+ $this->assertTrue($result['public']);
+ $this->assertFalse($result['remote']);
+
+ $provider->delete($share1);
+ $provider->delete($share2);
+ $provider->delete($share3);
+ $provider->delete($share4);
+
+ $u1->delete();
+ $u2->delete();
+ $u3->delete();
+ $u4->delete();
+ $u5->delete();
+ $g1->delete();
+ }
+
+ public function testGetAccessListCurrentAccessRequired() {
+ $userManager = \OC::$server->getUserManager();
+ $groupManager = \OC::$server->getGroupManager();
+ $rootFolder = \OC::$server->getRootFolder();
+
+ $provider = new DefaultShareProvider(
+ $this->dbConn,
+ $userManager,
+ $groupManager,
+ $rootFolder
+ );
+
+ $u1 = $userManager->createUser('testShare1', 'test');
+ $u2 = $userManager->createUser('testShare2', 'test');
+ $u3 = $userManager->createUser('testShare3', 'test');
+ $u4 = $userManager->createUser('testShare4', 'test');
+ $u5 = $userManager->createUser('testShare5', 'test');
+
+ $g1 = $groupManager->createGroup('group1');
+ $g1->addUser($u3);
+ $g1->addUser($u4);
+
+ $u1Folder = $rootFolder->getUserFolder($u1->getUID());
+ $folder1 = $u1Folder->newFolder('foo');
+ $folder2 = $folder1->newFolder('baz');
+ $file1 = $folder2->newFile('bar');
+
+ $shareManager = \OC::$server->getShareManager();
+ $share1 = $shareManager->newShare();
+ $share1->setNode($folder1)
+ ->setSharedBy($u1->getUID())
+ ->setSharedWith($u2->getUID())
+ ->setShareOwner($u1->getUID())
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(\OCP\Constants::PERMISSION_ALL);
+ $share1 = $this->provider->create($share1);
+
+ $share2 = $shareManager->newShare();
+ $share2->setNode($folder2)
+ ->setSharedBy($u2->getUID())
+ ->setSharedWith($g1->getGID())
+ ->setShareOwner($u1->getUID())
+ ->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
+ ->setPermissions(\OCP\Constants::PERMISSION_ALL);
+ $share2 = $this->provider->create($share2);
+
+ $shareManager->deleteFromSelf($share2, $u4->getUID());
+
+ $share3 = $shareManager->newShare();
+ $share3->setNode($file1)
+ ->setSharedBy($u3->getUID())
+ ->setShareOwner($u1->getUID())
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ $share3 = $this->provider->create($share3);
+
+ $share4 = $shareManager->newShare();
+ $share4->setNode($file1)
+ ->setSharedBy($u3->getUID())
+ ->setSharedWith($u5->getUID())
+ ->setShareOwner($u1->getUID())
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ $share4 = $this->provider->create($share4);
+
+ $result = $provider->getAccessList([$folder1, $folder2, $file1], true);
+
+ $this->assertCount(3, $result['users']);
+ $this->assertContains('testShare2', $result['users']);
+ $this->assertContains('testShare3', $result['users']);
+ $this->assertContains('testShare5', $result['users']);
+ $this->assertTrue($result['public']);
+ $this->assertFalse($result['remote']);
+
+ $provider->delete($share1);
+ $provider->delete($share2);
+ $provider->delete($share3);
+ $provider->delete($share4);
+
+ $u1->delete();
+ $u2->delete();
+ $u3->delete();
+ $u4->delete();
+ $u5->delete();
+ $g1->delete();
+ }
}