diff options
author | Morris Jobke <hey@morrisjobke.de> | 2014-06-24 16:37:42 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2014-06-24 16:37:42 +0200 |
commit | 6be236913c48cc770beeb9d0d1c351d187237843 (patch) | |
tree | 20b8abf233d425b2b82a12ae8bbc75a630e5ebfa | |
parent | 6a4a474aa94202c0d675b86fab384f509b9522f6 (diff) | |
parent | 9c45a3196bff4ae0658cb26e7011589bd17b5454 (diff) | |
download | nextcloud-server-6be236913c48cc770beeb9d0d1c351d187237843.tar.gz nextcloud-server-6be236913c48cc770beeb9d0d1c351d187237843.zip |
Merge pull request #9181 from owncloud/enc_recursive_mkdir
always use '/' as directory seperator
-rwxr-xr-x | apps/files_encryption/lib/keymanager.php | 4 | ||||
-rw-r--r-- | apps/files_encryption/tests/keymanager.php | 30 |
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, ''); + } } |