[Pkg-owncloud-commits] [owncloud] 102/457: distinguish between source and target mount point to allow copy/rename between system wide mount points and user specific mountpoints

David Prévot taffit at moszumanska.debian.org
Sun Jun 28 20:05:38 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 38bceb0d744357fc25cf0353989aa59f1bdcf11c
Author: Bjoern Schiessle <schiessle at owncloud.com>
Date:   Thu May 21 14:06:45 2015 +0200

    distinguish between source and target mount point to allow copy/rename between system wide mount points and user specific mountpoints
---
 lib/private/encryption/keys/storage.php | 21 ++++++++++++-----
 tests/lib/encryption/keys/storage.php   | 40 +++++++++++++++++++++++----------
 2 files changed, 43 insertions(+), 18 deletions(-)

diff --git a/lib/private/encryption/keys/storage.php b/lib/private/encryption/keys/storage.php
index 6aa00c5..1d2638b 100644
--- a/lib/private/encryption/keys/storage.php
+++ b/lib/private/encryption/keys/storage.php
@@ -233,13 +233,18 @@ class Storage implements IStorage {
 
 		list($owner, $source) = $this->util->getUidAndFilename($source);
 		list(, $target) = $this->util->getUidAndFilename($target);
-		$systemWide = $this->util->isSystemWideMountPoint($target, $owner);
+		$systemWideSource = $this->util->isSystemWideMountPoint($source, $owner);
+		$systemWideTarget = $this->util->isSystemWideMountPoint($target, $owner);
 
-		if ($systemWide) {
+		if ($systemWideSource) {
 			$sourcePath = $this->keys_base_dir . $source . '/';
-			$targetPath = $this->keys_base_dir . $target . '/';
 		} else {
 			$sourcePath = '/' . $owner . $this->keys_base_dir . $source . '/';
+		}
+
+		if ($systemWideTarget) {
+			$targetPath = $this->keys_base_dir . $target . '/';
+		} else {
 			$targetPath = '/' . $owner . $this->keys_base_dir . $target . '/';
 		}
 
@@ -264,13 +269,17 @@ class Storage implements IStorage {
 
 		list($owner, $source) = $this->util->getUidAndFilename($source);
 		list(, $target) = $this->util->getUidAndFilename($target);
-		$systemWide = $this->util->isSystemWideMountPoint($target, $owner);
+		$systemWideTarget = $this->util->isSystemWideMountPoint($target, $owner);
+		$systemWideSource = $this->util->isSystemWideMountPoint($source, $owner);
 
-		if ($systemWide) {
+		if ($systemWideSource) {
 			$sourcePath = $this->keys_base_dir . $source . '/';
-			$targetPath = $this->keys_base_dir . $target . '/';
 		} else {
 			$sourcePath = '/' . $owner . $this->keys_base_dir . $source . '/';
+		}
+		if ($systemWideTarget) {
+			$targetPath = $this->keys_base_dir . $target . '/';
+		} else {
 			$targetPath = '/' . $owner . $this->keys_base_dir . $target . '/';
 		}
 
diff --git a/tests/lib/encryption/keys/storage.php b/tests/lib/encryption/keys/storage.php
index e67103f..747c632 100644
--- a/tests/lib/encryption/keys/storage.php
+++ b/tests/lib/encryption/keys/storage.php
@@ -276,7 +276,7 @@ class StorageTest extends TestCase {
 	/**
 	 * @dataProvider dataProviderCopyRename
 	 */
-	public function testRenameKeys($source, $target, $systemWideMount, $expectedSource, $expectedTarget) {
+	public function testRenameKeys($source, $target, $systemWideMountSource, $systemWideMountTarget, $expectedSource, $expectedTarget) {
 		$this->view->expects($this->any())
 			->method('file_exists')
 			->willReturn(true);
@@ -294,7 +294,12 @@ class StorageTest extends TestCase {
 			->will($this->returnCallback(array($this, 'getUidAndFilenameCallback')));
 		$this->util->expects($this->any())
 			->method('isSystemWideMountPoint')
-			->willReturn($systemWideMount);
+			->willReturnCallback(function($path, $owner) use ($systemWideMountSource, $systemWideMountTarget) {
+				if(strpos($path, 'source.txt') !== false) {
+					return $systemWideMountSource;
+				}
+				return $systemWideMountTarget;
+			});
 
 		$this->storage->renameKeys($source, $target);
 	}
@@ -302,7 +307,7 @@ class StorageTest extends TestCase {
 	/**
 	 * @dataProvider dataProviderCopyRename
 	 */
-	public function testCopyKeys($source, $target, $systemWideMount, $expectedSource, $expectedTarget) {
+	public function testCopyKeys($source, $target, $systemWideMountSource, $systemWideMountTarget , $expectedSource, $expectedTarget) {
 		$this->view->expects($this->any())
 			->method('file_exists')
 			->willReturn(true);
@@ -320,7 +325,12 @@ class StorageTest extends TestCase {
 			->will($this->returnCallback(array($this, 'getUidAndFilenameCallback')));
 		$this->util->expects($this->any())
 			->method('isSystemWideMountPoint')
-			->willReturn($systemWideMount);
+			->willReturnCallback(function($path, $owner) use ($systemWideMountSource, $systemWideMountTarget) {
+				if(strpos($path, 'source.txt') !== false) {
+					return $systemWideMountSource;
+				}
+				return $systemWideMountTarget;
+			});
 
 		$this->storage->copyKeys($source, $target);
 	}
@@ -336,14 +346,20 @@ class StorageTest extends TestCase {
 
 	public function dataProviderCopyRename() {
 		return array(
-			array('/user1/files/foo.txt', '/user1/files/bar.txt', false,
-				'/user1/files_encryption/keys/files/foo.txt/', '/user1/files_encryption/keys/files/bar.txt/'),
-				array('/user1/files/foo/foo.txt', '/user1/files/bar.txt', false,
-				'/user1/files_encryption/keys/files/foo/foo.txt/', '/user1/files_encryption/keys/files/bar.txt/'),
-			array('/user1/files/foo.txt', '/user1/files/foo/bar.txt', false,
-				'/user1/files_encryption/keys/files/foo.txt/', '/user1/files_encryption/keys/files/foo/bar.txt/'),
-			array('/user1/files/foo.txt', '/user1/files/foo/bar.txt', true,
-				'/files_encryption/keys/files/foo.txt/', '/files_encryption/keys/files/foo/bar.txt/'),
+			array('/user1/files/source.txt', '/user1/files/target.txt', false, false,
+				'/user1/files_encryption/keys/files/source.txt/', '/user1/files_encryption/keys/files/target.txt/'),
+			array('/user1/files/foo/source.txt', '/user1/files/target.txt', false, false,
+				'/user1/files_encryption/keys/files/foo/source.txt/', '/user1/files_encryption/keys/files/target.txt/'),
+			array('/user1/files/source.txt', '/user1/files/foo/target.txt', false, false,
+				'/user1/files_encryption/keys/files/source.txt/', '/user1/files_encryption/keys/files/foo/target.txt/'),
+			array('/user1/files/source.txt', '/user1/files/foo/target.txt', true, true,
+				'/files_encryption/keys/files/source.txt/', '/files_encryption/keys/files/foo/target.txt/'),
+			array('/user1/files/source.txt', '/user1/files/target.txt', false, true,
+				'/user1/files_encryption/keys/files/source.txt/', '/files_encryption/keys/files/target.txt/'),
+			array('/user1/files/source.txt', '/user1/files/target.txt', true, false,
+				'/files_encryption/keys/files/source.txt/', '/user1/files_encryption/keys/files/target.txt/'),
+
+
 		);
 	}
 

-- 
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