diff options
author | Robin McCorkell <rmccorkell@karoshi.org.uk> | 2015-01-09 13:54:17 +0000 |
---|---|---|
committer | Robin McCorkell <rmccorkell@karoshi.org.uk> | 2015-01-09 13:54:17 +0000 |
commit | 631d6571fdb39c367406fba8c608c76c92b06e2a (patch) | |
tree | 077cc764ff82dfb5b1c8453963cf870d04806b5d /tests | |
parent | 800738f51a1031839711b53d6859b0ce188a8b4c (diff) | |
parent | 888ce4d4f9272016a033c859850808f3e1643da9 (diff) | |
download | nextcloud-server-631d6571fdb39c367406fba8c608c76c92b06e2a.tar.gz nextcloud-server-631d6571fdb39c367406fba8c608c76c92b06e2a.zip |
Merge pull request #13181 from owncloud/filecache-preventleadingslash
Trim leading or trailing slashes in file cache paths
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/files/cache/cache.php | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php index 81d7f3ce0bc..6df98ee531d 100644 --- a/tests/lib/files/cache/cache.php +++ b/tests/lib/files/cache/cache.php @@ -517,6 +517,42 @@ class Cache extends \Test\TestCase { $this->assertEquals(1, count($this->cache->getFolderContents('folder'))); } + function bogusPathNamesProvider() { + return array( + array('/bogus.txt', 'bogus.txt'), + array('//bogus.txt', 'bogus.txt'), + array('bogus/', 'bogus'), + array('bogus//', 'bogus'), + ); + } + + /** + * Test bogus paths with leading or doubled slashes + * + * @dataProvider bogusPathNamesProvider + */ + public function testBogusPaths($bogusPath, $fixedBogusPath) { + $data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory'); + + // put root folder + $this->assertFalse($this->cache->get('')); + $parentId = $this->cache->put('', $data); + $this->assertGreaterThan(0, $parentId); + + $this->assertGreaterThan(0, $this->cache->put($bogusPath, $data)); + + $newData = $this->cache->get($fixedBogusPath); + $this->assertNotFalse($newData); + + $this->assertEquals($fixedBogusPath, $newData['path']); + // parent is the correct one, resolved properly (they used to not be) + $this->assertEquals($parentId, $newData['parent']); + + $newDataFromBogus = $this->cache->get($bogusPath); + // same entry + $this->assertEquals($newData, $newDataFromBogus); + } + protected function tearDown() { if ($this->cache) { $this->cache->clear(); |