make sure that we keep the correct encrypted-flag and the (unencrypted)size if a file gets copied
This commit is contained in:
parent
5aa3525479
commit
7089af96f2
2 changed files with 45 additions and 11 deletions
|
@ -252,6 +252,7 @@ class Encryption extends Wrapper {
|
|||
*/
|
||||
public function copy($path1, $path2) {
|
||||
$fullPath1 = $this->getFullPath($path1);
|
||||
$fullPath2 = $this->getFullPath($path2);
|
||||
if ($this->util->isExcluded($fullPath1)) {
|
||||
return $this->storage->copy($path1, $path2);
|
||||
}
|
||||
|
@ -267,6 +268,9 @@ class Encryption extends Wrapper {
|
|||
) {
|
||||
$this->update->update($target);
|
||||
}
|
||||
$data = $this->getMetaData($path1);
|
||||
$this->getCache()->put($path2, ['encrypted' => $data['encrypted']]);
|
||||
$this->updateUnencryptedSize($fullPath2, $data['size']);
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
|
|
@ -13,7 +13,7 @@ class Encryption extends \Test\Files\Storage\Storage {
|
|||
private $sourceStorage;
|
||||
|
||||
/**
|
||||
* @var \OC\Files\Storage\Wrapper\Encryption
|
||||
* @var \OC\Files\Storage\Wrapper\Encryption | \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $instance;
|
||||
|
||||
|
@ -27,7 +27,6 @@ class Encryption extends \Test\Files\Storage\Storage {
|
|||
*/
|
||||
private $util;
|
||||
|
||||
|
||||
/**
|
||||
* @var \OC\Encryption\Manager | \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
|
@ -38,12 +37,16 @@ class Encryption extends \Test\Files\Storage\Storage {
|
|||
*/
|
||||
private $encryptionModule;
|
||||
|
||||
|
||||
/**
|
||||
* @var \OC\Encryption\Update | \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private $update;
|
||||
|
||||
/**
|
||||
* @var \OC\Files\Cache\Cache | \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private $cache;
|
||||
|
||||
protected function setUp() {
|
||||
|
||||
parent::setUp();
|
||||
|
@ -92,14 +95,25 @@ class Encryption extends \Test\Files\Storage\Storage {
|
|||
->setMethods(['getOption'])
|
||||
->getMock();
|
||||
$mount->expects($this->any())->method('getOption')->willReturn(true);
|
||||
$this->instance = new \OC\Files\Storage\Wrapper\Encryption([
|
||||
'storage' => $this->sourceStorage,
|
||||
'root' => 'foo',
|
||||
'mountPoint' => '/',
|
||||
'mount' => $mount
|
||||
],
|
||||
$this->encryptionManager, $this->util, $logger, $file, null, $this->keyStore, $this->update
|
||||
);
|
||||
$this->cache = $this->getMockBuilder('\OC\Files\Cache\Cache')
|
||||
->disableOriginalConstructor()->getMock();
|
||||
$this->cache->expects($this->any())->method('get')->willReturn(array());
|
||||
|
||||
$this->instance = $this->getMockBuilder('\OC\Files\Storage\Wrapper\Encryption')
|
||||
->setConstructorArgs([
|
||||
[
|
||||
'storage' => $this->sourceStorage,
|
||||
'root' => 'foo',
|
||||
'mountPoint' => '/',
|
||||
'mount' => $mount
|
||||
],
|
||||
$this->encryptionManager, $this->util, $logger, $file, null, $this->keyStore, $this->update
|
||||
])
|
||||
->setMethods(['getMetaData', 'getCache'])
|
||||
->getMock();
|
||||
|
||||
$this->instance->expects($this->any())->method('getCache')->willReturn($this->cache);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -160,6 +174,18 @@ class Encryption extends \Test\Files\Storage\Storage {
|
|||
* @param boolean $shouldUpdate
|
||||
*/
|
||||
public function testCopyTesting($source, $target, $copyKeysReturn, $shouldUpdate) {
|
||||
|
||||
$dummySize = -1;
|
||||
|
||||
$this->instance->expects($this->any())
|
||||
->method('getMetaData')
|
||||
->willReturn(['encrypted' => true, 'size' => $dummySize]);
|
||||
|
||||
$this->cache->expects($this->once())
|
||||
->method('put')
|
||||
->with($this->anything(), ['encrypted' => true])
|
||||
->willReturn(true);
|
||||
|
||||
$this->keyStore
|
||||
->expects($this->once())
|
||||
->method('copyKeys')
|
||||
|
@ -177,6 +203,10 @@ class Encryption extends \Test\Files\Storage\Storage {
|
|||
$this->instance->mkdir($source);
|
||||
$this->instance->mkdir(dirname($target));
|
||||
$this->instance->copy($source, $target);
|
||||
|
||||
$this->assertSame($dummySize,
|
||||
$this->instance->filesize($target)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue