improved test
- fixed testPermanentDeleteFile sometimes failed - speed optimization - reformat code
This commit is contained in:
parent
0c621ff6a9
commit
c7981abbc9
File diff suppressed because it is too large
Load Diff
|
@ -6,14 +6,14 @@
|
|||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
require_once realpath(dirname(__FILE__) . '/../../../lib/base.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/crypt.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/proxy.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/stream.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/util.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/helper.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../appinfo/app.php');
|
||||
require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' );
|
||||
|
||||
use OCA\Encryption;
|
||||
|
||||
|
@ -33,109 +33,111 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase
|
|||
public $randomKey;
|
||||
public $dataShort;
|
||||
|
||||
function setUp()
|
||||
{
|
||||
public static function setUpBeforeClass() {
|
||||
// reset backend
|
||||
\OC_User::clearBackends();
|
||||
\OC_User::useBackend('database');
|
||||
\OC_User::useBackend( 'database' );
|
||||
|
||||
// Filesystem related hooks
|
||||
\OCA\Encryption\Helper::registerFilesystemHooks();
|
||||
|
||||
// clear and register hooks
|
||||
\OC_FileProxy::clearProxies();
|
||||
\OC_FileProxy::register( new OCA\Encryption\Proxy() );
|
||||
|
||||
// disable file proxy by default
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
// setup filesystem
|
||||
\OC_Util::tearDownFS();
|
||||
\OC_User::setUserId( '' );
|
||||
\OC\Files\Filesystem::tearDown();
|
||||
\OC_Util::setupFS( 'admin' );
|
||||
\OC_User::setUserId( 'admin' );
|
||||
|
||||
// login admin
|
||||
$params['uid'] = 'admin';
|
||||
$params['password'] = 'admin';
|
||||
OCA\Encryption\Hooks::login( $params );
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
// set content for encrypting / decrypting in tests
|
||||
$this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php'));
|
||||
$this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) );
|
||||
$this->dataShort = 'hats';
|
||||
$this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php');
|
||||
$this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt');
|
||||
$this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt');
|
||||
$this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' );
|
||||
$this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' );
|
||||
$this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' );
|
||||
$this->randomKey = Encryption\Crypt::generateKey();
|
||||
|
||||
$keypair = Encryption\Crypt::createKeypair();
|
||||
$this->genPublicKey = $keypair['publicKey'];
|
||||
$this->genPrivateKey = $keypair['privateKey'];
|
||||
|
||||
$this->view = new \OC_FilesystemView('/');
|
||||
$this->view = new \OC_FilesystemView( '/' );
|
||||
|
||||
\OC_User::setUserId('admin');
|
||||
\OC_User::setUserId( 'admin' );
|
||||
$this->userId = 'admin';
|
||||
$this->pass = 'admin';
|
||||
|
||||
$userHome = \OC_User::getHome($this->userId);
|
||||
$this->dataDir = str_replace('/' . $this->userId, '', $userHome);
|
||||
|
||||
// Filesystem related hooks
|
||||
\OCA\Encryption\Helper::registerFilesystemHooks();
|
||||
|
||||
\OC_FileProxy::register(new OCA\Encryption\Proxy());
|
||||
$userHome = \OC_User::getHome( $this->userId );
|
||||
$this->dataDir = str_replace( '/' . $this->userId, '', $userHome );
|
||||
|
||||
// remember files_trashbin state
|
||||
$this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin');
|
||||
$this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' );
|
||||
|
||||
// we don't want to tests with app files_trashbin enabled
|
||||
\OC_App::disable('files_trashbin');
|
||||
|
||||
\OC_Util::tearDownFS();
|
||||
\OC_User::setUserId('');
|
||||
\OC\Files\Filesystem::tearDown();
|
||||
\OC_Util::setupFS($this->userId);
|
||||
\OC_User::setUserId($this->userId);
|
||||
|
||||
$params['uid'] = $this->userId;
|
||||
$params['password'] = $this->pass;
|
||||
OCA\Encryption\Hooks::login($params);
|
||||
\OC_App::disable( 'files_trashbin' );
|
||||
}
|
||||
|
||||
function tearDown()
|
||||
{
|
||||
|
||||
\OC_FileProxy::$enabled = true;
|
||||
\OC_FileProxy::clearProxies();
|
||||
|
||||
function tearDown() {
|
||||
// reset app files_trashbin
|
||||
if ($this->stateFilesTrashbin) {
|
||||
OC_App::enable('files_trashbin');
|
||||
if ( $this->stateFilesTrashbin ) {
|
||||
OC_App::enable( 'files_trashbin' );
|
||||
} else {
|
||||
OC_App::disable('files_trashbin');
|
||||
OC_App::disable( 'files_trashbin' );
|
||||
}
|
||||
}
|
||||
|
||||
function testGetPrivateKey()
|
||||
{
|
||||
public static function tearDownAfterClass() {
|
||||
\OC_FileProxy::$enabled = true;
|
||||
}
|
||||
|
||||
$key = Encryption\Keymanager::getPrivateKey($this->view, $this->userId);
|
||||
function testGetPrivateKey() {
|
||||
|
||||
$privateKey = Encryption\Crypt::symmetricDecryptFileContent($key, $this->pass);
|
||||
$key = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId );
|
||||
|
||||
$res = openssl_pkey_get_private($privateKey);
|
||||
$privateKey = Encryption\Crypt::symmetricDecryptFileContent( $key, $this->pass );
|
||||
|
||||
$this->assertTrue(is_resource($res));
|
||||
$res = openssl_pkey_get_private( $privateKey );
|
||||
|
||||
$sslInfo = openssl_pkey_get_details($res);
|
||||
$this->assertTrue( is_resource( $res ) );
|
||||
|
||||
$this->assertArrayHasKey('key', $sslInfo);
|
||||
$sslInfo = openssl_pkey_get_details( $res );
|
||||
|
||||
$this->assertArrayHasKey( 'key', $sslInfo );
|
||||
|
||||
}
|
||||
|
||||
function testGetPublicKey()
|
||||
{
|
||||
function testGetPublicKey() {
|
||||
|
||||
$publiceKey = Encryption\Keymanager::getPublicKey($this->view, $this->userId);
|
||||
$publiceKey = Encryption\Keymanager::getPublicKey( $this->view, $this->userId );
|
||||
|
||||
$res = openssl_pkey_get_public($publiceKey);
|
||||
$res = openssl_pkey_get_public( $publiceKey );
|
||||
|
||||
$this->assertTrue(is_resource($res));
|
||||
$this->assertTrue( is_resource( $res ) );
|
||||
|
||||
$sslInfo = openssl_pkey_get_details($res);
|
||||
$sslInfo = openssl_pkey_get_details( $res );
|
||||
|
||||
$this->assertArrayHasKey('key', $sslInfo);
|
||||
$this->assertArrayHasKey( 'key', $sslInfo );
|
||||
}
|
||||
|
||||
function testSetFileKey()
|
||||
{
|
||||
function testSetFileKey() {
|
||||
|
||||
# NOTE: This cannot be tested until we are able to break out
|
||||
# of the FileSystemView data directory root
|
||||
|
||||
$key = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->randomKey, 'hat');
|
||||
$key = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->randomKey, 'hat' );
|
||||
|
||||
$file = 'unittest-' . time() . '.txt';
|
||||
|
||||
|
@ -143,101 +145,98 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase
|
|||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
$this->view->file_put_contents($this->userId . '/files/' . $file, $key['encrypted']);
|
||||
$this->view->file_put_contents( $this->userId . '/files/' . $file, $key['encrypted'] );
|
||||
|
||||
// Re-enable proxy - our work is done
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
||||
//$view = new \OC_FilesystemView( '/' . $this->userId . '/files_encryption/keyfiles' );
|
||||
Encryption\Keymanager::setFileKey($this->view, $file, $this->userId, $key['key']);
|
||||
Encryption\Keymanager::setFileKey( $this->view, $file, $this->userId, $key['key'] );
|
||||
|
||||
// enable encryption proxy
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = true;
|
||||
|
||||
// cleanup
|
||||
$this->view->unlink('/' . $this->userId . '/files/' . $file);
|
||||
$this->view->unlink( '/' . $this->userId . '/files/' . $file );
|
||||
|
||||
// change encryption proxy to previous state
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
||||
}
|
||||
|
||||
function testGetUserKeys()
|
||||
{
|
||||
function testGetUserKeys() {
|
||||
|
||||
$keys = Encryption\Keymanager::getUserKeys($this->view, $this->userId);
|
||||
$keys = Encryption\Keymanager::getUserKeys( $this->view, $this->userId );
|
||||
|
||||
$resPublic = openssl_pkey_get_public($keys['publicKey']);
|
||||
$resPublic = openssl_pkey_get_public( $keys['publicKey'] );
|
||||
|
||||
$this->assertTrue(is_resource($resPublic));
|
||||
$this->assertTrue( is_resource( $resPublic ) );
|
||||
|
||||
$sslInfoPublic = openssl_pkey_get_details($resPublic);
|
||||
$sslInfoPublic = openssl_pkey_get_details( $resPublic );
|
||||
|
||||
$this->assertArrayHasKey('key', $sslInfoPublic);
|
||||
$this->assertArrayHasKey( 'key', $sslInfoPublic );
|
||||
|
||||
$privateKey = Encryption\Crypt::symmetricDecryptFileContent($keys['privateKey'], $this->pass);
|
||||
$privateKey = Encryption\Crypt::symmetricDecryptFileContent( $keys['privateKey'], $this->pass );
|
||||
|
||||
$resPrivate = openssl_pkey_get_private($privateKey);
|
||||
$resPrivate = openssl_pkey_get_private( $privateKey );
|
||||
|
||||
$this->assertTrue(is_resource($resPrivate));
|
||||
$this->assertTrue( is_resource( $resPrivate ) );
|
||||
|
||||
$sslInfoPrivate = openssl_pkey_get_details($resPrivate);
|
||||
$sslInfoPrivate = openssl_pkey_get_details( $resPrivate );
|
||||
|
||||
$this->assertArrayHasKey('key', $sslInfoPrivate);
|
||||
$this->assertArrayHasKey( 'key', $sslInfoPrivate );
|
||||
}
|
||||
|
||||
function testFixPartialFilePath()
|
||||
{
|
||||
function testFixPartialFilePath() {
|
||||
|
||||
$partFilename = 'testfile.txt.part';
|
||||
$filename = 'testfile.txt';
|
||||
|
||||
$this->assertTrue(Encryption\Keymanager::isPartialFilePath($partFilename));
|
||||
$this->assertTrue( Encryption\Keymanager::isPartialFilePath( $partFilename ) );
|
||||
|
||||
$this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($partFilename));
|
||||
$this->assertEquals( 'testfile.txt', Encryption\Keymanager::fixPartialFilePath( $partFilename ) );
|
||||
|
||||
$this->assertFalse(Encryption\Keymanager::isPartialFilePath($filename));
|
||||
$this->assertFalse( Encryption\Keymanager::isPartialFilePath( $filename ) );
|
||||
|
||||
$this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($filename));
|
||||
$this->assertEquals( 'testfile.txt', Encryption\Keymanager::fixPartialFilePath( $filename ) );
|
||||
}
|
||||
|
||||
function testRecursiveDelShareKeys()
|
||||
{
|
||||
function testRecursiveDelShareKeys() {
|
||||
|
||||
// generate filename
|
||||
$filename = '/tmp-' . time() . '.txt';
|
||||
|
||||
// create folder structure
|
||||
$this->view->mkdir('/admin/files/folder1');
|
||||
$this->view->mkdir('/admin/files/folder1/subfolder');
|
||||
$this->view->mkdir('/admin/files/folder1/subfolder/subsubfolder');
|
||||
$this->view->mkdir( '/admin/files/folder1' );
|
||||
$this->view->mkdir( '/admin/files/folder1/subfolder' );
|
||||
$this->view->mkdir( '/admin/files/folder1/subfolder/subsubfolder' );
|
||||
|
||||
// enable encryption proxy
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = true;
|
||||
|
||||
// save file with content
|
||||
$cryptedFile = file_put_contents('crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort);
|
||||
$cryptedFile = file_put_contents( 'crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort );
|
||||
|
||||
// test that data was successfully written
|
||||
$this->assertTrue(is_int($cryptedFile));
|
||||
$this->assertTrue( is_int( $cryptedFile ) );
|
||||
|
||||
// change encryption proxy to previous state
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
||||
// recursive delete keys
|
||||
Encryption\Keymanager::delShareKey($this->view, array('admin'), '/folder1/');
|
||||
Encryption\Keymanager::delShareKey( $this->view, array( 'admin' ), '/folder1/' );
|
||||
|
||||
// check if share key not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey'));
|
||||
$this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey' ) );
|
||||
|
||||
// enable encryption proxy
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = true;
|
||||
|
||||
// cleanup
|
||||
$this->view->unlink('/admin/files/folder1');
|
||||
$this->view->unlink( '/admin/files/folder1' );
|
||||
|
||||
// change encryption proxy to previous state
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -20,13 +20,13 @@
|
|||
*
|
||||
*/
|
||||
|
||||
require_once realpath(dirname(__FILE__) . '/../../../lib/base.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/crypt.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/proxy.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/stream.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/util.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../appinfo/app.php');
|
||||
require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' );
|
||||
|
||||
use OCA\Encryption;
|
||||
|
||||
|
@ -46,137 +46,141 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase
|
|||
public $dataShort;
|
||||
public $stateFilesTrashbin;
|
||||
|
||||
function setUp()
|
||||
{
|
||||
public static function setUpBeforeClass() {
|
||||
// reset backend
|
||||
\OC_User::useBackend('database');
|
||||
\OC_User::clearBackends();
|
||||
\OC_User::useBackend( 'database' );
|
||||
|
||||
// Filesystem related hooks
|
||||
\OCA\Encryption\Helper::registerFilesystemHooks();
|
||||
|
||||
// clear and register hooks
|
||||
\OC_FileProxy::clearProxies();
|
||||
\OC_FileProxy::register( new OCA\Encryption\Proxy() );
|
||||
|
||||
// setup filesystem
|
||||
\OC_Util::tearDownFS();
|
||||
\OC_User::setUserId( '' );
|
||||
\OC\Files\Filesystem::tearDown();
|
||||
\OC_Util::setupFS( 'admin' );
|
||||
\OC_User::setUserId( 'admin' );
|
||||
|
||||
// login admin
|
||||
$params['uid'] = 'admin';
|
||||
$params['password'] = 'admin';
|
||||
OCA\Encryption\Hooks::login( $params );
|
||||
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
// set user id
|
||||
\OC_User::setUserId('admin');
|
||||
\OC_User::setUserId( 'admin' );
|
||||
$this->userId = 'admin';
|
||||
$this->pass = 'admin';
|
||||
|
||||
// init filesystem view
|
||||
$this->view = new \OC_FilesystemView('/');
|
||||
$this->view = new \OC_FilesystemView( '/' );
|
||||
|
||||
// init short data
|
||||
$this->dataShort = 'hats';
|
||||
|
||||
// init filesystem related hooks
|
||||
\OCA\Encryption\Helper::registerFilesystemHooks();
|
||||
|
||||
// register encryption file proxy
|
||||
\OC_FileProxy::register(new OCA\Encryption\Proxy());
|
||||
|
||||
// remember files_trashbin state
|
||||
$this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin');
|
||||
$this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' );
|
||||
|
||||
// we don't want to tests with app files_trashbin enabled
|
||||
\OC_App::disable('files_trashbin');
|
||||
|
||||
// init filesystem for user
|
||||
\OC_Util::tearDownFS();
|
||||
\OC_User::setUserId('');
|
||||
\OC\Files\Filesystem::tearDown();
|
||||
\OC_Util::setupFS($this->userId);
|
||||
\OC_User::setUserId($this->userId);
|
||||
|
||||
// login user
|
||||
$params['uid'] = $this->userId;
|
||||
$params['password'] = $this->pass;
|
||||
OCA\Encryption\Hooks::login($params);
|
||||
\OC_App::disable( 'files_trashbin' );
|
||||
}
|
||||
|
||||
function tearDown()
|
||||
{
|
||||
function tearDown() {
|
||||
// reset app files_trashbin
|
||||
if ($this->stateFilesTrashbin) {
|
||||
OC_App::enable('files_trashbin');
|
||||
if ( $this->stateFilesTrashbin ) {
|
||||
OC_App::enable( 'files_trashbin' );
|
||||
} else {
|
||||
OC_App::disable('files_trashbin');
|
||||
OC_App::disable( 'files_trashbin' );
|
||||
}
|
||||
}
|
||||
|
||||
public static function tearDownAfterClass() {
|
||||
|
||||
// clear all proxies
|
||||
\OC_FileProxy::clearProxies();
|
||||
}
|
||||
|
||||
function testStreamOptions() {
|
||||
$filename = '/tmp-' . time();
|
||||
$view = new \OC\Files\View('/' . $this->userId . '/files');
|
||||
$view = new \OC\Files\View( '/' . $this->userId . '/files' );
|
||||
|
||||
// Save short data as encrypted file using stream wrapper
|
||||
$cryptedFile = $view->file_put_contents($filename, $this->dataShort);
|
||||
$cryptedFile = $view->file_put_contents( $filename, $this->dataShort );
|
||||
|
||||
// Test that data was successfully written
|
||||
$this->assertTrue(is_int($cryptedFile));
|
||||
$this->assertTrue( is_int( $cryptedFile ) );
|
||||
|
||||
$handle = $view->fopen($filename, 'r');
|
||||
$handle = $view->fopen( $filename, 'r' );
|
||||
|
||||
// check if stream is at position zero
|
||||
$this->assertEquals(0,ftell($handle));
|
||||
$this->assertEquals( 0, ftell( $handle ) );
|
||||
|
||||
// set stream options
|
||||
$this->assertTrue(flock($handle, LOCK_SH));
|
||||
$this->assertTrue(flock($handle, LOCK_UN));
|
||||
$this->assertTrue( flock( $handle, LOCK_SH ) );
|
||||
$this->assertTrue( flock( $handle, LOCK_UN ) );
|
||||
|
||||
// tear down
|
||||
$view->unlink($filename);
|
||||
$view->unlink( $filename );
|
||||
}
|
||||
|
||||
function testStreamSetBlocking() {
|
||||
$filename = '/tmp-' . time();
|
||||
$view = new \OC\Files\View('/' . $this->userId . '/files');
|
||||
$view = new \OC\Files\View( '/' . $this->userId . '/files' );
|
||||
|
||||
// Save short data as encrypted file using stream wrapper
|
||||
$cryptedFile = $view->file_put_contents($filename, $this->dataShort);
|
||||
$cryptedFile = $view->file_put_contents( $filename, $this->dataShort );
|
||||
|
||||
// Test that data was successfully written
|
||||
$this->assertTrue(is_int($cryptedFile));
|
||||
$this->assertTrue( is_int( $cryptedFile ) );
|
||||
|
||||
$handle = $view->fopen($filename, 'r');
|
||||
$handle = $view->fopen( $filename, 'r' );
|
||||
|
||||
// set stream options
|
||||
$this->assertTrue(stream_set_blocking($handle,1));
|
||||
$this->assertTrue( stream_set_blocking( $handle, 1 ) );
|
||||
|
||||
// tear down
|
||||
$view->unlink($filename);
|
||||
$view->unlink( $filename );
|
||||
}
|
||||
|
||||
function testStreamSetTimeout() {
|
||||
$filename = '/tmp-' . time();
|
||||
$view = new \OC\Files\View('/' . $this->userId . '/files');
|
||||
$view = new \OC\Files\View( '/' . $this->userId . '/files' );
|
||||
|
||||
// Save short data as encrypted file using stream wrapper
|
||||
$cryptedFile = $view->file_put_contents($filename, $this->dataShort);
|
||||
$cryptedFile = $view->file_put_contents( $filename, $this->dataShort );
|
||||
|
||||
// Test that data was successfully written
|
||||
$this->assertTrue(is_int($cryptedFile));
|
||||
$this->assertTrue( is_int( $cryptedFile ) );
|
||||
|
||||
$handle = $view->fopen($filename, 'r');
|
||||
$handle = $view->fopen( $filename, 'r' );
|
||||
|
||||
// set stream options
|
||||
$this->assertFalse(stream_set_timeout($handle,1));
|
||||
$this->assertFalse( stream_set_timeout( $handle, 1 ) );
|
||||
|
||||
// tear down
|
||||
$view->unlink($filename);
|
||||
$view->unlink( $filename );
|
||||
}
|
||||
|
||||
function testStreamSetWriteBuffer() {
|
||||
$filename = '/tmp-' . time();
|
||||
$view = new \OC\Files\View('/' . $this->userId . '/files');
|
||||
$view = new \OC\Files\View( '/' . $this->userId . '/files' );
|
||||
|
||||
// Save short data as encrypted file using stream wrapper
|
||||
$cryptedFile = $view->file_put_contents($filename, $this->dataShort);
|
||||
$cryptedFile = $view->file_put_contents( $filename, $this->dataShort );
|
||||
|
||||
// Test that data was successfully written
|
||||
$this->assertTrue(is_int($cryptedFile));
|
||||
$this->assertTrue( is_int( $cryptedFile ) );
|
||||
|
||||
$handle = $view->fopen($filename, 'r');
|
||||
$handle = $view->fopen( $filename, 'r' );
|
||||
|
||||
// set stream options
|
||||
$this->assertEquals(0, stream_set_write_buffer($handle,1024));
|
||||
$this->assertEquals( 0, stream_set_write_buffer( $handle, 1024 ) );
|
||||
|
||||
// tear down
|
||||
$view->unlink($filename);
|
||||
$view->unlink( $filename );
|
||||
}
|
||||
}
|
|
@ -20,14 +20,14 @@
|
|||
*
|
||||
*/
|
||||
|
||||
require_once realpath(dirname(__FILE__) . '/../../../lib/base.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/crypt.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/proxy.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/stream.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/util.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../appinfo/app.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../../files_trashbin/appinfo/app.php');
|
||||
require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../../files_trashbin/appinfo/app.php' );
|
||||
|
||||
use OCA\Encryption;
|
||||
|
||||
|
@ -50,18 +50,45 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase
|
|||
public $subfolder;
|
||||
public $subsubfolder;
|
||||
|
||||
function setUp()
|
||||
{
|
||||
public static function setUpBeforeClass() {
|
||||
// reset backend
|
||||
\OC_User::useBackend('database');
|
||||
\OC_User::clearBackends();
|
||||
\OC_User::useBackend( 'database' );
|
||||
|
||||
\OC_Hook::clear( 'OC_Filesystem' );
|
||||
\OC_Hook::clear( 'OC_User' );
|
||||
|
||||
// trashbin hooks
|
||||
\OCA\Files_Trashbin\Trashbin::registerHooks();
|
||||
|
||||
// Filesystem related hooks
|
||||
\OCA\Encryption\Helper::registerFilesystemHooks();
|
||||
|
||||
// clear and register hooks
|
||||
\OC_FileProxy::clearProxies();
|
||||
\OC_FileProxy::register( new OCA\Encryption\Proxy() );
|
||||
|
||||
// setup filesystem
|
||||
\OC_Util::tearDownFS();
|
||||
\OC_User::setUserId( '' );
|
||||
\OC\Files\Filesystem::tearDown();
|
||||
\OC_Util::setupFS( 'admin' );
|
||||
\OC_User::setUserId( 'admin' );
|
||||
|
||||
// login admin
|
||||
$params['uid'] = 'admin';
|
||||
$params['password'] = 'admin';
|
||||
OCA\Encryption\Hooks::login( $params );
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
// set user id
|
||||
\OC_User::setUserId('admin');
|
||||
\OC_User::setUserId( 'admin' );
|
||||
$this->userId = 'admin';
|
||||
$this->pass = 'admin';
|
||||
|
||||
// init filesystem view
|
||||
$this->view = new \OC_FilesystemView('/');
|
||||
$this->view = new \OC_FilesystemView( '/' );
|
||||
|
||||
// init short data
|
||||
$this->dataShort = 'hats';
|
||||
|
@ -70,48 +97,24 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase
|
|||
$this->subfolder = '/subfolder1';
|
||||
$this->subsubfolder = '/subsubfolder1';
|
||||
|
||||
\OC_Hook::clear('OC_Filesystem');
|
||||
\OC_Hook::clear('OC_User');
|
||||
|
||||
// init filesystem related hooks
|
||||
\OCA\Encryption\Helper::registerFilesystemHooks();
|
||||
|
||||
// register encryption file proxy
|
||||
\OC_FileProxy::register(new OCA\Encryption\Proxy());
|
||||
|
||||
// trashbin hooks
|
||||
\OCA\Files_Trashbin\Trashbin::registerHooks();
|
||||
|
||||
// remember files_trashbin state
|
||||
$this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin');
|
||||
$this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' );
|
||||
|
||||
// we don't want to tests with app files_trashbin enabled
|
||||
\OC_App::enable('files_trashbin');
|
||||
|
||||
// init filesystem for user
|
||||
\OC_Util::tearDownFS();
|
||||
\OC_User::setUserId('');
|
||||
\OC\Files\Filesystem::tearDown();
|
||||
\OC_Util::setupFS($this->userId);
|
||||
\OC_User::setUserId($this->userId);
|
||||
|
||||
// login user
|
||||
$params['uid'] = $this->userId;
|
||||
$params['password'] = $this->pass;
|
||||
OCA\Encryption\Hooks::login($params);
|
||||
// we want to tests with app files_trashbin enabled
|
||||
\OC_App::enable( 'files_trashbin' );
|
||||
}
|
||||
|
||||
function tearDown()
|
||||
{
|
||||
function tearDown() {
|
||||
// reset app files_trashbin
|
||||
if ($this->stateFilesTrashbin) {
|
||||
OC_App::enable('files_trashbin');
|
||||
if ( $this->stateFilesTrashbin ) {
|
||||
OC_App::enable( 'files_trashbin' );
|
||||
} else {
|
||||
OC_App::disable('files_trashbin');
|
||||
OC_App::disable( 'files_trashbin' );
|
||||
}
|
||||
}
|
||||
|
||||
public static function tearDownAfterClass() {
|
||||
|
||||
// clear all proxies
|
||||
\OC_FileProxy::clearProxies();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -123,49 +126,49 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase
|
|||
$filename = 'tmp-' . time() . '.txt';
|
||||
|
||||
// save file with content
|
||||
$cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort);
|
||||
$cryptedFile = file_put_contents( 'crypt:///' . $filename, $this->dataShort );
|
||||
|
||||
// test that data was successfully written
|
||||
$this->assertTrue(is_int($cryptedFile));
|
||||
$this->assertTrue( is_int( $cryptedFile ) );
|
||||
|
||||
// check if key for admin exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key'));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) );
|
||||
|
||||
// check if share key for admin exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey'));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) );
|
||||
|
||||
// delete file
|
||||
\OC\FIles\Filesystem::unlink($filename);
|
||||
\OC\FIles\Filesystem::unlink( $filename );
|
||||
|
||||
// check if file not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files/' . $filename));
|
||||
$this->assertFalse( $this->view->file_exists( '/admin/files/' . $filename ) );
|
||||
|
||||
// check if key for admin not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key'));
|
||||
$this->assertFalse( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) );
|
||||
|
||||
// check if share key for admin not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey'));
|
||||
$this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) );
|
||||
|
||||
// get files
|
||||
$trashFiles = $this->view->getDirectoryContent('/admin/files_trashbin/files/');
|
||||
$trashFiles = $this->view->getDirectoryContent( '/admin/files_trashbin/files/' );
|
||||
|
||||
$trashFileSuffix = null;
|
||||
// find created file with timestamp
|
||||
foreach($trashFiles as $file) {
|
||||
if(strncmp($file['path'], $filename, strlen($filename))) {
|
||||
$path_parts = pathinfo($file['name']);
|
||||
foreach ( $trashFiles as $file ) {
|
||||
if ( strncmp( $file['path'], $filename, strlen( $filename ) ) ) {
|
||||
$path_parts = pathinfo( $file['name'] );
|
||||
$trashFileSuffix = $path_parts['extension'];
|
||||
}
|
||||
}
|
||||
|
||||
// check if we found the file we created
|
||||
$this->assertNotNull($trashFileSuffix);
|
||||
$this->assertNotNull( $trashFileSuffix );
|
||||
|
||||
// check if key for admin not exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) );
|
||||
|
||||
// check if share key for admin not exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) );
|
||||
|
||||
// return filename for next test
|
||||
return $filename . '.' . $trashFileSuffix;
|
||||
|
@ -176,25 +179,25 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase
|
|||
*
|
||||
* @depends testDeleteFile
|
||||
*/
|
||||
function testRestoreFile($filename) {
|
||||
function testRestoreFile( $filename ) {
|
||||
|
||||
// prepare file information
|
||||
$path_parts = pathinfo($filename);
|
||||
$path_parts = pathinfo( $filename );
|
||||
$trashFileSuffix = $path_parts['extension'];
|
||||
$timestamp = str_replace('d', '', $trashFileSuffix);
|
||||
$fileNameWithoutSuffix = str_replace('.'.$trashFileSuffix, '', $filename);
|
||||
$timestamp = str_replace( 'd', '', $trashFileSuffix );
|
||||
$fileNameWithoutSuffix = str_replace( '.' . $trashFileSuffix, '', $filename );
|
||||
|
||||
// restore file
|
||||
$this->assertTrue(\OCA\Files_Trashbin\Trashbin::restore($filename, $fileNameWithoutSuffix, $timestamp));
|
||||
$this->assertTrue( \OCA\Files_Trashbin\Trashbin::restore( $filename, $fileNameWithoutSuffix, $timestamp ) );
|
||||
|
||||
// check if file exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files/' . $fileNameWithoutSuffix));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files/' . $fileNameWithoutSuffix ) );
|
||||
|
||||
// check if key for admin exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $fileNameWithoutSuffix . '.key'));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $fileNameWithoutSuffix . '.key' ) );
|
||||
|
||||
// check if share key for admin exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $fileNameWithoutSuffix . '.admin.shareKey'));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $fileNameWithoutSuffix . '.admin.shareKey' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -206,65 +209,59 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase
|
|||
$filename = 'tmp-' . time() . '.txt';
|
||||
|
||||
// save file with content
|
||||
$cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort);
|
||||
$cryptedFile = file_put_contents( 'crypt:///' . $filename, $this->dataShort );
|
||||
|
||||
// test that data was successfully written
|
||||
$this->assertTrue(is_int($cryptedFile));
|
||||
$this->assertTrue( is_int( $cryptedFile ) );
|
||||
|
||||
// check if key for admin exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key'));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) );
|
||||
|
||||
// check if share key for admin exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey'));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) );
|
||||
|
||||
// delete file
|
||||
\OC\FIles\Filesystem::unlink($filename);
|
||||
\OC\FIles\Filesystem::unlink( $filename );
|
||||
|
||||
// check if file not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files/' . $filename));
|
||||
$this->assertFalse( $this->view->file_exists( '/admin/files/' . $filename ) );
|
||||
|
||||
// check if key for admin not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key'));
|
||||
$this->assertFalse( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) );
|
||||
|
||||
// check if share key for admin not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey'));
|
||||
$this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) );
|
||||
|
||||
// get files
|
||||
$trashFiles = $this->view->getDirectoryContent('/admin/files_trashbin/files/');
|
||||
|
||||
$trashFileSuffix = null;
|
||||
// find created file with timestamp
|
||||
foreach($trashFiles as $file) {
|
||||
if(strncmp($file['name'], $filename, strlen($filename)) == 0) {
|
||||
$path_parts = pathinfo($file['name']);
|
||||
$trashFileSuffix = $path_parts['extension'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
$query = \OC_DB::prepare( 'SELECT `timestamp`,`type` FROM `*PREFIX*files_trash`'
|
||||
. ' WHERE `id`=?' );
|
||||
$result = $query->execute( array( $filename ) )->fetchRow();
|
||||
|
||||
// check if we found the file we created
|
||||
$this->assertNotNull($trashFileSuffix);
|
||||
$this->assertTrue( is_array( $result ) );
|
||||
|
||||
// build suffix
|
||||
$trashFileSuffix = 'd' . $result['timestamp'];
|
||||
|
||||
// check if key for admin exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) );
|
||||
|
||||
// check if share key for admin exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix));
|
||||
$this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) );
|
||||
|
||||
// get timestamp from file
|
||||
$timestamp = str_replace('d', '', $trashFileSuffix);
|
||||
$timestamp = str_replace( 'd', '', $trashFileSuffix );
|
||||
|
||||
// delete file forever
|
||||
$this->assertGreaterThan(0, \OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp));
|
||||
$this->assertGreaterThan( 0, \OCA\Files_Trashbin\Trashbin::delete( $filename, $timestamp ) );
|
||||
|
||||
// check if key for admin not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_trashbin/files/' . $filename . '.' . $trashFileSuffix));
|
||||
$this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/files/' . $filename . '.' . $trashFileSuffix ) );
|
||||
|
||||
// check if key for admin not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix));
|
||||
$this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) );
|
||||
|
||||
// check if share key for admin not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix));
|
||||
$this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) );
|
||||
}
|
||||
|
||||
}
|
|
@ -6,13 +6,13 @@
|
|||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
require_once realpath(dirname(__FILE__) . '/../../../lib/base.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/crypt.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/proxy.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/stream.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/util.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../appinfo/app.php');
|
||||
require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' );
|
||||
|
||||
use OCA\Encryption;
|
||||
|
||||
|
@ -42,22 +42,21 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase
|
|||
public $legacyEncryptedDataKey;
|
||||
public $lagacyKey;
|
||||
|
||||
function setUp()
|
||||
{
|
||||
function setUp() {
|
||||
// reset backend
|
||||
\OC_User::useBackend('database');
|
||||
\OC_User::useBackend( 'database' );
|
||||
|
||||
\OC_User::setUserId('admin');
|
||||
\OC_User::setUserId( 'admin' );
|
||||
$this->userId = 'admin';
|
||||
$this->pass = 'admin';
|
||||
|
||||
// set content for encrypting / decrypting in tests
|
||||
$this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php');
|
||||
$this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' );
|
||||
$this->dataShort = 'hats';
|
||||
$this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php'));
|
||||
$this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt');
|
||||
$this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt');
|
||||
$this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key');
|
||||
$this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) );
|
||||
$this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' );
|
||||
$this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' );
|
||||
$this->legacyEncryptedDataKey = realpath( dirname( __FILE__ ) . '/encryption.key' );
|
||||
$this->lagacyKey = '62829813025828180801';
|
||||
|
||||
$keypair = Encryption\Crypt::createKeypair();
|
||||
|
@ -71,132 +70,128 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase
|
|||
$this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key
|
||||
$this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key
|
||||
|
||||
$this->view = new \OC_FilesystemView('/');
|
||||
$this->view = new \OC_FilesystemView( '/' );
|
||||
|
||||
$userHome = \OC_User::getHome($this->userId);
|
||||
$this->dataDir = str_replace('/' . $this->userId, '', $userHome);
|
||||
$userHome = \OC_User::getHome( $this->userId );
|
||||
$this->dataDir = str_replace( '/' . $this->userId, '', $userHome );
|
||||
|
||||
// Filesystem related hooks
|
||||
\OCA\Encryption\Helper::registerFilesystemHooks();
|
||||
|
||||
\OC_FileProxy::register(new OCA\Encryption\Proxy());
|
||||
// clear and register hooks
|
||||
\OC_FileProxy::clearProxies();
|
||||
\OC_FileProxy::register( new OCA\Encryption\Proxy() );
|
||||
|
||||
// setup filesystem
|
||||
\OC_Util::tearDownFS();
|
||||
\OC_User::setUserId('');
|
||||
\OC_User::setUserId( '' );
|
||||
\OC\Files\Filesystem::tearDown();
|
||||
\OC_Util::setupFS($this->userId);
|
||||
\OC_User::setUserId($this->userId);
|
||||
\OC_Util::setupFS( $this->userId );
|
||||
\OC_User::setUserId( $this->userId );
|
||||
|
||||
// login admin
|
||||
$params['uid'] = $this->userId;
|
||||
$params['password'] = $this->pass;
|
||||
OCA\Encryption\Hooks::login($params);
|
||||
OCA\Encryption\Hooks::login( $params );
|
||||
|
||||
$this->util = new Encryption\Util($this->view, $this->userId);
|
||||
$this->util = new Encryption\Util( $this->view, $this->userId );
|
||||
}
|
||||
|
||||
function tearDown()
|
||||
{
|
||||
|
||||
function tearDown() {
|
||||
// clear and register hooks
|
||||
\OC_FileProxy::clearProxies();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief test that paths set during User construction are correct
|
||||
*/
|
||||
function testKeyPaths()
|
||||
{
|
||||
$util = new Encryption\Util($this->view, $this->userId);
|
||||
function testKeyPaths() {
|
||||
$util = new Encryption\Util( $this->view, $this->userId );
|
||||
|
||||
$this->assertEquals($this->publicKeyDir, $util->getPath('publicKeyDir'));
|
||||
$this->assertEquals($this->encryptionDir, $util->getPath('encryptionDir'));
|
||||
$this->assertEquals($this->keyfilesPath, $util->getPath('keyfilesPath'));
|
||||
$this->assertEquals($this->publicKeyPath, $util->getPath('publicKeyPath'));
|
||||
$this->assertEquals($this->privateKeyPath, $util->getPath('privateKeyPath'));
|
||||
$this->assertEquals( $this->publicKeyDir, $util->getPath( 'publicKeyDir' ) );
|
||||
$this->assertEquals( $this->encryptionDir, $util->getPath( 'encryptionDir' ) );
|
||||
$this->assertEquals( $this->keyfilesPath, $util->getPath( 'keyfilesPath' ) );
|
||||
$this->assertEquals( $this->publicKeyPath, $util->getPath( 'publicKeyPath' ) );
|
||||
$this->assertEquals( $this->privateKeyPath, $util->getPath( 'privateKeyPath' ) );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief test setup of encryption directories
|
||||
*/
|
||||
function testSetupServerSide()
|
||||
{
|
||||
$this->assertEquals(true, $this->util->setupServerSide($this->pass));
|
||||
function testSetupServerSide() {
|
||||
$this->assertEquals( true, $this->util->setupServerSide( $this->pass ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief test checking whether account is ready for encryption,
|
||||
*/
|
||||
function testUserIsReady()
|
||||
{
|
||||
$this->assertEquals(true, $this->util->ready());
|
||||
function testUserIsReady() {
|
||||
$this->assertEquals( true, $this->util->ready() );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief test checking whether account is not ready for encryption,
|
||||
*/
|
||||
function testUserIsNotReady()
|
||||
{
|
||||
$this->view->unlink($this->publicKeyDir);
|
||||
function testUserIsNotReady() {
|
||||
$this->view->unlink( $this->publicKeyDir );
|
||||
|
||||
$params['uid'] = $this->userId;
|
||||
$params['password'] = $this->pass;
|
||||
$this->assertFalse(OCA\Encryption\Hooks::login($params));
|
||||
$this->assertFalse( OCA\Encryption\Hooks::login( $params ) );
|
||||
|
||||
$this->view->unlink($this->privateKeyPath);
|
||||
$this->view->unlink( $this->privateKeyPath );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief test checking whether account is not ready for encryption,
|
||||
*/
|
||||
function testIsLagacyUser()
|
||||
{
|
||||
function testIsLagacyUser() {
|
||||
$userView = new \OC_FilesystemView( '/' . $this->userId );
|
||||
|
||||
// Disable encryption proxy to prevent recursive calls
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
$encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey);
|
||||
$userView->file_put_contents('/encryption.key', $encryptionKeyContent);
|
||||
$encryptionKeyContent = file_get_contents( $this->legacyEncryptedDataKey );
|
||||
$userView->file_put_contents( '/encryption.key', $encryptionKeyContent );
|
||||
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
||||
$params['uid'] = $this->userId;
|
||||
$params['password'] = $this->pass;
|
||||
|
||||
$util = new Encryption\Util($this->view, $this->userId);
|
||||
$util->setMigrationStatus(0);
|
||||
$util = new Encryption\Util( $this->view, $this->userId );
|
||||
$util->setMigrationStatus( 0 );
|
||||
|
||||
$this->assertTrue(OCA\Encryption\Hooks::login($params));
|
||||
$this->assertTrue( OCA\Encryption\Hooks::login( $params ) );
|
||||
|
||||
$this->assertEquals($this->lagacyKey, $_SESSION['legacyKey']);
|
||||
$this->assertEquals( $this->lagacyKey, $_SESSION['legacyKey'] );
|
||||
}
|
||||
|
||||
function testRecoveryEnabledForUser()
|
||||
{
|
||||
function testRecoveryEnabledForUser() {
|
||||
|
||||
$util = new Encryption\Util($this->view, $this->userId);
|
||||
$util = new Encryption\Util( $this->view, $this->userId );
|
||||
|
||||
// Record the value so we can return it to it's original state later
|
||||
$enabled = $util->recoveryEnabledForUser();
|
||||
|
||||
$this->assertTrue($util->setRecoveryForUser(1));
|
||||
$this->assertTrue( $util->setRecoveryForUser( 1 ) );
|
||||
|
||||
$this->assertEquals(1, $util->recoveryEnabledForUser());
|
||||
$this->assertEquals( 1, $util->recoveryEnabledForUser() );
|
||||
|
||||
$this->assertTrue($util->setRecoveryForUser(0));
|
||||
$this->assertTrue( $util->setRecoveryForUser( 0 ) );
|
||||
|
||||
$this->assertEquals(0, $util->recoveryEnabledForUser());
|
||||
$this->assertEquals( 0, $util->recoveryEnabledForUser() );
|
||||
|
||||
// Return the setting to it's previous state
|
||||
$this->assertTrue($util->setRecoveryForUser($enabled));
|
||||
$this->assertTrue( $util->setRecoveryForUser( $enabled ) );
|
||||
|
||||
}
|
||||
|
||||
function testGetUidAndFilename()
|
||||
{
|
||||
function testGetUidAndFilename() {
|
||||
|
||||
\OC_User::setUserId('admin');
|
||||
\OC_User::setUserId( 'admin' );
|
||||
|
||||
$filename = 'tmp-' . time() . '.test';
|
||||
|
||||
|
@ -204,74 +199,80 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase
|
|||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
$this->view->file_put_contents($this->userId . '/files/' . $filename, $this->dataShort);
|
||||
$this->view->file_put_contents( $this->userId . '/files/' . $filename, $this->dataShort );
|
||||
|
||||
// Re-enable proxy - our work is done
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
||||
$util = new Encryption\Util($this->view, $this->userId);
|
||||
$util = new Encryption\Util( $this->view, $this->userId );
|
||||
|
||||
list($fileOwnerUid, $file) = $util->getUidAndFilename($filename);
|
||||
list( $fileOwnerUid, $file ) = $util->getUidAndFilename( $filename );
|
||||
|
||||
$this->assertEquals('admin', $fileOwnerUid);
|
||||
$this->assertEquals( 'admin', $fileOwnerUid );
|
||||
|
||||
$this->assertEquals($file, $filename);
|
||||
$this->assertEquals( $file, $filename );
|
||||
|
||||
$this->view->unlink( $this->userId . '/files/' . $filename );
|
||||
}
|
||||
|
||||
function testIsSharedPath() {
|
||||
$sharedPath = '/user1/files/Shared/test';
|
||||
$path = '/user1/files/test';
|
||||
|
||||
$this->assertTrue($this->util->isSharedPath($sharedPath));
|
||||
$this->assertTrue( $this->util->isSharedPath( $sharedPath ) );
|
||||
|
||||
$this->assertFalse($this->util->isSharedPath($path));
|
||||
$this->assertFalse( $this->util->isSharedPath( $path ) );
|
||||
}
|
||||
|
||||
function testEncryptLagacyFiles()
|
||||
{
|
||||
$userView = new \OC_FilesystemView( '/' . $this->userId);
|
||||
function testEncryptLagacyFiles() {
|
||||
// login admin
|
||||
$params['uid'] = $this->userId;
|
||||
$params['password'] = $this->pass;
|
||||
OCA\Encryption\Hooks::login( $params );
|
||||
|
||||
$userView = new \OC_FilesystemView( '/' . $this->userId );
|
||||
$view = new \OC_FilesystemView( '/' . $this->userId . '/files' );
|
||||
|
||||
// Disable encryption proxy to prevent recursive calls
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
$encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey);
|
||||
$userView->file_put_contents('/encryption.key', $encryptionKeyContent);
|
||||
$encryptionKeyContent = file_get_contents( $this->legacyEncryptedDataKey );
|
||||
$userView->file_put_contents( '/encryption.key', $encryptionKeyContent );
|
||||
|
||||
$legacyEncryptedData = file_get_contents($this->legacyEncryptedData);
|
||||
$view->mkdir('/test/');
|
||||
$view->mkdir('/test/subtest/');
|
||||
$view->file_put_contents('/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData);
|
||||
$legacyEncryptedData = file_get_contents( $this->legacyEncryptedData );
|
||||
$view->mkdir( '/test/' );
|
||||
$view->mkdir( '/test/subtest/' );
|
||||
$view->file_put_contents( '/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData );
|
||||
|
||||
$fileInfo = $view->getFileInfo('/test/subtest/legacy-encrypted-text.txt');
|
||||
$fileInfo = $view->getFileInfo( '/test/subtest/legacy-encrypted-text.txt' );
|
||||
$fileInfo['encrypted'] = true;
|
||||
$view->putFileInfo('/test/subtest/legacy-encrypted-text.txt', $fileInfo);
|
||||
$view->putFileInfo( '/test/subtest/legacy-encrypted-text.txt', $fileInfo );
|
||||
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
||||
$params['uid'] = $this->userId;
|
||||
$params['password'] = $this->pass;
|
||||
|
||||
$util = new Encryption\Util($this->view, $this->userId);
|
||||
$util->setMigrationStatus(0);
|
||||
$util = new Encryption\Util( $this->view, $this->userId );
|
||||
$util->setMigrationStatus( 0 );
|
||||
|
||||
$this->assertTrue(OCA\Encryption\Hooks::login($params));
|
||||
$this->assertTrue( OCA\Encryption\Hooks::login( $params ) );
|
||||
|
||||
$this->assertEquals($this->lagacyKey, $_SESSION['legacyKey']);
|
||||
$this->assertEquals( $this->lagacyKey, $_SESSION['legacyKey'] );
|
||||
|
||||
$files = $util->findEncFiles('/' . $this->userId . '/files/');
|
||||
$files = $util->findEncFiles( '/' . $this->userId . '/files/' );
|
||||
|
||||
$this->assertTrue(is_array($files));
|
||||
$this->assertTrue( is_array( $files ) );
|
||||
|
||||
$found = false;
|
||||
foreach($files['encrypted'] as $encryptedFile) {
|
||||
if($encryptedFile['name'] === 'legacy-encrypted-text.txt') {
|
||||
foreach ( $files['encrypted'] as $encryptedFile ) {
|
||||
if ( $encryptedFile['name'] === 'legacy-encrypted-text.txt' ) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$this->assertTrue($found);
|
||||
$this->assertTrue( $found );
|
||||
}
|
||||
}
|
|
@ -20,13 +20,13 @@
|
|||
*
|
||||
*/
|
||||
|
||||
require_once realpath(dirname(__FILE__) . '/../../../lib/base.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/crypt.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/proxy.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/stream.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../lib/util.php');
|
||||
require_once realpath(dirname(__FILE__) . '/../appinfo/app.php');
|
||||
require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' );
|
||||
require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' );
|
||||
|
||||
use OCA\Encryption;
|
||||
|
||||
|
@ -46,18 +46,17 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase
|
|||
public $dataShort;
|
||||
public $stateFilesTrashbin;
|
||||
|
||||
function setUp()
|
||||
{
|
||||
function setUp() {
|
||||
// reset backend
|
||||
\OC_User::useBackend('database');
|
||||
\OC_User::useBackend( 'database' );
|
||||
|
||||
// set user id
|
||||
\OC_User::setUserId('admin');
|
||||
\OC_User::setUserId( 'admin' );
|
||||
$this->userId = 'admin';
|
||||
$this->pass = 'admin';
|
||||
|
||||
// init filesystem view
|
||||
$this->view = new \OC_FilesystemView('/');
|
||||
$this->view = new \OC_FilesystemView( '/' );
|
||||
|
||||
// init short data
|
||||
$this->dataShort = 'hats';
|
||||
|
@ -65,38 +64,38 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase
|
|||
// init filesystem related hooks
|
||||
\OCA\Encryption\Helper::registerFilesystemHooks();
|
||||
|
||||
// register encryption file proxy
|
||||
\OC_FileProxy::register(new OCA\Encryption\Proxy());
|
||||
// clear and register hooks
|
||||
\OC_FileProxy::clearProxies();
|
||||
\OC_FileProxy::register( new OCA\Encryption\Proxy() );
|
||||
|
||||
// remember files_trashbin state
|
||||
$this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin');
|
||||
$this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' );
|
||||
|
||||
// we don't want to tests with app files_trashbin enabled
|
||||
\OC_App::disable('files_trashbin');
|
||||
\OC_App::disable( 'files_trashbin' );
|
||||
|
||||
// init filesystem for user
|
||||
\OC_Util::tearDownFS();
|
||||
\OC_User::setUserId('');
|
||||
\OC_User::setUserId( '' );
|
||||
\OC\Files\Filesystem::tearDown();
|
||||
\OC_Util::setupFS($this->userId);
|
||||
\OC_User::setUserId($this->userId);
|
||||
\OC_Util::setupFS( $this->userId );
|
||||
\OC_User::setUserId( $this->userId );
|
||||
|
||||
// login user
|
||||
$params['uid'] = $this->userId;
|
||||
$params['password'] = $this->pass;
|
||||
OCA\Encryption\Hooks::login($params);
|
||||
OCA\Encryption\Hooks::login( $params );
|
||||
}
|
||||
|
||||
function tearDown()
|
||||
{
|
||||
function tearDown() {
|
||||
// reset app files_trashbin
|
||||
if ($this->stateFilesTrashbin) {
|
||||
OC_App::enable('files_trashbin');
|
||||
if ( $this->stateFilesTrashbin ) {
|
||||
OC_App::enable( 'files_trashbin' );
|
||||
} else {
|
||||
OC_App::disable('files_trashbin');
|
||||
OC_App::disable( 'files_trashbin' );
|
||||
}
|
||||
|
||||
// clear all proxies
|
||||
// clear and register hooks
|
||||
\OC_FileProxy::clearProxies();
|
||||
}
|
||||
|
||||
|
@ -116,38 +115,38 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase
|
|||
$_SERVER['HTTP_AUTHORIZATION'] = 'Basic YWRtaW46YWRtaW4=';
|
||||
$_SERVER['CONTENT_TYPE'] = 'application/octet-stream';
|
||||
$_SERVER['PATH_INFO'] = '/webdav' . $filename;
|
||||
$_SERVER['CONTENT_LENGTH'] = strlen($this->dataShort);
|
||||
$_SERVER['CONTENT_LENGTH'] = strlen( $this->dataShort );
|
||||
|
||||
// handle webdav request
|
||||
$this->handleWebdavRequest($this->dataShort);
|
||||
$this->handleWebdavRequest( $this->dataShort );
|
||||
|
||||
// check if file was created
|
||||
$this->assertTrue($this->view->file_exists('/' . $this->userId . '/files' . $filename));
|
||||
$this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files' . $filename ) );
|
||||
|
||||
// check if key-file was created
|
||||
$this->assertTrue($this->view->file_exists('/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key'));
|
||||
$this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key' ) );
|
||||
|
||||
// check if shareKey-file was created
|
||||
$this->assertTrue($this->view->file_exists('/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey'));
|
||||
$this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey' ) );
|
||||
|
||||
// disable encryption proxy to prevent recursive calls
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
// get encrypted file content
|
||||
$encryptedContent = $this->view->file_get_contents('/' . $this->userId . '/files' . $filename);
|
||||
$encryptedContent = $this->view->file_get_contents( '/' . $this->userId . '/files' . $filename );
|
||||
|
||||
// restore proxy state
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
||||
// check if encrypted content is valid
|
||||
$this->assertTrue(Encryption\Crypt::isCatfileContent($encryptedContent));
|
||||
$this->assertTrue( Encryption\Crypt::isCatfileContent( $encryptedContent ) );
|
||||
|
||||
// get decrypted file contents
|
||||
$decrypt = file_get_contents('crypt://' . $filename);
|
||||
$decrypt = file_get_contents( 'crypt://' . $filename );
|
||||
|
||||
// check if file content match with the written content
|
||||
$this->assertEquals($this->dataShort, $decrypt);
|
||||
$this->assertEquals( $this->dataShort, $decrypt );
|
||||
|
||||
// return filename for next test
|
||||
return $filename;
|
||||
|
@ -158,7 +157,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase
|
|||
*
|
||||
* @depends testWebdavPUT
|
||||
*/
|
||||
function testWebdavGET($filename) {
|
||||
function testWebdavGET( $filename ) {
|
||||
|
||||
// set server vars
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
|
@ -170,7 +169,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase
|
|||
$content = $this->handleWebdavRequest();
|
||||
|
||||
// check if file content match with the written content
|
||||
$this->assertEquals($this->dataShort, $content);
|
||||
$this->assertEquals( $this->dataShort, $content );
|
||||
|
||||
// return filename for next test
|
||||
return $filename;
|
||||
|
@ -180,7 +179,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase
|
|||
* @brief test webdav delete random file
|
||||
* @depends testWebdavGET
|
||||
*/
|
||||
function testWebdavDELETE($filename) {
|
||||
function testWebdavDELETE( $filename ) {
|
||||
// set server vars
|
||||
$_SERVER['REQUEST_METHOD'] = 'DELETE';
|
||||
$_SERVER['REQUEST_URI'] = '/remote.php/webdav' . $filename;
|
||||
|
@ -191,13 +190,13 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase
|
|||
$content = $this->handleWebdavRequest();
|
||||
|
||||
// check if file was removed
|
||||
$this->assertFalse($this->view->file_exists('/' . $this->userId . '/files' . $filename));
|
||||
$this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files' . $filename ) );
|
||||
|
||||
// check if key-file was removed
|
||||
$this->assertFalse($this->view->file_exists('/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key'));
|
||||
$this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key' ) );
|
||||
|
||||
// check if shareKey-file was removed
|
||||
$this->assertFalse($this->view->file_exists('/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey'));
|
||||
$this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -207,30 +206,30 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase
|
|||
*
|
||||
* @note this init procedure is copied from /apps/files/remote.php
|
||||
*/
|
||||
function handleWebdavRequest($body = false) {
|
||||
function handleWebdavRequest( $body = false ) {
|
||||
// Backends
|
||||
$authBackend = new OC_Connector_Sabre_Auth();
|
||||
$lockBackend = new OC_Connector_Sabre_Locks();
|
||||
$requestBackend = new OC_Connector_Sabre_Request();
|
||||
|
||||
// Create ownCloud Dir
|
||||
$publicDir = new OC_Connector_Sabre_Directory('');
|
||||
$publicDir = new OC_Connector_Sabre_Directory( '' );
|
||||
|
||||
// Fire up server
|
||||
$server = new Sabre_DAV_Server($publicDir);
|
||||
$server = new Sabre_DAV_Server( $publicDir );
|
||||
$server->httpRequest = $requestBackend;
|
||||
$server->setBaseUri('/remote.php/webdav/');
|
||||
$server->setBaseUri( '/remote.php/webdav/' );
|
||||
|
||||
// Load plugins
|
||||
$server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, 'ownCloud'));
|
||||
$server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend));
|
||||
$server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload
|
||||
$server->addPlugin(new OC_Connector_Sabre_QuotaPlugin());
|
||||
$server->addPlugin(new OC_Connector_Sabre_MaintenancePlugin());
|
||||
$server->addPlugin( new Sabre_DAV_Auth_Plugin( $authBackend, 'ownCloud' ) );
|
||||
$server->addPlugin( new Sabre_DAV_Locks_Plugin( $lockBackend ) );
|
||||
$server->addPlugin( new Sabre_DAV_Browser_Plugin( false ) ); // Show something in the Browser, but no upload
|
||||
$server->addPlugin( new OC_Connector_Sabre_QuotaPlugin() );
|
||||
$server->addPlugin( new OC_Connector_Sabre_MaintenancePlugin() );
|
||||
|
||||
// And off we go!
|
||||
if($body) {
|
||||
$server->httpRequest->setBody($body);
|
||||
if ( $body ) {
|
||||
$server->httpRequest->setBody( $body );
|
||||
}
|
||||
|
||||
// turn on output buffering
|
||||
|
|
Loading…
Reference in New Issue