[Pkg-owncloud-commits] [owncloud] 82/122: make sure that we keep the correct encrypted-flag and the (unencrypted)size if a file gets copied

David Prévot taffit at moszumanska.debian.org
Sat May 9 00:00:19 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch stable8
in repository owncloud.

commit 7089af96f297cb56fb1c3617527b31349b8341cf
Author: Bjoern Schiessle <schiessle at owncloud.com>
Date:   Tue May 5 14:38:06 2015 +0200

    make sure that we keep the correct encrypted-flag and the (unencrypted)size if a file gets copied
---
 lib/private/files/storage/wrapper/encryption.php |  4 ++
 tests/lib/files/storage/wrapper/encryption.php   | 52 +++++++++++++++++++-----
 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 41a7f9e..439dc0a 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 6fc9b17..c0126d6 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)
+		);
 	}
 
 	/**

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list