Relax rootfolder check

* Updated unit tests
* Added intergration test
remotes/origin/s3patch
Roeland Jago Douma 2016-02-26 16:05:32 +07:00
parent 5fa6d3ea58
commit b116e80c56
3 changed files with 25 additions and 2 deletions

@ -513,4 +513,16 @@ Feature: sharing
When creating a share with
| path | / |
| shareType | 3 |
Then the OCS status code should be "403"
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"

@ -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');
}

@ -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;