diff options
-rw-r--r-- | lib/private/files/view.php | 2 | ||||
-rw-r--r-- | tests/lib/files/view.php | 49 |
2 files changed, 50 insertions, 1 deletions
diff --git a/lib/private/files/view.php b/lib/private/files/view.php index 1353fac51ff..04932d69384 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -290,7 +290,7 @@ class View { $absolutePath = $this->getAbsolutePath($path); $mount = Filesystem::getMountManager()->find($absolutePath); if ($mount->getInternalPath($absolutePath) === '') { - return $this->removeMount($mount, $path); + return $this->removeMount($mount, $absolutePath); } if ($this->is_dir($path)) { return $this->basicOperation('rmdir', $path, array('delete')); diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php index 94f9e209152..c0845a5613c 100644 --- a/tests/lib/files/view.php +++ b/tests/lib/files/view.php @@ -2275,4 +2275,53 @@ class View extends \Test\TestCase { } return null; } + + + public function testRemoveMoveableMountPoint() { + $mountPoint = '/' . $this->user . '/files/mount/'; + + // Mock the mount point + $mount = $this->getMockBuilder('\Test\TestMoveableMountPoint') + ->disableOriginalConstructor() + ->getMock(); + $mount->expects($this->once()) + ->method('getMountPoint') + ->willReturn($mountPoint); + $mount->expects($this->once()) + ->method('removeMount') + ->willReturn('foo'); + $mount->expects($this->any()) + ->method('getInternalPath') + ->willReturn(''); + + // Register mount + \OC\Files\Filesystem::getMountManager()->addMount($mount); + + // Listen for events + $eventHandler = $this->getMockBuilder('\stdclass') + ->setMethods(['umount', 'post_umount']) + ->getMock(); + $eventHandler->expects($this->once()) + ->method('umount') + ->with([\OC\Files\Filesystem::signal_param_path => '/mount']); + $eventHandler->expects($this->once()) + ->method('post_umount') + ->with([\OC\Files\Filesystem::signal_param_path => '/mount']); + \OCP\Util::connectHook( + \OC\Files\Filesystem::CLASSNAME, + 'umount', + $eventHandler, + 'umount' + ); + \OCP\Util::connectHook( + \OC\Files\Filesystem::CLASSNAME, + 'post_umount', + $eventHandler, + 'post_umount' + ); + + //Delete the mountpoint + $view = new \OC\Files\View('/' . $this->user . '/files'); + $this->assertEquals('foo', $view->rmdir('mount')); + } } |