aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Schiessle <schiessle@owncloud.com>2015-02-04 12:07:16 +0100
committerBjoern Schiessle <schiessle@owncloud.com>2015-02-04 14:53:17 +0100
commit2b83afdd7ebd9d211aa25203eaa15e978bef173c (patch)
tree0281d985aa0e67ed870ddab7d70976648f83067d
parenta81b4c54d868a6239414b115a37f3edeb32cbee6 (diff)
downloadnextcloud-server-2b83afdd7ebd9d211aa25203eaa15e978bef173c.tar.gz
nextcloud-server-2b83afdd7ebd9d211aa25203eaa15e978bef173c.zip
detect root of mountpoint also if the trailing slash is missed
-rw-r--r--lib/private/files/view.php5
-rw-r--r--tests/lib/files/view.php22
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index 7609dbe536c..a3f4e9e0719 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -87,6 +87,11 @@ class View {
if ($this->fakeRoot == '') {
return $path;
}
+
+ if (rtrim($path,'/') === rtrim($this->fakeRoot, '/')) {
+ return '/';
+ }
+
if (strpos($path, $this->fakeRoot) !== 0) {
return null;
} else {
diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php
index ce78896b152..837690a6902 100644
--- a/tests/lib/files/view.php
+++ b/tests/lib/files/view.php
@@ -696,6 +696,28 @@ class View extends \PHPUnit_Framework_TestCase {
}
/**
+ * @dataProvider relativePathProvider
+ */
+ function testGetRelativePath($absolutePath, $expectedPath) {
+ $view = new \OC\Files\View('/files');
+ // simulate a external storage mount point which has a trailing slash
+ $view->chroot('/files/');
+ $this->assertEquals($expectedPath, $view->getRelativePath($absolutePath));
+ }
+
+ function relativePathProvider() {
+ return array(
+ array('/files/', '/'),
+ array('/files', '/'),
+ array('/files/0', '0'),
+ array('/files/false', 'false'),
+ array('/files/true', 'true'),
+ array('/files/test', 'test'),
+ array('/files/test/foo', 'test/foo'),
+ );
+ }
+
+ /**
* @dataProvider tooLongPathDataProvider
* @expectedException \OCP\Files\InvalidPathException
*/