summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/files/storage/wrapper/encryption.php4
-rw-r--r--tests/lib/files/storage/wrapper/encryption.php52
2 files changed, 45 insertions, 11 deletions
diff --git a/lib/private/files/storage/wrapper/encryption.php b/lib/private/files/storage/wrapper/encryption.php
index 41a7f9e9242..439dc0ab6d3 100644
--- a/lib/private/files/storage/wrapper/encryption.php
+++ b/lib/private/files/storage/wrapper/encryption.php
@@ -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;
diff --git a/tests/lib/files/storage/wrapper/encryption.php b/tests/lib/files/storage/wrapper/encryption.php
index 6fc9b17fad0..c0126d60227 100644
--- a/tests/lib/files/storage/wrapper/encryption.php
+++ b/tests/lib/files/storage/wrapper/encryption.php
@@ -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)
+ );
}
/**