diff options
author | Robin Appelman <icewind@owncloud.com> | 2014-06-10 15:26:18 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2014-06-10 15:26:18 +0200 |
commit | 21cfd1014a99e25f4ee255b872957fc1b98a7610 (patch) | |
tree | e8c1fd54980a0aff84c4d98f913c546bbb4fe459 /tests/lib/files/cache | |
parent | ecc41fe0c3375022d2455fd563f91b2691bdd857 (diff) | |
download | nextcloud-server-21cfd1014a99e25f4ee255b872957fc1b98a7610.tar.gz nextcloud-server-21cfd1014a99e25f4ee255b872957fc1b98a7610.zip |
Repair broken parent link in the scanner
Diffstat (limited to 'tests/lib/files/cache')
-rw-r--r-- | tests/lib/files/cache/scanner.php | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/tests/lib/files/cache/scanner.php b/tests/lib/files/cache/scanner.php index 263e5b3445f..0a274631d1c 100644 --- a/tests/lib/files/cache/scanner.php +++ b/tests/lib/files/cache/scanner.php @@ -32,7 +32,6 @@ class Scanner extends \PHPUnit_Framework_TestCase { function tearDown() { if ($this->cache) { - $ids = $this->cache->getAll(); $this->cache->clear(); } } @@ -199,7 +198,7 @@ class Scanner extends \PHPUnit_Framework_TestCase { $this->assertFalse($this->cache->inCache('folder/bar.txt')); } - public function testScanRemovedFile(){ + public function testScanRemovedFile() { $this->fillTestFolders(); $this->scanner->scan(''); @@ -233,4 +232,52 @@ class Scanner extends \PHPUnit_Framework_TestCase { $this->assertInternalType('string', $newData0['etag']); $this->assertNotEmpty($newData0['etag']); } + + public function testRepairParent() { + $this->fillTestFolders(); + $this->scanner->scan(''); + $this->assertTrue($this->cache->inCache('folder/bar.txt')); + $oldFolderId = $this->cache->getId('folder'); + + // delete the folder without removing the childs + $sql = 'DELETE FROM `*PREFIX*filecache` WHERE `fileid` = ?'; + \OC_DB::executeAudited($sql, array($oldFolderId)); + + $cachedData = $this->cache->get('folder/bar.txt'); + $this->assertEquals($oldFolderId, $cachedData['parent']); + $this->assertFalse($this->cache->inCache('folder')); + + $this->scanner->scan(''); + + $this->assertTrue($this->cache->inCache('folder')); + $newFolderId = $this->cache->getId('folder'); + $this->assertNotEquals($oldFolderId, $newFolderId); + + $cachedData = $this->cache->get('folder/bar.txt'); + $this->assertEquals($newFolderId, $cachedData['parent']); + } + + public function testRepairParentShallow() { + $this->fillTestFolders(); + $this->scanner->scan(''); + $this->assertTrue($this->cache->inCache('folder/bar.txt')); + $oldFolderId = $this->cache->getId('folder'); + + // delete the folder without removing the childs + $sql = 'DELETE FROM `*PREFIX*filecache` WHERE `fileid` = ?'; + \OC_DB::executeAudited($sql, array($oldFolderId)); + + $cachedData = $this->cache->get('folder/bar.txt'); + $this->assertEquals($oldFolderId, $cachedData['parent']); + $this->assertFalse($this->cache->inCache('folder')); + + $this->scanner->scan('folder', \OC\Files\Cache\Scanner::SCAN_SHALLOW); + + $this->assertTrue($this->cache->inCache('folder')); + $newFolderId = $this->cache->getId('folder'); + $this->assertNotEquals($oldFolderId, $newFolderId); + + $cachedData = $this->cache->get('folder/bar.txt'); + $this->assertEquals($newFolderId, $cachedData['parent']); + } } |