get dirname from sharePath
This commit is contained in:
parent
b0fcf0fa0e
commit
19e8c4fcb1
|
@ -232,7 +232,7 @@ class Encryption extends Wrapper {
|
||||||
|
|
||||||
$sharePath = $this->fullPath;
|
$sharePath = $this->fullPath;
|
||||||
if (!$this->storage->file_exists($this->internalPath)) {
|
if (!$this->storage->file_exists($this->internalPath)) {
|
||||||
$sharePath = dirname($path);
|
$sharePath = dirname($sharePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
$accessList = $this->file->getAccessList($sharePath);
|
$accessList = $this->file->getAccessList($sharePath);
|
||||||
|
|
|
@ -8,8 +8,10 @@ use OCA\Encryption_Dummy\DummyModule;
|
||||||
class Encryption extends \Test\TestCase {
|
class Encryption extends \Test\TestCase {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param string $fileName
|
||||||
* @param string $mode
|
* @param string $mode
|
||||||
* @param integer $limit
|
* @param integer $unencryptedSize
|
||||||
|
* @return resource
|
||||||
*/
|
*/
|
||||||
protected function getStream($fileName, $mode, $unencryptedSize) {
|
protected function getStream($fileName, $mode, $unencryptedSize) {
|
||||||
|
|
||||||
|
@ -45,6 +47,98 @@ class Encryption extends \Test\TestCase {
|
||||||
$util, $file, $mode, $size, $unencryptedSize);
|
$util, $file, $mode, $size, $unencryptedSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataProviderStreamOpen()
|
||||||
|
*/
|
||||||
|
public function testStreamOpen($mode,
|
||||||
|
$fullPath,
|
||||||
|
$fileExists,
|
||||||
|
$expectedSharePath,
|
||||||
|
$expectedSize,
|
||||||
|
$expectedReadOnly) {
|
||||||
|
|
||||||
|
// build mocks
|
||||||
|
$encryptionModuleMock = $this->getMockBuilder('\OCP\Encryption\IEncryptionModule')
|
||||||
|
->disableOriginalConstructor()->getMock();
|
||||||
|
$encryptionModuleMock->expects($this->once())
|
||||||
|
->method('getUnencryptedBlockSize')->willReturn(99);
|
||||||
|
$encryptionModuleMock->expects($this->once())
|
||||||
|
->method('begin')->willReturn(true);
|
||||||
|
|
||||||
|
$storageMock = $this->getMockBuilder('\OC\Files\Storage\Storage')
|
||||||
|
->disableOriginalConstructor()->getMock();
|
||||||
|
$storageMock->expects($this->once())->method('file_exists')->willReturn($fileExists);
|
||||||
|
|
||||||
|
$fileMock = $this->getMockBuilder('\OC\Encryption\File')
|
||||||
|
->disableOriginalConstructor()->getMock();
|
||||||
|
$fileMock->expects($this->once())->method('getAccessList')
|
||||||
|
->will($this->returnCallback(function($sharePath) use ($expectedSharePath) {
|
||||||
|
$this->assertSame($expectedSharePath, $sharePath);
|
||||||
|
return array();
|
||||||
|
}));
|
||||||
|
|
||||||
|
// get a instance of the stream wrapper
|
||||||
|
$streamWrapper = $this->getMockBuilder('\OC\Files\Stream\Encryption')
|
||||||
|
->setMethods(['loadContext'])->disableOriginalConstructor()->getMock();
|
||||||
|
|
||||||
|
// set internal properties of the stream wrapper
|
||||||
|
$stream = new \ReflectionClass('\OC\Files\Stream\Encryption');
|
||||||
|
$encryptionModule = $stream->getProperty('encryptionModule');
|
||||||
|
$encryptionModule->setAccessible(true);
|
||||||
|
$encryptionModule->setValue($streamWrapper, $encryptionModuleMock);
|
||||||
|
$encryptionModule->setAccessible(false);
|
||||||
|
$storage = $stream->getProperty('storage');
|
||||||
|
$storage->setAccessible(true);
|
||||||
|
$storage->setValue($streamWrapper, $storageMock);
|
||||||
|
$storage->setAccessible(false);
|
||||||
|
$file = $stream->getProperty('file');
|
||||||
|
$file->setAccessible(true);
|
||||||
|
$file->setValue($streamWrapper, $fileMock);
|
||||||
|
$file->setAccessible(false);
|
||||||
|
$fullPathP = $stream->getProperty('fullPath');
|
||||||
|
$fullPathP->setAccessible(true);
|
||||||
|
$fullPathP->setValue($streamWrapper, $fullPath);
|
||||||
|
$fullPathP->setAccessible(false);
|
||||||
|
$header = $stream->getProperty('header');
|
||||||
|
$header->setAccessible(true);
|
||||||
|
$header->setValue($streamWrapper, array());
|
||||||
|
$header->setAccessible(false);
|
||||||
|
|
||||||
|
// call stream_open, that's the method we want to test
|
||||||
|
$dummyVar = 'foo';
|
||||||
|
$streamWrapper->stream_open('', $mode, '', $dummyVar);
|
||||||
|
|
||||||
|
// check internal properties
|
||||||
|
$size = $stream->getProperty('size');
|
||||||
|
$size->setAccessible(true);
|
||||||
|
$this->assertSame($expectedSize,
|
||||||
|
$size->getValue($streamWrapper)
|
||||||
|
);
|
||||||
|
$size->setAccessible(false);
|
||||||
|
|
||||||
|
$unencryptedSize = $stream->getProperty('unencryptedSize');
|
||||||
|
$unencryptedSize->setAccessible(true);
|
||||||
|
$this->assertSame($expectedSize,
|
||||||
|
$unencryptedSize->getValue($streamWrapper)
|
||||||
|
);
|
||||||
|
$unencryptedSize->setAccessible(false);
|
||||||
|
|
||||||
|
$readOnly = $stream->getProperty('readOnly');
|
||||||
|
$readOnly->setAccessible(true);
|
||||||
|
$this->assertSame($expectedReadOnly,
|
||||||
|
$readOnly->getValue($streamWrapper)
|
||||||
|
);
|
||||||
|
$readOnly->setAccessible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataProviderStreamOpen() {
|
||||||
|
return array(
|
||||||
|
array('r', '/foo/bar/test.txt', true, '/foo/bar/test.txt', null, true),
|
||||||
|
array('r', '/foo/bar/test.txt', false, '/foo/bar', null, true),
|
||||||
|
array('w', '/foo/bar/test.txt', true, '/foo/bar/test.txt', 0, false),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testWriteRead() {
|
public function testWriteRead() {
|
||||||
$fileName = tempnam("/tmp", "FOO");
|
$fileName = tempnam("/tmp", "FOO");
|
||||||
$stream = $this->getStream($fileName, 'w+', 0);
|
$stream = $this->getStream($fileName, 'w+', 0);
|
||||||
|
|
Loading…
Reference in New Issue