From 9f10f15fd459234c160fb3e41eab623607e52e72 Mon Sep 17 00:00:00 2001
From: Bjoern Schiessle <schiessle@owncloud.com>
Date: Tue, 12 Nov 2013 10:24:10 +0100
Subject: [PATCH] fixing tests for the new part file handling

---
 apps/files_encryption/lib/helper.php       | 16 ++++++
 apps/files_encryption/lib/keymanager.php   | 28 +++-------
 apps/files_encryption/lib/proxy.php        |  6 +--
 apps/files_encryption/tests/helper.php     | 61 ++++++++++++++++++++++
 apps/files_encryption/tests/keymanager.php | 17 ------
 5 files changed, 86 insertions(+), 42 deletions(-)
 create mode 100644 apps/files_encryption/tests/helper.php

diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php
index 98a5f1f2f2..48175e460e 100755
--- a/apps/files_encryption/lib/helper.php
+++ b/apps/files_encryption/lib/helper.php
@@ -156,6 +156,22 @@ class Helper {
 		return $return;
 	}
 
+	/**
+	 * @brief Check if a path is a .part file
+	 * @param string $path Path that may identify a .part file
+	 * @return bool
+	 */
+	public static function isPartialFilePath($path) {
+
+		$extension = pathinfo($path, PATHINFO_EXTENSION);
+		if ( $extension === 'part' || $extension === 'etmp') {
+			return true;
+		} else {
+			return false;
+		}
+
+	}
+
 
 	/**
 	 * @brief Remove .path extension from a file path
diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php
index 578d8965b4..794641f712 100755
--- a/apps/files_encryption/lib/keymanager.php
+++ b/apps/files_encryption/lib/keymanager.php
@@ -152,10 +152,10 @@ class Keymanager {
 		}
 
 		// try reusing key file if part file
-		if (self::isPartialFilePath($targetPath)) {
+		if (Helper::isPartialFilePath($targetPath)) {
 
 			$result = $view->file_put_contents(
-				$basePath . '/' . \OCA\Encryption\Helper::fixPartialFilePath($targetPath) . '.key', $catfile);
+				$basePath . '/' . Helper::fixPartialFilePath($targetPath) . '.key', $catfile);
 
 		} else {
 
@@ -169,22 +169,6 @@ class Keymanager {
 
 	}
 
-	/**
-	 * @brief Check if a path is a .part file
-	 * @param string $path Path that may identify a .part file
-	 * @return bool
-	 */
-	public static function isPartialFilePath($path) {
-
-		$extension = pathinfo($path, PATHINFO_EXTENSION);
-		if ( $extension === 'part' || $extension === 'etmp') {
-			return true;
-		} else {
-			return false;
-		}
-
-	}
-
 	/**
 	 * @brief retrieve keyfile for an encrypted file
 	 * @param \OC_FilesystemView $view
@@ -200,7 +184,7 @@ class Keymanager {
 		$util = new Util($view, \OCP\User::getUser());
 
 		list($owner, $filename) = $util->getUidAndFilename($filePath);
-		$filename = \OCA\Encryption\Helper::fixPartialFilePath($filename);
+		$filename = Helper::fixPartialFilePath($filename);
 		$filePath_f = ltrim($filename, '/');
 
 		// in case of system wide mount points the keys are stored directly in the data directory
@@ -359,8 +343,8 @@ class Keymanager {
 		foreach ($shareKeys as $userId => $shareKey) {
 
 			// try reusing key file if part file
-			if (self::isPartialFilePath($shareKeyPath)) {
-				$writePath = $basePath . '/' . \OCA\Encryption\Helper::fixPartialFilePath($shareKeyPath) . '.' . $userId . '.shareKey';
+			if (Helper::isPartialFilePath($shareKeyPath)) {
+				$writePath = $basePath . '/' . Helper::fixPartialFilePath($shareKeyPath) . '.' . $userId . '.shareKey';
 			} else {
 				$writePath = $basePath . '/' . $shareKeyPath . '.' . $userId . '.shareKey';
 			}
@@ -396,7 +380,7 @@ class Keymanager {
 		$util = new Util($view, \OCP\User::getUser());
 
 		list($owner, $filename) = $util->getUidAndFilename($filePath);
-		$filename = \OCA\Encryption\Helper::fixPartialFilePath($filename);
+		$filename = Helper::fixPartialFilePath($filename);
 		// in case of system wide mount points the keys are stored directly in the data directory
 		if ($util->isSystemWideMountPoint($filename)) {
 			$shareKeyPath = '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey';
diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php
index 6dc5c9ce1b..e2bc8f6b16 100644
--- a/apps/files_encryption/lib/proxy.php
+++ b/apps/files_encryption/lib/proxy.php
@@ -342,7 +342,7 @@ class Proxy extends \OC_FileProxy {
 
 		$fileInfo = false;
 		// get file info from database/cache if not .part file
-		if (!Keymanager::isPartialFilePath($path)) {
+		if (!Helper::isPartialFilePath($path)) {
 			$fileInfo = $view->getFileInfo($path);
 		}
 
@@ -353,7 +353,7 @@ class Proxy extends \OC_FileProxy {
 				$fixSize = $util->getFileSize($path);
 				$fileInfo['unencrypted_size'] = $fixSize;
 				// put file info if not .part file
-				if (!Keymanager::isPartialFilePath($relativePath)) {
+				if (!Helper::isPartialFilePath($relativePath)) {
 					$view->putFileInfo($path, $fileInfo);
 				}
 			}
@@ -372,7 +372,7 @@ class Proxy extends \OC_FileProxy {
 				$fileInfo['unencrypted_size'] = $size;
 
 				// put file info if not .part file
-				if (!Keymanager::isPartialFilePath($relativePath)) {
+				if (!Helper::isPartialFilePath($relativePath)) {
 					$view->putFileInfo($path, $fileInfo);
 				}
 			}
diff --git a/apps/files_encryption/tests/helper.php b/apps/files_encryption/tests/helper.php
new file mode 100644
index 0000000000..cccf9c7522
--- /dev/null
+++ b/apps/files_encryption/tests/helper.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Copyright (c) 2012 Sam Tuke <samtuke@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once __DIR__ . '/../../../lib/base.php';
+require_once __DIR__ . '/../lib/crypt.php';
+require_once __DIR__ . '/../lib/keymanager.php';
+require_once __DIR__ . '/../lib/proxy.php';
+require_once __DIR__ . '/../lib/stream.php';
+require_once __DIR__ . '/../lib/util.php';
+require_once __DIR__ . '/../lib/helper.php';
+require_once __DIR__ . '/../appinfo/app.php';
+require_once __DIR__ . '/util.php';
+
+use OCA\Encryption;
+
+/**
+ * Class Test_Encryption_Keymanager
+ */
+class Test_Encryption_Helper extends \PHPUnit_Framework_TestCase {
+
+	/**
+	 * @medium
+	 */
+	function testFixPartialFilePath() {
+
+		$partFilename = 'testfile.txt.part';
+		$filename = 'testfile.txt';
+
+		$this->assertTrue(Encryption\Keymanager::isPartialFilePath($partFilename));
+
+		$this->assertEquals('testfile.txt', Encryption\Helper::fixPartialFilePath($partFilename));
+
+		$this->assertFalse(Encryption\Keymanager::isPartialFilePath($filename));
+
+		$this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($filename));
+	}
+
+
+	/**
+	 * @medium
+	 */
+	function testFixPartialFileWithTransferIdPath() {
+
+		$partFilename = 'testfile.txt.ocTransferId643653835.part';
+		$filename = 'testfile.txt';
+
+		$this->assertTrue(Encryption\Helper::isPartialFilePath($partFilename));
+
+		$this->assertEquals('testfile.txt', Encryption\Helper::fixPartialFilePath($partFilename));
+
+		$this->assertFalse(Encryption\Helper::isPartialFilePath($filename));
+
+		$this->assertEquals('testfile.txt', Encryption\Helper::fixPartialFilePath($filename));
+	}
+
+}
\ No newline at end of file
diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php
index b2d200cca3..ad6bbd3a7e 100644
--- a/apps/files_encryption/tests/keymanager.php
+++ b/apps/files_encryption/tests/keymanager.php
@@ -188,23 +188,6 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase {
 		$this->assertArrayHasKey('key', $sslInfoPrivate);
 	}
 
-	/**
-	 * @medium
-	 */
-	function testFixPartialFilePath() {
-
-		$partFilename = 'testfile.txt.part';
-		$filename = 'testfile.txt';
-
-		$this->assertTrue(Encryption\Keymanager::isPartialFilePath($partFilename));
-
-		$this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($partFilename));
-
-		$this->assertFalse(Encryption\Keymanager::isPartialFilePath($filename));
-
-		$this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($filename));
-	}
-
 	/**
 	 * @medium
 	 */
-- 
GitLab