}
}
- public function testUpdateShareCannotIncreasePermissionsLinkShare() {
- $ocs = $this->mockFormatShare();
-
- $folder = $this->createMock(Folder::class);
- $folder->method('getId')
- ->willReturn(42);
-
- $share = \OC::$server->getShareManager()->newShare();
- $share
- ->setId(42)
- ->setSharedBy($this->currentUser)
- ->setShareOwner('anotheruser')
- ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
- ->setPermissions(\OCP\Constants::PERMISSION_READ)
- ->setNode($folder);
-
- // note: updateShare will modify the received instance but getSharedWith will reread from the database,
- // so their values will be different
- $incomingShare = \OC::$server->getShareManager()->newShare();
- $incomingShare
- ->setId(42)
- ->setSharedBy($this->currentUser)
- ->setShareOwner('anotheruser')
- ->setShareType(\OCP\Share::SHARE_TYPE_USER)
- ->setSharedWith('currentUser')
- ->setPermissions(\OCP\Constants::PERMISSION_READ)
- ->setNode($folder);
-
- $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
-
- $this->shareManager->expects($this->any())
- ->method('getSharedWith')
- ->will($this->returnValueMap([
- ['currentUser', \OCP\Share::SHARE_TYPE_USER, $share->getNode(), -1, 0, [$incomingShare]],
- ['currentUser', \OCP\Share::SHARE_TYPE_GROUP, $share->getNode(), -1, 0, []],
- ['currentUser', \OCP\Share::SHARE_TYPE_ROOM, $share->getNode(), -1, 0, []]
- ]));
-
- $userFolder = $this->createMock(Folder::class);
- $this->rootFolder->method('getUserFolder')
- ->with($this->currentUser)
- ->willReturn($userFolder);
-
- $userFolder->method('getById')
- ->with(42)
- ->willReturn([$folder]);
-
- $mountPoint = $this->createMock(IMountPoint::class);
- $folder->method('getMountPoint')
- ->willReturn($mountPoint);
- $mountPoint->method('getStorageRootId')
- ->willReturn(42);
-
- $this->shareManager->expects($this->never())->method('updateShare');
- $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
-
- try {
- $ocs->updateShare(42, null, null, null, 'true');
- $this->fail();
- } catch (OCSNotFoundException $e) {
- $this->assertEquals('Cannot increase permissions', $e->getMessage());
- }
- }
-
- public function testUpdateShareCannotIncreasePermissionsRoomShare() {
- $ocs = $this->mockFormatShare();
-
- $folder = $this->createMock(Folder::class);
- $folder->method('getId')
- ->willReturn(42);
-
- $share = \OC::$server->getShareManager()->newShare();
- $share
- ->setId(42)
- ->setSharedBy($this->currentUser)
- ->setShareOwner('anotheruser')
- ->setShareType(\OCP\Share::SHARE_TYPE_ROOM)
- ->setSharedWith('group1')
- ->setPermissions(\OCP\Constants::PERMISSION_READ)
- ->setNode($folder);
-
- // note: updateShare will modify the received instance but getSharedWith will reread from the database,
- // so their values will be different
- $incomingShare = \OC::$server->getShareManager()->newShare();
- $incomingShare
- ->setId(42)
- ->setSharedBy($this->currentUser)
- ->setShareOwner('anotheruser')
- ->setShareType(\OCP\Share::SHARE_TYPE_ROOM)
- ->setSharedWith('group1')
- ->setPermissions(\OCP\Constants::PERMISSION_READ)
- ->setNode($folder);
-
- $this->request
- ->method('getParam')
- ->will($this->returnValueMap([
- ['permissions', null, '31'],
- ]));
-
- $this->shareManager
- ->method('getShareById')
- ->will($this->returnCallback(
- function ($id) use ($share) {
- if ($id !== 'ocRoomShare:42') {
- throw new \OCP\Share\Exceptions\ShareNotFound();
- }
-
- return $share;
- }
- ));
-
- $userFolder = $this->createMock(Folder::class);
- $this->rootFolder->method('getUserFolder')
- ->with($this->currentUser)
- ->willReturn($userFolder);
-
- $userFolder->method('getById')
- ->with(42)
- ->willReturn([$folder]);
-
- $mountPoint = $this->createMock(IMountPoint::class);
- $folder->method('getMountPoint')
- ->willReturn($mountPoint);
- $mountPoint->method('getStorageRootId')
- ->willReturn(42);
-
- $this->shareManager->expects($this->any())
- ->method('getSharedWith')
- ->will($this->returnValueMap([
- ['currentUser', \OCP\Share::SHARE_TYPE_USER, $share->getNode(), -1, 0, []],
- ['currentUser', \OCP\Share::SHARE_TYPE_GROUP, $share->getNode(), -1, 0, []],
- ['currentUser', \OCP\Share::SHARE_TYPE_ROOM, $share->getNode(), -1, 0, [$incomingShare]]
- ]));
-
- $this->shareManager->expects($this->never())->method('updateShare');
-
- try {
- $ocs->updateShare(42, 31);
- $this->fail();
- } catch (OCSNotFoundException $e) {
- $this->assertEquals('Cannot increase permissions', $e->getMessage());
- }
- }
-
public function testUpdateShareCanIncreasePermissionsIfOwner() {
$ocs = $this->mockFormatShare();