summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2015-07-08 10:33:42 +0200
committerMorris Jobke <hey@morrisjobke.de>2015-07-08 10:33:42 +0200
commit0fe81d2f214c59dbe223e949232475fb8a6f24b9 (patch)
tree6691ff58e98c4b2748695c0867bf1bd27b1f4b33 /apps
parent2fd84607eed7281ab4d507bc4fffb4fd7c9233e0 (diff)
parent40eaf71a333267288873462a33855bd0d082f21d (diff)
downloadnextcloud-server-0fe81d2f214c59dbe223e949232475fb8a6f24b9.tar.gz
nextcloud-server-0fe81d2f214c59dbe223e949232475fb8a6f24b9.zip
Merge pull request #17330 from owncloud/fix-share-path-for-group-exceptions
Fix the path for users which have an exception for a group share
Diffstat (limited to 'apps')
-rw-r--r--apps/files_sharing/tests/share.php148
1 files changed, 139 insertions, 9 deletions
diff --git a/apps/files_sharing/tests/share.php b/apps/files_sharing/tests/share.php
index 0759d0015bd..ed21e20f751 100644
--- a/apps/files_sharing/tests/share.php
+++ b/apps/files_sharing/tests/share.php
@@ -65,7 +65,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
parent::tearDown();
}
- function testUnshareFromSelf() {
+ public function testUnshareFromSelf() {
\OC_Group::createGroup('testGroup');
\OC_Group::addToGroup(self::TEST_FILES_SHARING_API_USER2, 'testGroup');
@@ -103,7 +103,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
/**
* if a file was shared as group share and as individual share they should be grouped
*/
- function testGroupingOfShares() {
+ public function testGroupingOfShares() {
$fileinfo = $this->view->getFileInfo($this->filename);
@@ -171,7 +171,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
* single user share to user2. If he re-shares the file to user2 the same target
* then the group share should be used to group the item
*/
- function testShareAndUnshareFromSelf() {
+ public function testShareAndUnshareFromSelf() {
$fileinfo = $this->view->getFileInfo($this->filename);
// share the file to group1 (user2 is a member of this group) and explicitely to user2
@@ -217,7 +217,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
}
- function verifyDirContent($content, $expected) {
+ public function verifyDirContent($content, $expected) {
foreach ($content as $c) {
if (!in_array($c['name'], $expected)) {
$this->assertTrue(false, "folder should only contain '" . implode(',', $expected) . "', found: " .$c['name']);
@@ -225,7 +225,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
}
}
- function testShareWithDifferentShareFolder() {
+ public function testShareWithDifferentShareFolder() {
$fileinfo = $this->view->getFileInfo($this->filename);
$folderinfo = $this->view->getFileInfo($this->folder);
@@ -249,7 +249,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
\OC::$server->getConfig()->deleteSystemValue('share_folder');
}
- function testShareWithGroupUniqueName() {
+ public function testShareWithGroupUniqueName() {
$this->loginHelper(self::TEST_FILES_SHARING_API_USER1);
\OC\Files\Filesystem::file_put_contents('test.txt', 'test');
@@ -283,9 +283,9 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
/**
* shared files should never have delete permissions
- * @dataProvider DataProviderTestFileSharePermissions
+ * @dataProvider dataProviderTestFileSharePermissions
*/
- function testFileSharePermissions($permission, $expectedPermissions) {
+ public function testFileSharePermissions($permission, $expectedPermissions) {
$fileinfo = $this->view->getFileInfo($this->filename);
@@ -305,7 +305,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
$this->assertSame($expectedPermissions, $share['permissions']);
}
- function DataProviderTestFileSharePermissions() {
+ public function dataProviderTestFileSharePermissions() {
$permission1 = \OCP\Constants::PERMISSION_ALL;
$permission3 = \OCP\Constants::PERMISSION_READ;
$permission4 = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE;
@@ -321,4 +321,134 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase {
);
}
+ /**
+ * @dataProvider dataProviderGetUsersSharingFile
+ *
+ * @param string $groupName name of group to share with
+ * @param bool $includeOwner whether to include the owner in the result
+ * @param bool $includePaths whether to include paths in the result
+ * @param array $expectedResult expected result of the API call
+ */
+ public function testGetUsersSharingFile($groupName, $includeOwner, $includePaths, $expectedResult) {
+
+ $fileinfo = $this->view->getFileInfo($this->folder);
+
+ $result = \OCP\Share::shareItem('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP,
+ $groupName, \OCP\Constants::PERMISSION_READ);
+ $this->assertTrue($result);
+
+ // public share
+ $result = \OCP\Share::shareItem('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK,
+ null, \OCP\Constants::PERMISSION_READ);
+ $this->assertNotNull($result); // returns the token!
+
+ // owner renames after sharing
+ $this->view->rename($this->folder, $this->folder . '_owner_renamed');
+
+ self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
+
+ $user2View = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files');
+ $user2View->rename($this->folder, $this->folder . '_renamed');
+
+ $ownerPath = $this->folder . '_owner_renamed';
+ $owner = self::TEST_FILES_SHARING_API_USER1;
+
+ $result = \OCP\Share::getUsersSharingFile($ownerPath, $owner, $includeOwner, $includePaths);
+
+ // sort users to make sure it matches
+ if ($includePaths) {
+ ksort($result);
+ } else {
+ sort($result['users']);
+ }
+
+ $this->assertEquals(
+ $expectedResult,
+ $result
+ );
+ }
+
+ public function dataProviderGetUsersSharingFile() {
+ // note: "group" contains user1 (the owner), user2 and user3
+ // and self::TEST_FILES_SHARING_API_GROUP1 contains only user2
+ return [
+ // share with group that contains owner
+ [
+ 'group',
+ false,
+ false,
+ [
+ 'users' =>
+ [
+ // because user1 was in group
+ self::TEST_FILES_SHARING_API_USER1,
+ self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3,
+ ],
+ 'public' => true,
+ 'remote' => false,
+ ],
+ ],
+ // share with group that does not contain owner
+ [
+ self::TEST_FILES_SHARING_API_GROUP1,
+ false,
+ false,
+ [
+ 'users' =>
+ [
+ self::TEST_FILES_SHARING_API_USER2,
+ ],
+ 'public' => true,
+ 'remote' => false,
+ ],
+ ],
+ // share with group that does not contain owner, include owner
+ [
+ self::TEST_FILES_SHARING_API_GROUP1,
+ true,
+ false,
+ [
+ 'users' =>
+ [
+ self::TEST_FILES_SHARING_API_USER1,
+ self::TEST_FILES_SHARING_API_USER2,
+ ],
+ 'public' => true,
+ 'remote' => false,
+ ],
+ ],
+ // include paths, with owner
+ [
+ 'group',
+ true,
+ true,
+ [
+ self::TEST_FILES_SHARING_API_USER1 => self::TEST_FOLDER_NAME . '_owner_renamed',
+ self::TEST_FILES_SHARING_API_USER2 => self::TEST_FOLDER_NAME . '_renamed',
+ self::TEST_FILES_SHARING_API_USER3 => self::TEST_FOLDER_NAME,
+ ],
+ ],
+ // include paths, group without owner
+ [
+ self::TEST_FILES_SHARING_API_GROUP1,
+ false,
+ true,
+ [
+ self::TEST_FILES_SHARING_API_USER2 => self::TEST_FOLDER_NAME. '_renamed',
+ ],
+ ],
+ // include paths, include owner, group without owner
+ [
+ self::TEST_FILES_SHARING_API_GROUP1,
+ true,
+ true,
+ [
+ self::TEST_FILES_SHARING_API_USER1 => self::TEST_FOLDER_NAME . '_owner_renamed',
+ self::TEST_FILES_SHARING_API_USER2 => self::TEST_FOLDER_NAME . '_renamed',
+ ],
+ ],
+ ];
+ }
+
}