fix moving folders out of a cache jail
Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
parent
701a865db7
commit
996269cfdd
|
@ -94,7 +94,7 @@ class CacheJail extends CacheWrapper {
|
||||||
* get the stored metadata of a file or folder
|
* get the stored metadata of a file or folder
|
||||||
*
|
*
|
||||||
* @param string /int $file
|
* @param string /int $file
|
||||||
* @return array|false
|
* @return ICacheEntry|false
|
||||||
*/
|
*/
|
||||||
public function get($file) {
|
public function get($file) {
|
||||||
if (is_string($file) or $file == '') {
|
if (is_string($file) or $file == '') {
|
||||||
|
@ -175,6 +175,16 @@ class CacheJail extends CacheWrapper {
|
||||||
$this->getCache()->move($this->getSourcePath($source), $this->getSourcePath($target));
|
$this->getCache()->move($this->getSourcePath($source), $this->getSourcePath($target));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the storage id and path needed for a move
|
||||||
|
*
|
||||||
|
* @param string $path
|
||||||
|
* @return array [$storageId, $internalPath]
|
||||||
|
*/
|
||||||
|
protected function getMoveInfo($path) {
|
||||||
|
return [$this->getNumericStorageId(), $this->getSourcePath($path)];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* remove all entries for files that are stored on the storage from the cache
|
* remove all entries for files that are stored on the storage from the cache
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
namespace Test\Files\Cache\Wrapper;
|
namespace Test\Files\Cache\Wrapper;
|
||||||
|
|
||||||
|
use OC\Files\Cache\Wrapper\CacheJail;
|
||||||
use Test\Files\Cache\CacheTest;
|
use Test\Files\Cache\CacheTest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,4 +81,53 @@ class CacheJailTest extends CacheTest {
|
||||||
//not supported
|
//not supported
|
||||||
$this->assertTrue(true);
|
$this->assertTrue(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testMoveFromJail() {
|
||||||
|
$folderData = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory');
|
||||||
|
|
||||||
|
$this->sourceCache->put('source', $folderData);
|
||||||
|
$this->sourceCache->put('source/foo', $folderData);
|
||||||
|
$this->sourceCache->put('source/foo/bar', $folderData);
|
||||||
|
$this->sourceCache->put('target', $folderData);
|
||||||
|
|
||||||
|
$jail = new CacheJail($this->sourceCache, 'source');
|
||||||
|
|
||||||
|
$this->sourceCache->moveFromCache($jail, 'foo', 'target/foo');
|
||||||
|
|
||||||
|
$this->assertTrue($this->sourceCache->inCache('target/foo'));
|
||||||
|
$this->assertTrue($this->sourceCache->inCache('target/foo/bar'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function testMoveToJail() {
|
||||||
|
$folderData = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory');
|
||||||
|
|
||||||
|
$this->sourceCache->put('source', $folderData);
|
||||||
|
$this->sourceCache->put('source/foo', $folderData);
|
||||||
|
$this->sourceCache->put('source/foo/bar', $folderData);
|
||||||
|
$this->sourceCache->put('target', $folderData);
|
||||||
|
|
||||||
|
$jail = new CacheJail($this->sourceCache, 'target');
|
||||||
|
|
||||||
|
$jail->moveFromCache($this->sourceCache, 'source/foo', 'foo');
|
||||||
|
|
||||||
|
$this->assertTrue($this->sourceCache->inCache('target/foo'));
|
||||||
|
$this->assertTrue($this->sourceCache->inCache('target/foo/bar'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function testMoveBetweenJail() {
|
||||||
|
$folderData = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory');
|
||||||
|
|
||||||
|
$this->sourceCache->put('source', $folderData);
|
||||||
|
$this->sourceCache->put('source/foo', $folderData);
|
||||||
|
$this->sourceCache->put('source/foo/bar', $folderData);
|
||||||
|
$this->sourceCache->put('target', $folderData);
|
||||||
|
|
||||||
|
$jail = new CacheJail($this->sourceCache, 'target');
|
||||||
|
$sourceJail = new CacheJail($this->sourceCache, 'source');
|
||||||
|
|
||||||
|
$jail->moveFromCache($sourceJail, 'foo', 'foo');
|
||||||
|
|
||||||
|
$this->assertTrue($this->sourceCache->inCache('target/foo'));
|
||||||
|
$this->assertTrue($this->sourceCache->inCache('target/foo/bar'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue