From f1cd68d71337d3419ea7fced7304bc2a763d29d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20M=C3=BCller?= <thomas.mueller@tmit.eu>
Date: Fri, 5 Aug 2016 13:32:26 +0200
Subject: [PATCH] Adding test case for getPathById including a jailed cache
 where root is just empty

---
 lib/private/Files/Cache/Wrapper/CacheJail.php   |  4 +++-
 tests/lib/Files/Cache/Wrapper/CacheJailTest.php | 13 +++++++++++--
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/lib/private/Files/Cache/Wrapper/CacheJail.php b/lib/private/Files/Cache/Wrapper/CacheJail.php
index 90226e56144..1196c6b0760 100644
--- a/lib/private/Files/Cache/Wrapper/CacheJail.php
+++ b/lib/private/Files/Cache/Wrapper/CacheJail.php
@@ -59,6 +59,9 @@ class CacheJail extends CacheWrapper {
 	 * @return null|string the jailed path or null if the path is outside the jail
 	 */
 	protected function getJailedPath($path) {
+		if ($this->root === '') {
+			return $path;
+		}
 		$rootLength = strlen($this->root) + 1;
 		if ($path === $this->root) {
 			return '';
@@ -290,7 +293,6 @@ class CacheJail extends CacheWrapper {
 	 */
 	public function getPathById($id) {
 		$path = $this->cache->getPathById($id);
-		$path = $this->getSourcePath($path);
 		return $this->getJailedPath($path);
 	}
 
diff --git a/tests/lib/Files/Cache/Wrapper/CacheJailTest.php b/tests/lib/Files/Cache/Wrapper/CacheJailTest.php
index 6ef6716f721..e3043c50d57 100644
--- a/tests/lib/Files/Cache/Wrapper/CacheJailTest.php
+++ b/tests/lib/Files/Cache/Wrapper/CacheJailTest.php
@@ -63,8 +63,17 @@ class CacheJailTest extends CacheTest {
 	}
 
 	function testGetById() {
-		//not supported
-		$this->assertTrue(true);
+		$data1 = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory');
+		$id = $this->sourceCache->put('foo/bar', $data1);
+
+		// path from jailed foo of foo/bar is bar
+		$path = $this->cache->getPathById($id);
+		$this->assertEquals('bar', $path);
+
+		// path from jailed '' of foo/bar is foo/bar
+		$this->cache = new \OC\Files\Cache\Wrapper\CacheJail($this->sourceCache, '');
+		$path = $this->cache->getPathById($id);
+		$this->assertEquals('foo/bar', $path);
 	}
 
 	function testGetIncomplete() {
-- 
GitLab