adding check isDeletable() on $sourcePath
This commit is contained in:
parent
2123ef57d8
commit
c77f74e1de
2 changed files with 22 additions and 13 deletions
|
@ -87,6 +87,9 @@ class ObjectTree extends \Sabre_DAV_ObjectTree {
|
||||||
if (!$fs->isUpdatable($destinationDir)) {
|
if (!$fs->isUpdatable($destinationDir)) {
|
||||||
throw new \Sabre_DAV_Exception_Forbidden();
|
throw new \Sabre_DAV_Exception_Forbidden();
|
||||||
}
|
}
|
||||||
|
if (!$fs->isDeletable($sourcePath)) {
|
||||||
|
throw new \Sabre_DAV_Exception_Forbidden();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$renameOkay = $fs->rename($sourcePath, $destinationPath);
|
$renameOkay = $fs->rename($sourcePath, $destinationPath);
|
||||||
|
|
|
@ -15,8 +15,9 @@ use Sabre_DAV_Exception_Forbidden;
|
||||||
|
|
||||||
class TestDoubleFileView extends \OC\Files\View{
|
class TestDoubleFileView extends \OC\Files\View{
|
||||||
|
|
||||||
public function __construct($updatables, $canRename = true) {
|
public function __construct($updatables, $deletables, $canRename = true) {
|
||||||
$this->updatables = $updatables;
|
$this->updatables = $updatables;
|
||||||
|
$this->deletables = $deletables;
|
||||||
$this->canRename = $canRename;
|
$this->canRename = $canRename;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +25,10 @@ class TestDoubleFileView extends \OC\Files\View{
|
||||||
return $this->updatables[$path];
|
return $this->updatables[$path];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isDeletable($path) {
|
||||||
|
return $this->deletables[$path];
|
||||||
|
}
|
||||||
|
|
||||||
public function rename($path1, $path2) {
|
public function rename($path1, $path2) {
|
||||||
return $this->canRename;
|
return $this->canRename;
|
||||||
}
|
}
|
||||||
|
@ -35,31 +40,32 @@ class ObjectTree extends PHPUnit_Framework_TestCase {
|
||||||
* @dataProvider moveFailedProvider
|
* @dataProvider moveFailedProvider
|
||||||
* @expectedException Sabre_DAV_Exception_Forbidden
|
* @expectedException Sabre_DAV_Exception_Forbidden
|
||||||
*/
|
*/
|
||||||
public function testMoveFailed($source, $dest, $updatables) {
|
public function testMoveFailed($source, $dest, $updatables, $deletables) {
|
||||||
$this->moveTest($source, $dest, $updatables);
|
$this->moveTest($source, $dest, $updatables, $deletables);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider moveSuccessProvider
|
* @dataProvider moveSuccessProvider
|
||||||
*/
|
*/
|
||||||
public function testMoveSuccess($source, $dest, $updatables) {
|
public function testMoveSuccess($source, $dest, $updatables, $deletables) {
|
||||||
$this->moveTest($source, $dest, $updatables);
|
$this->moveTest($source, $dest, $updatables, $deletables);
|
||||||
$this->assertTrue(true);
|
$this->assertTrue(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function moveFailedProvider() {
|
function moveFailedProvider() {
|
||||||
return array(
|
return array(
|
||||||
array('a/b', 'a/c', array('a' => false, 'a/b' => false, 'a/c' => false)),
|
array('a/b', 'a/c', array('a' => false, 'a/b' => false, 'a/c' => false), array()),
|
||||||
array('a/b', 'b/b', array('a' => false, 'a/b' => false, 'b' => false, 'b/b' => false)),
|
array('a/b', 'b/b', array('a' => false, 'a/b' => false, 'b' => false, 'b/b' => false), array()),
|
||||||
array('a/b', 'b/b', array('a' => false, 'a/b' => true, 'b' => false, 'b/b' => false)),
|
array('a/b', 'b/b', array('a' => false, 'a/b' => true, 'b' => false, 'b/b' => false), array()),
|
||||||
array('a/b', 'b/b', array('a' => true, 'a/b' => true, 'b' => false, 'b/b' => false)),
|
array('a/b', 'b/b', array('a' => true, 'a/b' => true, 'b' => false, 'b/b' => false), array()),
|
||||||
|
array('a/b', 'b/b', array('a' => true, 'a/b' => true, 'b' => true, 'b/b' => false), array('a/b' => false)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function moveSuccessProvider() {
|
function moveSuccessProvider() {
|
||||||
return array(
|
return array(
|
||||||
array('a/b', 'a/c', array('a' => false, 'a/b' => true, 'a/c' => false)),
|
array('a/b', 'a/c', array('a' => false, 'a/b' => true, 'a/c' => false), array()),
|
||||||
array('a/b', 'b/b', array('a' => true, 'a/b' => true, 'b' => true, 'b/b' => false)),
|
array('a/b', 'b/b', array('a' => true, 'a/b' => true, 'b' => true, 'b/b' => false), array('a/b' => true)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +74,7 @@ class ObjectTree extends PHPUnit_Framework_TestCase {
|
||||||
* @param $dest
|
* @param $dest
|
||||||
* @param $updatables
|
* @param $updatables
|
||||||
*/
|
*/
|
||||||
private function moveTest($source, $dest, $updatables) {
|
private function moveTest($source, $dest, $updatables, $deletables) {
|
||||||
$rootDir = new OC_Connector_Sabre_Directory('');
|
$rootDir = new OC_Connector_Sabre_Directory('');
|
||||||
$objectTree = $this->getMock('\OC\Connector\Sabre\ObjectTree',
|
$objectTree = $this->getMock('\OC\Connector\Sabre\ObjectTree',
|
||||||
array('nodeExists', 'getNodeForPath'),
|
array('nodeExists', 'getNodeForPath'),
|
||||||
|
@ -80,7 +86,7 @@ class ObjectTree extends PHPUnit_Framework_TestCase {
|
||||||
->will($this->returnValue(false));
|
->will($this->returnValue(false));
|
||||||
|
|
||||||
/** @var $objectTree \OC\Connector\Sabre\ObjectTree */
|
/** @var $objectTree \OC\Connector\Sabre\ObjectTree */
|
||||||
$objectTree->fileView = new TestDoubleFileView($updatables);
|
$objectTree->fileView = new TestDoubleFileView($updatables, $deletables);
|
||||||
$objectTree->move($source, $dest);
|
$objectTree->move($source, $dest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue