provide info about plugin, and do not run commit ourselves on proppatch

This commit is contained in:
Arthur Schiwon 2016-01-26 21:19:44 +01:00
parent db788a382c
commit a5c528ff7e
4 changed files with 36 additions and 8 deletions

View file

@ -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();
}
/**

View file

@ -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];

View file

@ -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);
}

View file

@ -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);
}