]> source.dussan.org Git - nextcloud-server.git/commitdiff
Relax rootfolder check
authorRoeland Jago Douma <rullzer@owncloud.com>
Fri, 26 Feb 2016 15:05:32 +0000 (16:05 +0100)
committerRoeland Jago Douma <rullzer@owncloud.com>
Fri, 26 Feb 2016 15:05:32 +0000 (16:05 +0100)
* Updated unit tests
* Added intergration test

build/integration/features/sharing-v1.feature
lib/private/share20/manager.php
tests/lib/share20/managertest.php

index 462915cf5ba0dcffb832e1c366530dc5cbcdddfd..bfd52ec66052bb49362fccacb3c860e06a5cd2fb 100644 (file)
@@ -513,4 +513,16 @@ Feature: sharing
     When creating a share with
       | path | / |
       | shareType | 3 |
-    Then the OCS status code should be "403"
\ No newline at end of file
+    Then the OCS status code should be "403"
+
+  Scenario: Allow modification of reshare
+    Given user "user0" exists
+    And user "user1" exists
+    And user "user2" exists
+    And user "user0" created a folder "/TMP"
+    And file "TMP" of user "user0" is shared with user "user1"
+    And file "TMP" of user "user1" is shared with user "user2"
+    And As an "user1"
+    When Updating last share with
+      | permissions | 1 |
+    Then the OCS status code should be "100"
index 6932360a7e910cabf6c3d036b0a612be4f1e1d4e..edcab8ab98767fe153e199a2d6b7c8124e559847 100644 (file)
@@ -198,7 +198,7 @@ class Manager implements IManager {
                }
 
                // And you can't share your rootfolder
-               if ($this->rootFolder->getUserFolder($share->getSharedBy())->isSubNode($share->getNode()) === false) {
+               if ($this->rootFolder->getUserFolder($share->getSharedBy())->getPath() === $share->getNode()->getPath()) {
                        throw new \InvalidArgumentException('You can\'t share your root folder');
                }
 
index 2c40bf65c2c2bf342033a46afdf17afa374807fd..27444d90356b10e94444ef3f8596af4f01610328 100644 (file)
@@ -644,6 +644,15 @@ class ManagerTest extends \Test\TestCase {
                $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $limitedPermssions, $group0, $user0, $user0, 17, null, null), 'Cannot increase permissions of path', true];
                $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK,  $limitedPermssions, null, $user0, $user0, 3, null, null), 'Cannot increase permissions of path', true];
 
+               $rootFolder = $this->getMock('\OCP\Files\Folder');
+               $rootFolder->method('isShareable')->willReturn(true);
+               $rootFolder->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
+               $rootFolder->method('getPath')->willReturn('myrootfolder');
+
+               $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER,  $rootFolder, $user2, $user0, $user0, 30, null, null), 'You can\'t share your root folder', true];
+               $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $rootFolder, $group0, $user0, $user0, 2, null, null), 'You can\'t share your root folder', true];
+               $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK,  $rootFolder, null, $user0, $user0, 16, null, null), 'You can\'t share your root folder', true];
+
                $allPermssions = $this->getMock('\OCP\Files\Folder');
                $allPermssions->method('isShareable')->willReturn(true);
                $allPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
@@ -678,8 +687,10 @@ class ManagerTest extends \Test\TestCase {
                ]));
 
                $userFolder = $this->getMock('\OCP\Files\Folder');
+               $userFolder->method('getPath')->willReturn('myrootfolder');
                $this->rootFolder->method('getUserFolder')->willReturn($userFolder);
 
+
                try {
                        $this->invokePrivate($this->manager, 'generalCreateChecks', [$share]);
                        $thrown = false;