Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2016-11-22 14:07:45 +0300
committerVincent Petry <pvince81@owncloud.com>2016-11-24 20:35:59 +0300
commitba2d6def756da776e37121ff4334a1e23bb15abf (patch)
tree52004134a4648587c6320ed40789476d442168f5 /apps
parentee6fb9d69987b955e464f2b7a54502f59421985c (diff)
Correctly convert OCS permissions params
Diffstat (limited to 'apps')
-rw-r--r--apps/files_sharing/lib/API/Share20OCS.php1
-rw-r--r--apps/files_sharing/tests/API/Share20OCSTest.php57
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();