diff options
author | Bjoern Schiessle <schiessle@owncloud.com> | 2014-10-02 12:55:46 +0200 |
---|---|---|
committer | Bjoern Schiessle <schiessle@owncloud.com> | 2014-10-06 12:02:08 +0200 |
commit | 9147219377d6fec5666a03943be1892253750871 (patch) | |
tree | 6a415f052231554fb2a120f69a1a00e7db5e8089 /apps | |
parent | 537f046e66b16aa98c7b9fcf60e767e9f861f342 (diff) | |
download | nextcloud-server-9147219377d6fec5666a03943be1892253750871.tar.gz nextcloud-server-9147219377d6fec5666a03943be1892253750871.zip |
we also encrypt/decrypt files in the versions folder for previews and if encryption is enabled/disabled
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_encryption/lib/proxy.php | 11 | ||||
-rw-r--r-- | apps/files_encryption/tests/proxy.php | 38 |
2 files changed, 46 insertions, 3 deletions
diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index b406404a688..3b9dcbe7767 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -49,12 +49,17 @@ class Proxy extends \OC_FileProxy { * @param string $uid user * @return boolean */ - private function isExcludedPath($path, $uid) { + protected function isExcludedPath($path, $uid) { $view = new \OC\Files\View(); - // files outside of the files-folder are excluded - if(strpos($path, '/' . $uid . '/files/') !== 0) { + $path = \OC\Files\Filesystem::normalizePath($path); + + // we only encrypt/decrypt files in the files and files_versions folder + if( + strpos($path, '/' . $uid . '/files/') !== 0 && + strpos($path, '/' . $uid . '/files_versions/') !== 0) { + return true; } diff --git a/apps/files_encryption/tests/proxy.php b/apps/files_encryption/tests/proxy.php index 9ec1f940edd..42637a52e04 100644 --- a/apps/files_encryption/tests/proxy.php +++ b/apps/files_encryption/tests/proxy.php @@ -136,4 +136,42 @@ class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase { } + /** + * @dataProvider isExcludedPathProvider + */ + function testIsExcludedPath($path, $expected) { + $this->view->mkdir(dirname($path)); + $this->view->file_put_contents($path, "test"); + + $testClass = new DummyProxy(); + + $result = $testClass->isExcludedPathTesting($path, $this->userId); + $this->assertSame($expected, $result); + + $this->view->deleteAll(dirname($path)); + + } + + public function isExcludedPathProvider() { + return array( + array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files/test.txt', false), + array (\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files/test.txt', false), + array ('/files/test.txt', true), + array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files/versions/test.txt', false), + array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files_versions/test.txt', false), + array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files_trashbin/test.txt', true), + array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/file/test.txt', true), + ); + } + +} + + +/** + * Dummy class to make protected methods available for testing + */ +class DummyProxy extends \OCA\Encryption\Proxy { + public function isExcludedPathTesting($path, $uid) { + return $this->isExcludedPath($path, $uid); + } } |