/** * @dataProvider providesReadOnlyInfo */ public function testAcl($expectsWrite, $readOnlyValue, $hasOwnerSet) { /** @var \PHPUnit_Framework_MockObject_MockObject | CardDavBackend $backend */ $backend = $this->getMockBuilder('OCA\\DAV\\CardDAV\\CardDavBackend')->disableOriginalConstructor()->getMock(); $backend->expects($this->any())->method('applyShareAcl')->willReturnArgument(1); $calendarInfo = ['principaluri' => 'user2', 'id' => 666, 'uri' => 'default']; if (!is_null($readOnlyValue)) { $calendarInfo['{http://owncloud.org/ns}read-only'] = $readOnlyValue; } if ($hasOwnerSet) { $calendarInfo['{http://owncloud.org/ns}owner-principal'] = 'user1'; } $c = new AddressBook($backend, $calendarInfo); $acl = $c->getACL(); $childAcl = $c->getChildACL(); $expectedAcl = [['privilege' => '{DAV:}read', 'principal' => $hasOwnerSet ? 'user1' : 'user2', 'protected' => true], ['privilege' => '{DAV:}write', 'principal' => $hasOwnerSet ? 'user1' : 'user2', 'protected' => true]]; if ($hasOwnerSet) { $expectedAcl[] = ['privilege' => '{DAV:}read', 'principal' => 'user2', 'protected' => true]; if ($expectsWrite) { $expectedAcl[] = ['privilege' => '{DAV:}write', 'principal' => 'user2', 'protected' => true]; } } $this->assertEquals($expectedAcl, $acl); $this->assertEquals($expectedAcl, $childAcl); }
/** * @return mixed * @since 5.0.0 */ public function getPermissions() { $permissions = $this->addressBook->getACL(); $result = 0; foreach ($permissions as $permission) { switch ($permission['privilege']) { case '{DAV:}read': $result |= Constants::PERMISSION_READ; break; case '{DAV:}write': $result |= Constants::PERMISSION_CREATE; $result |= Constants::PERMISSION_UPDATE; break; case '{DAV:}all': $result |= Constants::PERMISSION_ALL; break; } } return $result; }