From a5c528ff7e9bf6b7a9a35a8274b9e03a52153615 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 26 Jan 2016 21:19:44 +0100 Subject: [PATCH] provide info about plugin, and do not run commit ourselves on proppatch --- apps/dav/lib/comments/commentnode.php | 1 - apps/dav/lib/comments/commentsplugin.php | 15 ++++++++++- apps/dav/tests/unit/comments/commentnode.php | 3 --- .../tests/unit/comments/commentsplugin.php | 25 ++++++++++++++++--- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/apps/dav/lib/comments/commentnode.php b/apps/dav/lib/comments/commentnode.php index 376c1bf327..eb26e350a4 100644 --- a/apps/dav/lib/comments/commentnode.php +++ b/apps/dav/lib/comments/commentnode.php @@ -170,7 +170,6 @@ class CommentNode implements \Sabre\DAV\INode, \Sabre\DAV\IProperties { function propPatch(PropPatch $propPatch) { // other properties than 'message' are read only $propPatch->handle('{'.self::NS_OWNCLOUD.'}message', [$this, 'updateComment']); - $propPatch->commit(); } /** diff --git a/apps/dav/lib/comments/commentsplugin.php b/apps/dav/lib/comments/commentsplugin.php index 2f9b7bab59..7e227fd291 100644 --- a/apps/dav/lib/comments/commentsplugin.php +++ b/apps/dav/lib/comments/commentsplugin.php @@ -43,6 +43,7 @@ class CommentsPlugin extends ServerPlugin { // namespace const NS_OWNCLOUD = 'http://owncloud.org/ns'; + const REPORT_NAME = '{http://owncloud.org/ns}filter-comments'; const REPORT_PARAM_LIMIT = '{http://owncloud.org/ns}limit'; const REPORT_PARAM_OFFSET = '{http://owncloud.org/ns}offset'; const REPORT_PARAM_TIMESTAMP = '{http://owncloud.org/ns}datetime'; @@ -124,6 +125,18 @@ class CommentsPlugin extends ServerPlugin { return false; } + /** + * Returns a list of reports this plugin supports. + * + * This will be used in the {DAV:}supported-report-set property. + * + * @param string $uri + * @return array + */ + public function getSupportedReportSet($uri) { + return [self::REPORT_NAME]; + } + /** * REPORT operations to look for comments * @@ -136,7 +149,7 @@ class CommentsPlugin extends ServerPlugin { */ public function onReport($reportName, $report, $uri) { $node = $this->server->tree->getNodeForPath($uri); - if(!$node instanceof EntityCollection) { + if(!$node instanceof EntityCollection || $reportName !== self::REPORT_NAME) { throw new ReportNotSupported(); } $args = ['limit' => 0, 'offset' => 0, 'datetime' => null]; diff --git a/apps/dav/tests/unit/comments/commentnode.php b/apps/dav/tests/unit/comments/commentnode.php index e1498459ce..aa75e35d66 100644 --- a/apps/dav/tests/unit/comments/commentnode.php +++ b/apps/dav/tests/unit/comments/commentnode.php @@ -114,9 +114,6 @@ class CommentsNode extends \Test\TestCase { ->method('handle') ->with('{http://owncloud.org/ns}message'); - $propPatch->expects($this->once()) - ->method('commit'); - $this->node->propPatch($propPatch); } diff --git a/apps/dav/tests/unit/comments/commentsplugin.php b/apps/dav/tests/unit/comments/commentsplugin.php index 391c79d156..bd0b56fc65 100644 --- a/apps/dav/tests/unit/comments/commentsplugin.php +++ b/apps/dav/tests/unit/comments/commentsplugin.php @@ -517,7 +517,26 @@ class CommentsPlugin extends \Test\TestCase { ->will($this->returnValue($path)); $this->plugin->initialize($this->server); - $this->plugin->onReport('', [], '/' . $path); + $this->plugin->onReport(CommentsPluginImplementation::REPORT_NAME, [], '/' . $path); + } + + /** + * @expectedException \Sabre\DAV\Exception\ReportNotSupported + */ + public function testOnReportInvalidReportName() { + $path = 'comments/files/42'; + + $this->tree->expects($this->any()) + ->method('getNodeForPath') + ->with('/' . $path) + ->will($this->returnValue($this->getMock('\Sabre\DAV\INode'))); + + $this->server->expects($this->any()) + ->method('getRequestUri') + ->will($this->returnValue($path)); + $this->plugin->initialize($this->server); + + $this->plugin->onReport('{whoever}whatever', [], '/' . $path); } public function testOnReportDateTimeEmpty() { @@ -572,7 +591,7 @@ class CommentsPlugin extends \Test\TestCase { $this->server->httpResponse = $response; $this->plugin->initialize($this->server); - $this->plugin->onReport('', $parameters, '/' . $path); + $this->plugin->onReport(CommentsPluginImplementation::REPORT_NAME, $parameters, '/' . $path); } public function testOnReport() { @@ -627,7 +646,7 @@ class CommentsPlugin extends \Test\TestCase { $this->server->httpResponse = $response; $this->plugin->initialize($this->server); - $this->plugin->onReport('', $parameters, '/' . $path); + $this->plugin->onReport(CommentsPluginImplementation::REPORT_NAME, $parameters, '/' . $path); }