diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2018-04-23 13:54:58 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2018-05-27 20:51:36 +0200 |
commit | 69e650d0e8d0ea38724d0d4afc16683403dad6e0 (patch) | |
tree | dd1a35c2025de86f81a042c551e844e8aa2692d3 | |
parent | 240006bdf517df0a72d52efb285fdf9cf8b58d35 (diff) | |
download | nextcloud-server-69e650d0e8d0ea38724d0d4afc16683403dad6e0.tar.gz nextcloud-server-69e650d0e8d0ea38724d0d4afc16683403dad6e0.zip |
CalDAV and CardDAV plugins need to be registered for the principals collection as well
https://github.com/owncloud/core/pull/30149/commits/9f2e6431b88a9635b291b0e824abf74ba766616d
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
-rw-r--r-- | apps/dav/lib/Server.php | 22 | ||||
-rw-r--r-- | apps/dav/tests/unit/ServerTest.php | 22 |
2 files changed, 29 insertions, 15 deletions
diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index ae8e2927fe2..82978711156 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -71,7 +71,7 @@ class Server { private $baseUri; /** @var Connector\Sabre\Server */ - private $server; + public $server; public function __construct(IRequest $request, $baseUri) { $this->request = $request; @@ -136,7 +136,7 @@ class Server { $this->server->addPlugin($acl); // calendar plugins - if ($this->requestIsForSubtree('calendars')) { + if ($this->requestIsForSubtree(['calendars', 'principals'])) { $this->server->addPlugin(new \OCA\DAV\CalDAV\Plugin()); $this->server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin()); $this->server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin()); @@ -153,7 +153,8 @@ class Server { } // addressbook plugins - if ($this->requestIsForSubtree('addressbooks')) { + if ($this->requestIsForSubtree(['addressbooks', 'principals'])) { + $this->server->addPlugin(new DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest())); $this->server->addPlugin(new \OCA\DAV\CardDAV\Plugin()); $this->server->addPlugin(new VCFExportPlugin()); $this->server->addPlugin(new ImageExportPlugin(new PhotoCache(\OC::$server->getAppDataDir('dav-photocache')))); @@ -284,12 +285,13 @@ class Server { $this->server->exec(); } - /** - * @param string $subTree - * @return bool - */ - private function requestIsForSubtree($subTree) { - $subTree = trim($subTree, " /"); - return strpos($this->server->getRequestUri(), "$subTree/") === 0; + private function requestIsForSubtree(array $subTrees): bool { + foreach ($subTrees as $subTree) { + $subTree = trim($subTree, ' /'); + if (strpos($this->server->getRequestUri(), $subTree.'/') === 0) { + return true; + } + } + return false; } } diff --git a/apps/dav/tests/unit/ServerTest.php b/apps/dav/tests/unit/ServerTest.php index 58c77c1b0ec..986899a2107 100644 --- a/apps/dav/tests/unit/ServerTest.php +++ b/apps/dav/tests/unit/ServerTest.php @@ -38,12 +38,24 @@ use OCA\DAV\AppInfo\PluginManager; */ class ServerTest extends \Test\TestCase { - public function test() { - /** @var IRequest $r */ + /** + * @dataProvider providesUris + */ + public function test($uri, array $plugins) { + /** @var IRequest | \PHPUnit_Framework_MockObject_MockObject $r */ $r = $this->createMock(IRequest::class); - $r->method('getRequestUri') - ->willReturn('/'); + $r->expects($this->any())->method('getRequestUri')->willReturn($uri); $s = new Server($r, '/'); - $this->assertInstanceOf('OCA\DAV\Server', $s); + $this->assertNotNull($s->server); + foreach ($plugins as $plugin) { + $this->assertNotNull($s->server->getPlugin($plugin)); + } + } + public function providesUris() { + return [ + 'principals' => ['principals/users/admin', ['caldav', 'oc-resource-sharing', 'carddav']], + 'calendars' => ['calendars/admin', ['caldav', 'oc-resource-sharing']], + 'addressbooks' => ['addressbooks/admin', ['carddav', 'oc-resource-sharing']], + ]; } } |