Merge pull request #21232 from owncloud/fix-21230

Use name of ICollection for exception message
remotes/origin/fix_emit_scanFiles
Thomas Müller 2015-12-16 16:04:04 +07:00
commit 9a4ab698b7
2 changed files with 42 additions and 1 deletions

@ -190,7 +190,7 @@ class ObjectTree extends \Sabre\DAV\Tree {
$targetNodeExists = $this->nodeExists($destinationPath);
$sourceNode = $this->getNodeForPath($sourcePath);
if ($sourceNode instanceof \Sabre\DAV\ICollection && $targetNodeExists) {
throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode . ', target exists');
throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode->getName() . ', target exists');
}
list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($sourcePath);
list($destinationDir,) = \Sabre\HTTP\URLUtil::splitPath($destinationPath);

@ -294,4 +294,45 @@ class ObjectTree extends \Test\TestCase {
$this->assertInstanceOf('\Sabre\DAV\INode', $tree->getNodeForPath($path));
}
/**
* @expectedException \Sabre\DAV\Exception\Forbidden
* @expectedExceptionMessage Could not copy directory nameOfSourceNode, target exists
*/
public function testFailingMove() {
$source = 'a/b';
$destination = 'b/b';
$updatables = array('a' => true, 'a/b' => true, 'b' => true, 'b/b' => false);
$deletables = array('a/b' => true);
$view = new TestDoubleFileView($updatables, $deletables);
$info = new FileInfo('', null, null, array(), null);
$rootDir = new \OCA\DAV\Connector\Sabre\Directory($view, $info);
$objectTree = $this->getMock('\OCA\DAV\Connector\Sabre\ObjectTree',
array('nodeExists', 'getNodeForPath'),
array($rootDir, $view));
$sourceNode = $this->getMockBuilder('\Sabre\DAV\ICollection')
->disableOriginalConstructor()
->getMock();
$sourceNode->expects($this->once())
->method('getName')
->will($this->returnValue('nameOfSourceNode'));
$objectTree->expects($this->once())
->method('nodeExists')
->with($this->identicalTo($destination))
->will($this->returnValue(true));
$objectTree->expects($this->once())
->method('getNodeForPath')
->with($this->identicalTo($source))
->will($this->returnValue($sourceNode));
/** @var $objectTree \OCA\DAV\Connector\Sabre\ObjectTree */
$mountManager = \OC\Files\Filesystem::getMountManager();
$objectTree->init($rootDir, $view, $mountManager);
$objectTree->move($source, $destination);
}
}