summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2014-06-24 16:37:42 +0200
committerMorris Jobke <hey@morrisjobke.de>2014-06-24 16:37:42 +0200
commit6be236913c48cc770beeb9d0d1c351d187237843 (patch)
tree20b8abf233d425b2b82a12ae8bbc75a630e5ebfa
parent6a4a474aa94202c0d675b86fab384f509b9522f6 (diff)
parent9c45a3196bff4ae0658cb26e7011589bd17b5454 (diff)
downloadnextcloud-server-6be236913c48cc770beeb9d0d1c351d187237843.tar.gz
nextcloud-server-6be236913c48cc770beeb9d0d1c351d187237843.zip
Merge pull request #9181 from owncloud/enc_recursive_mkdir
always use '/' as directory seperator
-rwxr-xr-xapps/files_encryption/lib/keymanager.php4
-rw-r--r--apps/files_encryption/tests/keymanager.php30
2 files changed, 31 insertions, 3 deletions
diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php
index 28cd9e52f91..98986d1486f 100755
--- a/apps/files_encryption/lib/keymanager.php
+++ b/apps/files_encryption/lib/keymanager.php
@@ -516,7 +516,7 @@ class Keymanager {
* @param string|boolean $path
* @param string $basePath
*/
- public static function keySetPreparation(\OC\Files\View $view, $path, $basePath, $userId) {
+ protected static function keySetPreparation(\OC\Files\View $view, $path, $basePath, $userId) {
$targetPath = ltrim($path, '/');
@@ -527,7 +527,7 @@ class Keymanager {
isset($path_parts['dirname'])
&& !$view->file_exists($basePath . '/' . $path_parts['dirname'])
) {
- $sub_dirs = explode(DIRECTORY_SEPARATOR, $basePath . '/' . $path_parts['dirname']);
+ $sub_dirs = explode('/', $basePath . '/' . $path_parts['dirname']);
$dir = '';
foreach ($sub_dirs as $sub_dir) {
$dir .= '/' . $sub_dir;
diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php
index 2bd2ddc8e68..0c025443cd6 100644
--- a/apps/files_encryption/tests/keymanager.php
+++ b/apps/files_encryption/tests/keymanager.php
@@ -239,11 +239,30 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase {
\OC_FileProxy::$enabled = true;
// cleanup
- $this->view->unlink('/admin/files/folder1');
+ $this->view->deleteAll('/admin/files/folder1');
// change encryption proxy to previous state
\OC_FileProxy::$enabled = $proxyStatus;
}
+
+ function testKeySetPreperation() {
+ $basePath = '/'.Test_Encryption_Keymanager::TEST_USER.'/files';
+ $path = '/folder1/subfolder/subsubfolder';
+
+ $this->assertFalse($this->view->is_dir($basePath . '/testKeySetPreperation'));
+
+ $result = TestProtectedKeymanagerMethods::testKeySetPreperation($this->view, $path, $basePath);
+
+ // return path without leading slash
+ $this->assertSame('folder1/subfolder/subsubfolder', $result);
+
+ // check if directory structure was created
+ $this->assertTrue($this->view->is_dir($basePath . '/folder1/subfolder/subsubfolder'));
+
+ // cleanup
+ $this->view->deleteAll($basePath . '/folder1');
+
+ }
}
/**
@@ -257,4 +276,13 @@ class TestProtectedKeymanagerMethods extends \OCA\Encryption\Keymanager {
public static function testGetFilenameFromShareKey($sharekey) {
return self::getFilenameFromShareKey($sharekey);
}
+
+ /**
+ * @param \OC\Files\View $view relative to data/
+ * @param string $path
+ * @param string $basePath
+ */
+ public static function testKeySetPreperation($view, $path, $basePath) {
+ return self::keySetPreparation($view, $path, $basePath, '');
+ }
}