summaryrefslogtreecommitdiffstats
path: root/apps/dav/tests/unit
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-03-24 12:47:18 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-03-24 12:47:18 +0100
commit3d51682440f90523294ee9f5b94e832e29c8eb5e (patch)
tree8521ddccd7868961fe8426c74243bcfec599263d /apps/dav/tests/unit
parent789df4d63041d5ffb46f71e33172dd42450b4bc8 (diff)
parent06e8c70400dd6e3e1c153c4258eba0357c502a7f (diff)
downloadnextcloud-server-3d51682440f90523294ee9f5b94e832e29c8eb5e.tar.gz
nextcloud-server-3d51682440f90523294ee9f5b94e832e29c8eb5e.zip
Merge pull request #23342 from owncloud/fix-group-sharing-for-v1-caldav-and-carddav
Fix group shares on v1 caldav and carddav
Diffstat (limited to 'apps/dav/tests/unit')
-rw-r--r--apps/dav/tests/unit/caldav/calendartest.php60
-rw-r--r--apps/dav/tests/unit/carddav/addressbooktest.php65
2 files changed, 122 insertions, 3 deletions
diff --git a/apps/dav/tests/unit/caldav/calendartest.php b/apps/dav/tests/unit/caldav/calendartest.php
index e7f4d57067c..9e0c3c6c7e4 100644
--- a/apps/dav/tests/unit/caldav/calendartest.php
+++ b/apps/dav/tests/unit/caldav/calendartest.php
@@ -103,4 +103,64 @@ class CalendarTest extends TestCase {
$this->assertTrue(true);
}
}
+
+ /**
+ * @dataProvider providesReadOnlyInfo
+ */
+ public function testAcl($expectsWrite, $readOnlyValue, $hasOwnerSet) {
+ /** @var \PHPUnit_Framework_MockObject_MockObject | CalDavBackend $backend */
+ $backend = $this->getMockBuilder('OCA\DAV\CalDAV\CalDavBackend')->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 Calendar($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);
+ }
+
+ public function providesReadOnlyInfo() {
+ return [
+ 'read-only property not set' => [true, null, true],
+ 'read-only property is false' => [true, false, true],
+ 'read-only property is true' => [false, true, true],
+ 'read-only property not set and no owner' => [true, null, false],
+ 'read-only property is false and no owner' => [true, false, false],
+ 'read-only property is true and no owner' => [false, true, false],
+ ];
+ }
}
diff --git a/apps/dav/tests/unit/carddav/addressbooktest.php b/apps/dav/tests/unit/carddav/addressbooktest.php
index 854c121a95d..c5cf7e5f7ba 100644
--- a/apps/dav/tests/unit/carddav/addressbooktest.php
+++ b/apps/dav/tests/unit/carddav/addressbooktest.php
@@ -32,7 +32,7 @@ class AddressBookTest extends TestCase {
/** @var \PHPUnit_Framework_MockObject_MockObject | CardDavBackend $backend */
$backend = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend')->disableOriginalConstructor()->getMock();
$backend->expects($this->once())->method('updateShares');
- $backend->method('getShares')->willReturn([
+ $backend->expects($this->any())->method('getShares')->willReturn([
['href' => 'principal:user2']
]);
$calendarInfo = [
@@ -51,7 +51,7 @@ class AddressBookTest extends TestCase {
/** @var \PHPUnit_Framework_MockObject_MockObject | CardDavBackend $backend */
$backend = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend')->disableOriginalConstructor()->getMock();
$backend->expects($this->never())->method('updateShares');
- $backend->method('getShares')->willReturn([
+ $backend->expects($this->any())->method('getShares')->willReturn([
['href' => 'principal:group2']
]);
$calendarInfo = [
@@ -77,4 +77,63 @@ class AddressBookTest extends TestCase {
$c = new AddressBook($backend, $calendarInfo);
$c->propPatch(new PropPatch([]));
}
-}
+
+ /**
+ * @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);
+ }
+
+ public function providesReadOnlyInfo() {
+ return [
+ 'read-only property not set' => [true, null, true],
+ 'read-only property is false' => [true, false, true],
+ 'read-only property is true' => [false, true, true],
+ 'read-only property not set and no owner' => [true, null, false],
+ 'read-only property is false and no owner' => [true, false, false],
+ 'read-only property is true and no owner' => [false, true, false],
+ ];
+ }}