fix versions download and previews
This commit is contained in:
parent
b3c5ef3afe
commit
e8fa3a2370
|
@ -100,13 +100,13 @@ class Encryption implements IEncryptionModule {
|
|||
$this->cipher = $this->crypt->getCipher();
|
||||
}
|
||||
|
||||
$this->path = $path;
|
||||
$this->path = $this->getPathToRealFile($path);
|
||||
$this->accessList = $accessList;
|
||||
$this->user = $user;
|
||||
$this->writeCache = '';
|
||||
$this->isWriteOperation = false;
|
||||
|
||||
$this->fileKey = $this->keyManager->getFileKey($path, $this->user);
|
||||
$this->fileKey = $this->keyManager->getFileKey($this->path, $this->user);
|
||||
|
||||
return array('cipher' => $this->cipher);
|
||||
}
|
||||
|
@ -135,7 +135,7 @@ class Encryption implements IEncryptionModule {
|
|||
$publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys);
|
||||
|
||||
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
|
||||
$this->keyManager->setAllFileKeys($path, $encryptedKeyfiles);
|
||||
$this->keyManager->setAllFileKeys($this->path, $encryptedKeyfiles);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
@ -313,4 +313,16 @@ class Encryption implements IEncryptionModule {
|
|||
public function getUnencryptedBlockSize() {
|
||||
return 6126;
|
||||
}
|
||||
|
||||
protected function getPathToRealFile($path) {
|
||||
$realPath = $path;
|
||||
$parts = explode('/', $path);
|
||||
if ($parts[2] === 'files_versions') {
|
||||
$realPath = '/' . $parts[1] . '/files/' . implode('/', array_slice($parts, 3));
|
||||
$length = strrpos($realPath, '.');
|
||||
$realPath = substr($realPath, 0, $length);
|
||||
}
|
||||
|
||||
return $realPath;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @copyright (C) 2015 ownCloud, Inc.
|
||||
*
|
||||
* @author Bjoern Schiessle <schiessle@owncloud.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption\Tests\Crypto;
|
||||
|
||||
use Test\TestCase;
|
||||
use OCA\Encryption\Crypto\Encryption;
|
||||
|
||||
class EncryptionTest extends TestCase {
|
||||
|
||||
/** @var Encryption */
|
||||
private $instance;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $keyManagerMock;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $cryptMock;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $utilMock;
|
||||
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->cryptMock = $this->getMockBuilder('OCA\Encryption\Crypto\Crypt')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->utilMock = $this->getMockBuilder('OCA\Encryption\Util')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->keyManagerMock = $this->getMockBuilder('OCA\Encryption\KeyManager')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$this->instance = new Encryption($this->cryptMock, $this->keyManagerMock, $this->utilMock);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider dataProviderForTestGetPathToRealFile
|
||||
*/
|
||||
public function testGetPathToRealFile($path, $expected) {
|
||||
$result = \Test_Helper::invokePrivate($this->instance, 'getPathToRealFile', array($path));
|
||||
$this->assertSame($expected,
|
||||
\Test_Helper::invokePrivate($this->instance, 'getPathToRealFile', array($path))
|
||||
);
|
||||
}
|
||||
|
||||
public function dataProviderForTestGetPathToRealFile() {
|
||||
return array(
|
||||
array('/user/files/foo/bar.txt', '/user/files/foo/bar.txt'),
|
||||
array('/user/files/foo.txt', '/user/files/foo.txt'),
|
||||
array('/user/files_versions/foo.txt.v543534', '/user/files/foo.txt'),
|
||||
array('/user/files_versions/foo/bar.txt.v5454', '/user/files/foo/bar.txt'),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue