diff options
author | Georg Ehrke <developer@georgehrke.com> | 2018-10-14 12:48:42 +0200 |
---|---|---|
committer | Georg Ehrke <developer@georgehrke.com> | 2018-10-16 20:27:33 +0200 |
commit | f5dc7b7f0748f7e5b2f3816d53b374e7d9857a2b (patch) | |
tree | c327aa1de7485e22892707a114b5f89a9e0f4b69 /apps/dav/tests | |
parent | 1ce86722763ac2c3aa299de67955005024e3ee5c (diff) | |
download | nextcloud-server-f5dc7b7f0748f7e5b2f3816d53b374e7d9857a2b.tar.gz nextcloud-server-f5dc7b7f0748f7e5b2f3816d53b374e7d9857a2b.zip |
move disableFreeBusy check from User principal backend to Scheduling Outbox collection. This allows to keep local delivery of scheduling messages while prohibiting FreeBusy requests
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
Diffstat (limited to 'apps/dav/tests')
-rw-r--r-- | apps/dav/tests/unit/CalDAV/OutboxTest.php | 123 | ||||
-rw-r--r-- | apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php | 139 |
2 files changed, 164 insertions, 98 deletions
diff --git a/apps/dav/tests/unit/CalDAV/OutboxTest.php b/apps/dav/tests/unit/CalDAV/OutboxTest.php new file mode 100644 index 00000000000..be5dc33fc61 --- /dev/null +++ b/apps/dav/tests/unit/CalDAV/OutboxTest.php @@ -0,0 +1,123 @@ +<?php +/** + * @copyright Copyright (c) 2018, Georg Ehrke + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\DAV\Tests\unit\CalDAV; + +use OCA\DAV\CalDAV\Outbox; +use OCP\IConfig; +use Test\TestCase; + +class OutboxTest extends TestCase { + + /** @var IConfig */ + private $config; + + /** @var Outbox */ + private $outbox; + + protected function setUp() { + parent::setUp(); + + $this->config = $this->createMock(IConfig::class); + $this->outbox = new Outbox($this->config, 'user-principal-123'); + } + + public function testGetACLFreeBusyEnabled() { + $this->config->expects($this->once()) + ->method('getAppValue') + ->with('dav', 'disableFreeBusy', 'no') + ->will($this->returnValue('no')); + + $this->assertEquals([ + [ + 'privilege' => '{DAV:}read', + 'principal' => 'user-principal-123', + 'protected' => true, + ], + [ + 'privilege' => '{DAV:}read', + 'principal' => 'user-principal-123/calendar-proxy-read', + 'protected' => true, + ], + [ + 'privilege' => '{DAV:}read', + 'principal' => 'user-principal-123/calendar-proxy-write', + 'protected' => true, + ], + [ + 'privilege' => '{urn:ietf:params:xml:ns:caldav}schedule-send', + 'principal' => 'user-principal-123', + 'protected' => true, + ], + [ + 'privilege' => '{urn:ietf:params:xml:ns:caldav}schedule-send', + 'principal' => 'user-principal-123/calendar-proxy-write', + 'protected' => true, + ], + ], $this->outbox->getACL()); + } + + public function testGetACLFreeBusyDisabled() { + $this->config->expects($this->once()) + ->method('getAppValue') + ->with('dav', 'disableFreeBusy', 'no') + ->will($this->returnValue('yes')); + + $this->assertEquals([ + [ + 'privilege' => '{DAV:}read', + 'principal' => 'user-principal-123', + 'protected' => true, + ], + [ + 'privilege' => '{DAV:}read', + 'principal' => 'user-principal-123/calendar-proxy-read', + 'protected' => true, + ], + [ + 'privilege' => '{DAV:}read', + 'principal' => 'user-principal-123/calendar-proxy-write', + 'protected' => true, + ], + [ + 'privilege' => '{urn:ietf:params:xml:ns:caldav}schedule-send-invite', + 'principal' => 'user-principal-123', + 'protected' => true, + ], + [ + 'privilege' => '{urn:ietf:params:xml:ns:caldav}schedule-send-invite', + 'principal' => 'user-principal-123/calendar-proxy-write', + 'protected' => true, + ], + [ + 'privilege' => '{urn:ietf:params:xml:ns:caldav}schedule-send-reply', + 'principal' => 'user-principal-123', + 'protected' => true, + ], + [ + 'privilege' => '{urn:ietf:params:xml:ns:caldav}schedule-send-reply', + 'principal' => 'user-principal-123/calendar-proxy-write', + 'protected' => true, + ], + ], $this->outbox->getACL()); + } +} diff --git a/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php b/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php index 7e82c446760..01907c85836 100644 --- a/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php @@ -283,37 +283,26 @@ class PrincipalTest extends TestCase { /** * @dataProvider searchPrincipalsDataProvider */ - public function testSearchPrincipals($disableFreeBusy, $sharingEnabled, $disableFBSharingCombination, $groupsOnly, $result) { + public function testSearchPrincipals($sharingEnabled, $groupsOnly, $result) { $this->shareManager->expects($this->once()) ->method('shareAPIEnabled') ->will($this->returnValue($sharingEnabled)); - $this->config->expects($this->once()) - ->method('getAppValue') - ->with('dav', 'disableFreeBusy', $sharingEnabled ? 'no' : 'yes') - ->will($this->returnValue($disableFBSharingCombination)); - - if ($disableFreeBusy === 'no') { - if ($sharingEnabled) { - $this->shareManager->expects($this->once()) - ->method('shareWithGroupMembersOnly') - ->will($this->returnValue($groupsOnly)); - - if ($groupsOnly) { - $user = $this->createMock(IUser::class); - $this->userSession->expects($this->once()) - ->method('getUser') - ->will($this->returnValue($user)); - - $this->groupManager->expects($this->at(0)) - ->method('getUserGroupIds') - ->with($user) - ->will($this->returnValue(['group1', 'group2'])); - } - } else { - $this->shareManager->expects($this->never()) - ->method('shareWithGroupMembersOnly'); - $this->groupManager->expects($this->never()) - ->method($this->anything()); + + if ($sharingEnabled) { + $this->shareManager->expects($this->once()) + ->method('shareWithGroupMembersOnly') + ->will($this->returnValue($groupsOnly)); + + if ($groupsOnly) { + $user = $this->createMock(IUser::class); + $this->userSession->expects($this->once()) + ->method('getUser') + ->will($this->returnValue($user)); + + $this->groupManager->expects($this->at(0)) + ->method('getUserGroupIds') + ->with($user) + ->will($this->returnValue(['group1', 'group2'])); } } else { $this->shareManager->expects($this->never()) @@ -322,57 +311,42 @@ class PrincipalTest extends TestCase { ->method($this->anything()); } - $user2 = $this->createMock(IUser::class); $user2->method('getUID')->will($this->returnValue('user2')); $user3 = $this->createMock(IUser::class); $user3->method('getUID')->will($this->returnValue('user3')); - if ($disableFreeBusy === 'no') { - if ($sharingEnabled) { - $this->userManager->expects($this->at(0)) - ->method('getByEmail') - ->with('user') - ->will($this->returnValue([$user2, $user3])); - } else { - $this->userManager->expects($this->never()) - ->method('getByEmail'); - } + if ($sharingEnabled) { + $this->userManager->expects($this->at(0)) + ->method('getByEmail') + ->with('user') + ->will($this->returnValue([$user2, $user3])); } else { $this->userManager->expects($this->never()) ->method('getByEmail'); } - if ($disableFreeBusy === 'no') { - if ($sharingEnabled && $groupsOnly) { - $this->groupManager->expects($this->at(1)) - ->method('getUserGroupIds') - ->with($user2) - ->will($this->returnValue(['group1', 'group3'])); - $this->groupManager->expects($this->at(2)) - ->method('getUserGroupIds') - ->with($user3) - ->will($this->returnValue(['group3', 'group4'])); - } - } else { - $this->groupManager->expects($this->never()) - ->method('getUserGroupIds'); - $this->groupManager->expects($this->never()) - ->method('getUserGroupIds'); + if ($sharingEnabled && $groupsOnly) { + $this->groupManager->expects($this->at(1)) + ->method('getUserGroupIds') + ->with($user2) + ->will($this->returnValue(['group1', 'group3'])); + $this->groupManager->expects($this->at(2)) + ->method('getUserGroupIds') + ->with($user3) + ->will($this->returnValue(['group3', 'group4'])); } + $this->assertEquals($result, $this->connector->searchPrincipals('principals/users', ['{http://sabredav.org/ns}email-address' => 'user'])); } public function searchPrincipalsDataProvider() { return [ - ['yes', true, 'yes', false, []], - ['no', true, 'no', false, ['principals/users/user2', 'principals/users/user3']], - ['yes', true, 'yes', true, []], - ['no', true, 'no', true, ['principals/users/user2']], - ['yes', false, 'yes', false, []], - ['no', false, 'yes', false, []], + [true, false, ['principals/users/user2', 'principals/users/user3']], + [true, true, ['principals/users/user2']], + [false, false, []], ]; } @@ -380,10 +354,6 @@ class PrincipalTest extends TestCase { $this->shareManager->expects($this->once()) ->method('shareApiEnabled') ->will($this->returnValue(false)); - $this->config->expects($this->once()) - ->method('getAppValue') - ->with('dav', 'disableFreeBusy', 'yes') - ->will($this->returnValue('yes')); $this->assertEquals(null, $this->connector->findByUri('mailto:user@foo.com', 'principals/users')); } @@ -391,21 +361,11 @@ class PrincipalTest extends TestCase { /** * @dataProvider findByUriWithGroupRestrictionDataProvider */ - public function testFindByUriWithGroupRestriction($disableFreeBusy, $uri, $email, $expects) { + public function testFindByUriWithGroupRestriction($uri, $email, $expects) { $this->shareManager->expects($this->once()) ->method('shareApiEnabled') ->will($this->returnValue(true)); - $this->config->expects($this->once()) - ->method('getAppValue') - ->with('dav', 'disableFreeBusy', 'no') - ->will($this->returnValue($disableFreeBusy)); - if ($disableFreeBusy === 'yes') { - $this->shareManager->expects($this->never()) - ->method('shareWithGroupMembersOnly'); - $this->userSession->expects($this->never()) - ->method('getUser'); - } else { $this->shareManager->expects($this->once()) ->method('shareWithGroupMembersOnly') ->will($this->returnValue(true)); @@ -441,39 +401,25 @@ class PrincipalTest extends TestCase { ->with($user3) ->will($this->returnValue(['group3', 'group3'])); } - } $this->assertEquals($expects, $this->connector->findByUri($uri, 'principals/users')); } public function findByUriWithGroupRestrictionDataProvider() { return [ - ['yes', 'mailto:user2@foo.bar', 'user2@foo.bar', null], - ['no', 'mailto:user2@foo.bar', 'user2@foo.bar', 'principals/users/user2'], - ['yes', 'mailto:user3@foo.bar', 'user3@foo.bar', null], - ['no', 'mailto:user3@foo.bar', 'user3@foo.bar', null], + ['mailto:user2@foo.bar', 'user2@foo.bar', 'principals/users/user2'], + ['mailto:user3@foo.bar', 'user3@foo.bar', null], ]; } /** * @dataProvider findByUriWithoutGroupRestrictionDataProvider */ - public function testFindByUriWithoutGroupRestriction($disableFreeBusy, $uri, $email, $expects) { + public function testFindByUriWithoutGroupRestriction($uri, $email, $expects) { $this->shareManager->expects($this->once()) ->method('shareApiEnabled') ->will($this->returnValue(true)); - $this->config->expects($this->once()) - ->method('getAppValue') - ->with('dav', 'disableFreeBusy', 'no') - ->will($this->returnValue($disableFreeBusy)); - - if ($disableFreeBusy === 'yes') { - $this->shareManager->expects($this->never()) - ->method('shareWithGroupMembersOnly'); - $this->userManager->expects($this->never()) - ->method('getByEmail'); - } else { $this->shareManager->expects($this->once()) ->method('shareWithGroupMembersOnly') ->will($this->returnValue(false)); @@ -487,17 +433,14 @@ class PrincipalTest extends TestCase { ->method('getByEmail') ->with($email) ->will($this->returnValue([$email === 'user2@foo.bar' ? $user2 : $user3])); - } $this->assertEquals($expects, $this->connector->findByUri($uri, 'principals/users')); } public function findByUriWithoutGroupRestrictionDataProvider() { return [ - ['yes', 'mailto:user2@foo.bar', 'user2@foo.bar', null], - ['yes', 'mailto:user3@foo.bar', 'user3@foo.bar', null], - ['no', 'mailto:user2@foo.bar', 'user2@foo.bar', 'principals/users/user2'], - ['no', 'mailto:user3@foo.bar', 'user3@foo.bar', 'principals/users/user3'], + ['mailto:user2@foo.bar', 'user2@foo.bar', 'principals/users/user2'], + ['mailto:user3@foo.bar', 'user3@foo.bar', 'principals/users/user3'], ]; } } |