diff options
author | Vincent Petry <pvince81@owncloud.com> | 2016-11-22 14:07:45 +0300 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2016-11-24 20:35:59 +0300 |
commit | ba2d6def756da776e37121ff4334a1e23bb15abf (patch) | |
tree | 52004134a4648587c6320ed40789476d442168f5 /apps | |
parent | ee6fb9d69987b955e464f2b7a54502f59421985c (diff) |
Correctly convert OCS permissions params
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_sharing/lib/API/Share20OCS.php | 1 | ||||
-rw-r--r-- | apps/files_sharing/tests/API/Share20OCSTest.php | 57 |
2 files changed, 58 insertions, 0 deletions
diff --git a/apps/files_sharing/lib/API/Share20OCS.php b/apps/files_sharing/lib/API/Share20OCS.php index 3372e5f2cb2..62aa24ba471 100644 --- a/apps/files_sharing/lib/API/Share20OCS.php +++ b/apps/files_sharing/lib/API/Share20OCS.php @@ -634,6 +634,7 @@ class Share20OCS { if ($newPermissions !== null) { $share->setPermissions($newPermissions); + $permissions = $newPermissions; } if ($expireDate === '') { diff --git a/apps/files_sharing/tests/API/Share20OCSTest.php b/apps/files_sharing/tests/API/Share20OCSTest.php index 27ea30860b5..a0a8a4f64f7 100644 --- a/apps/files_sharing/tests/API/Share20OCSTest.php +++ b/apps/files_sharing/tests/API/Share20OCSTest.php @@ -1301,6 +1301,7 @@ class Share20OCSTest extends \Test\TestCase { $share = $this->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) ->setSharedBy($this->currentUser->getUID()) + ->setShareOwner($this->currentUser->getUID()) ->setShareType(\OCP\Share::SHARE_TYPE_LINK) ->setPassword('password') ->setExpirationDate(new \DateTime()) @@ -1347,6 +1348,7 @@ class Share20OCSTest extends \Test\TestCase { $share = \OC::$server->getShareManager()->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) ->setSharedBy($this->currentUser->getUID()) + ->setShareOwner($this->currentUser->getUID()) ->setShareType(\OCP\Share::SHARE_TYPE_LINK) ->setNode($folder); @@ -1390,6 +1392,7 @@ class Share20OCSTest extends \Test\TestCase { $share = \OC::$server->getShareManager()->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) ->setSharedBy($this->currentUser->getUID()) + ->setShareOwner($this->currentUser->getUID()) ->setShareType(\OCP\Share::SHARE_TYPE_LINK) ->setPassword('password') ->setNode($folder); @@ -1625,6 +1628,7 @@ class Share20OCSTest extends \Test\TestCase { $share = \OC::$server->getShareManager()->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) ->setSharedBy($this->currentUser->getUID()) + ->setShareOwner($this->currentUser->getUID()) ->setShareType(\OCP\Share::SHARE_TYPE_LINK) ->setPassword('password') ->setExpirationDate($date) @@ -1817,6 +1821,59 @@ class Share20OCSTest extends \Test\TestCase { $this->assertEquals($expected->getData(), $result->getData()); } + /** + * @dataProvider publicUploadParamsProvider + */ + public function testUpdateShareCannotIncreasePermissionsPublicLink($params) { + $ocs = $this->mockFormatShare(); + + $date = new \DateTime('2000-01-01'); + + $folder = $this->getMock('\OCP\Files\Folder'); + + $share = \OC::$server->getShareManager()->newShare(); + $share + ->setId(42) + ->setSharedBy('anotheruser') + ->setShareOwner('anotheruser') + ->setShareType(\OCP\Share::SHARE_TYPE_USER) + ->setSharedWith($this->currentUser->getUID()) + ->setPermissions(\OCP\Constants::PERMISSION_READ) + ->setNode($folder); + + $linkShare = \OC::$server->getShareManager()->newShare(); + $linkShare + ->setId(43) + ->setSharedBy($this->currentUser->getUID()) + ->setShareOwner('anotheruser') + ->setShareType(\OCP\Share::SHARE_TYPE_LINK) + ->setToken('dummy') + ->setPermissions(\OCP\Constants::PERMISSION_READ) + ->setNode($folder); + + $this->request + ->method('getParam') + ->will($this->returnValueMap($params)); + + $this->shareManager->method('getShareById')->with('ocinternal:43')->willReturn($linkShare); + $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true); + + $this->shareManager->expects($this->any()) + ->method('getSharedWith') + ->will($this->returnValueMap([ + [$this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_USER, $share->getNode(), -1, 0, [$share]], + [$this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_GROUP, $share->getNode(), -1, 0, []], + ])); + + $this->shareManager->expects($this->never())->method('updateShare'); + + $expected = new \OC\OCS\Result(null, 404, 'Cannot increase permissions'); + $result = $ocs->updateShare(43); + + $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertEquals($expected->getData(), $result->getData()); + } + public function testUpdateShareCanIncreasePermissionsIfOwner() { $ocs = $this->mockFormatShare(); |