2013-05-06 23:16:42 +04:00
< ? php
/**
2013-05-09 21:37:26 +04:00
* ownCloud
*
* @ author Florin Peter
* @ copyright 2013 Florin Peter < owncloud @ florin - peter . de >
*
* 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 />.
*
2013-05-06 23:16:42 +04:00
*/
2013-08-21 12:59:31 +04:00
require_once __DIR__ . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ;
require_once __DIR__ . '/../../../lib/base.php' ;
require_once __DIR__ . '/../lib/crypt.php' ;
require_once __DIR__ . '/../lib/keymanager.php' ;
require_once __DIR__ . '/../lib/proxy.php' ;
require_once __DIR__ . '/../lib/stream.php' ;
require_once __DIR__ . '/../lib/util.php' ;
require_once __DIR__ . '/../lib/helper.php' ;
require_once __DIR__ . '/../appinfo/app.php' ;
require_once __DIR__ . '/util.php' ;
2013-05-06 23:16:42 +04:00
use OCA\Encryption ;
2013-05-20 00:28:48 +04:00
/**
* Class Test_Encryption_Share
*/
2013-05-26 22:44:15 +04:00
class Test_Encryption_Share extends \PHPUnit_Framework_TestCase {
const TEST_ENCRYPTION_SHARE_USER1 = " test-share-user1 " ;
const TEST_ENCRYPTION_SHARE_USER2 = " test-share-user2 " ;
const TEST_ENCRYPTION_SHARE_USER3 = " test-share-user3 " ;
const TEST_ENCRYPTION_SHARE_USER4 = " test-share-user4 " ;
const TEST_ENCRYPTION_SHARE_GROUP1 = " test-share-group1 " ;
2013-05-10 03:00:24 +04:00
2013-05-20 00:28:48 +04:00
public $stateFilesTrashbin ;
public $filename ;
public $dataShort ;
/**
* @ var OC_FilesystemView
*/
public $view ;
public $folder1 ;
public $subfolder ;
public $subsubfolder ;
2013-05-26 05:22:16 +04:00
public static function setUpBeforeClass () {
2013-05-20 03:24:36 +04:00
// reset backend
\OC_User :: clearBackends ();
2013-05-26 22:44:15 +04:00
\OC_User :: useBackend ( 'database' );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// enable resharing
2013-05-26 22:44:15 +04:00
\OC_Appconfig :: setValue ( 'core' , 'shareapi_allow_resharing' , 'yes' );
2013-05-07 15:43:34 +04:00
2013-05-20 03:24:36 +04:00
// clear share hooks
2013-05-26 22:44:15 +04:00
\OC_Hook :: clear ( 'OCP\\Share' );
2013-05-20 03:24:36 +04:00
\OC :: registerShareHooks ();
2013-05-26 22:44:15 +04:00
\OCP\Util :: connectHook ( 'OC_Filesystem' , 'setup' , '\OC\Files\Storage\Shared' , 'setup' );
2013-05-07 15:43:34 +04:00
2013-05-20 03:24:36 +04:00
// Sharing related hooks
\OCA\Encryption\Helper :: registerShareHooks ();
2013-05-09 21:37:26 +04:00
2013-05-20 03:24:36 +04:00
// Filesystem related hooks
\OCA\Encryption\Helper :: registerFilesystemHooks ();
2013-05-07 15:43:34 +04:00
2013-05-26 05:22:16 +04:00
// clear and register hooks
\OC_FileProxy :: clearProxies ();
2013-05-26 22:44:15 +04:00
\OC_FileProxy :: register ( new OCA\Encryption\Proxy ());
2013-05-10 01:22:46 +04:00
2013-05-20 03:24:36 +04:00
// create users
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 , true );
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 , true );
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 , true );
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 , true );
2013-05-16 02:30:01 +04:00
// create group and assign users
2013-05-26 22:44:15 +04:00
\OC_Group :: createGroup ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_GROUP1 );
\OC_Group :: addToGroup ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_GROUP1 );
\OC_Group :: addToGroup ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_GROUP1 );
2013-05-26 05:22:16 +04:00
}
function setUp () {
$this -> dataShort = 'hats' ;
2013-05-26 22:44:15 +04:00
$this -> view = new \OC_FilesystemView ( '/' );
2013-05-26 05:22:16 +04:00
$this -> folder1 = '/folder1' ;
$this -> subfolder = '/subfolder1' ;
$this -> subsubfolder = '/subsubfolder1' ;
$this -> filename = 'share-tmp.test' ;
// we don't want to tests with app files_trashbin enabled
2013-05-26 22:44:15 +04:00
\OC_App :: disable ( 'files_trashbin' );
2013-05-26 05:22:16 +04:00
// remember files_trashbin state
2013-05-26 22:44:15 +04:00
$this -> stateFilesTrashbin = OC_App :: isEnabled ( 'files_trashbin' );
2013-05-20 03:24:36 +04:00
}
2013-05-10 03:00:24 +04:00
2013-05-26 05:22:16 +04:00
function tearDown () {
2013-05-20 03:24:36 +04:00
// reset app files_trashbin
2013-05-26 22:44:15 +04:00
if ( $this -> stateFilesTrashbin ) {
OC_App :: enable ( 'files_trashbin' );
2013-06-03 20:42:13 +04:00
} else {
2013-05-26 22:44:15 +04:00
OC_App :: disable ( 'files_trashbin' );
2013-05-20 03:24:36 +04:00
}
2013-05-26 05:22:16 +04:00
}
2013-05-10 01:22:46 +04:00
2013-05-26 05:22:16 +04:00
public static function tearDownAfterClass () {
2013-05-16 02:30:01 +04:00
// clean group
2013-05-26 22:44:15 +04:00
\OC_Group :: deleteGroup ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_GROUP1 );
2013-05-16 02:30:01 +04:00
2013-05-20 03:24:36 +04:00
// cleanup users
2013-05-26 22:44:15 +04:00
\OC_User :: deleteUser ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
\OC_User :: deleteUser ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
\OC_User :: deleteUser ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 );
\OC_User :: deleteUser ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 );
2013-05-20 03:24:36 +04:00
}
2013-05-06 23:16:42 +04:00
2013-05-20 00:28:48 +04:00
/**
2013-06-10 11:31:22 +04:00
* @ medium
2013-05-20 00:28:48 +04:00
* @ param bool $withTeardown
*/
2013-05-26 22:44:15 +04:00
function testShareFile ( $withTeardown = true ) {
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// save file with content
2013-07-30 16:18:01 +04:00
$cryptedFile = file_put_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename , $this -> dataShort );
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// test that data was successfully written
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_int ( $cryptedFile ));
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy :: $enabled ;
\OC_FileProxy :: $enabled = false ;
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// get the file info from previous created file
2013-05-26 22:44:15 +04:00
$fileInfo = $this -> view -> getFileInfo (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// check if we have a valid file info
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_array ( $fileInfo ));
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// check if the unencrypted file size is stored
2013-05-26 22:44:15 +04:00
$this -> assertGreaterThan ( 0 , $fileInfo [ 'unencrypted_size' ]);
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// re-enable the file proxy
\OC_FileProxy :: $enabled = $proxyStatus ;
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// share the file
2013-05-26 22:44:15 +04:00
\OCP\Share :: shareItem ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 , OCP\PERMISSION_ALL );
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// check if share key for user1 exists
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '.shareKey' ));
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// login as user1
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// get file contents
2013-05-26 22:44:15 +04:00
$retrievedCryptedFile = $this -> view -> file_get_contents (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared/' . $this -> filename );
2013-05-06 23:16:42 +04:00
2013-05-20 03:24:36 +04:00
// check if data is the same as we previously written
2013-05-26 22:44:15 +04:00
$this -> assertEquals ( $this -> dataShort , $retrievedCryptedFile );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
if ( $withTeardown ) {
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// unshare the file
2013-05-26 22:44:15 +04:00
\OCP\Share :: unshare ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '.shareKey' ));
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
$this -> view -> unlink (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
2013-05-09 21:37:26 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '.shareKey' ));
2013-05-20 03:24:36 +04:00
}
}
2013-05-08 00:22:05 +04:00
2013-05-20 00:28:48 +04:00
/**
2013-06-10 11:31:22 +04:00
* @ medium
2013-05-20 00:28:48 +04:00
* @ param bool $withTeardown
*/
2013-05-26 22:44:15 +04:00
function testReShareFile ( $withTeardown = true ) {
$this -> testShareFile ( false );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// login as user1
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// get the file info
2013-05-26 22:44:15 +04:00
$fileInfo = $this -> view -> getFileInfo (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared/' . $this -> filename );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// share the file with user2
2013-05-26 22:44:15 +04:00
\OCP\Share :: shareItem ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 , OCP\PERMISSION_ALL );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// check if share key for user2 exists
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.shareKey' ));
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// login as user2
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// get file contents
2013-05-26 22:44:15 +04:00
$retrievedCryptedFile = $this -> view -> file_get_contents (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared/' . $this -> filename );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// check if data is the same as previously written
2013-05-26 22:44:15 +04:00
$this -> assertEquals ( $this -> dataShort , $retrievedCryptedFile );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
if ( $withTeardown ) {
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as user1
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// unshare the file with user2
2013-05-26 22:44:15 +04:00
\OCP\Share :: unshare ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.shareKey' ));
2013-05-08 00:22:05 +04:00
2013-05-20 03:24:36 +04:00
// unshare the file with user1
2013-05-26 22:44:15 +04:00
\OCP\Share :: unshare ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '.shareKey' ));
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
$this -> view -> unlink (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
2013-05-09 21:37:26 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '.shareKey' ));
2013-05-20 03:24:36 +04:00
}
}
2013-05-08 00:56:59 +04:00
2013-05-20 00:28:48 +04:00
/**
2013-06-10 11:31:22 +04:00
* @ medium
2013-05-20 00:28:48 +04:00
* @ param bool $withTeardown
* @ return array
*/
2013-05-26 22:44:15 +04:00
function testShareFolder ( $withTeardown = true ) {
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// create folder structure
2013-05-26 22:44:15 +04:00
$this -> view -> mkdir ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this -> folder1 );
$this -> view -> mkdir (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this -> folder1 . $this -> subfolder );
$this -> view -> mkdir (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this -> folder1 . $this -> subfolder
. $this -> subsubfolder );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// save file with content
2013-07-30 16:18:01 +04:00
$cryptedFile = file_put_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> folder1 . $this -> subfolder . $this -> subsubfolder . '/'
2013-05-26 22:44:15 +04:00
. $this -> filename , $this -> dataShort );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// test that data was successfully written
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_int ( $cryptedFile ));
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy :: $enabled ;
\OC_FileProxy :: $enabled = false ;
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// get the file info from previous created folder
2013-05-26 22:44:15 +04:00
$fileInfo = $this -> view -> getFileInfo (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this -> folder1 );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// check if we have a valid file info
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_array ( $fileInfo ));
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// re-enable the file proxy
\OC_FileProxy :: $enabled = $proxyStatus ;
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// share the folder with user1
2013-05-26 22:44:15 +04:00
\OCP\Share :: shareItem ( 'folder' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 , OCP\PERMISSION_ALL );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// check if share key for user1 exists
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '.shareKey' ));
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// login as user1
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// get file contents
2013-05-26 22:44:15 +04:00
$retrievedCryptedFile = $this -> view -> file_get_contents (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/' . $this -> filename );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// check if data is the same
2013-05-26 22:44:15 +04:00
$this -> assertEquals ( $this -> dataShort , $retrievedCryptedFile );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
if ( $withTeardown ) {
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// unshare the folder with user1
2013-05-26 22:44:15 +04:00
\OCP\Share :: unshare ( 'folder' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys'
. $this -> folder1 . $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '.shareKey' ));
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
$this -> view -> unlink ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this -> folder1 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys'
. $this -> folder1 . $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '.shareKey' ));
2013-05-20 03:24:36 +04:00
}
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
return $fileInfo ;
}
2013-05-10 03:00:24 +04:00
2013-05-20 00:28:48 +04:00
/**
2013-06-10 11:31:22 +04:00
* @ medium
2013-05-20 00:28:48 +04:00
* @ param bool $withTeardown
*/
2013-05-26 22:44:15 +04:00
function testReShareFolder ( $withTeardown = true ) {
$fileInfoFolder1 = $this -> testShareFolder ( false );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as user1
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy :: $enabled ;
\OC_FileProxy :: $enabled = false ;
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// get the file info from previous created folder
2013-05-26 22:44:15 +04:00
$fileInfoSubFolder = $this -> view -> getFileInfo (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared' . $this -> folder1
. $this -> subfolder );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// check if we have a valid file info
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_array ( $fileInfoSubFolder ));
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// re-enable the file proxy
\OC_FileProxy :: $enabled = $proxyStatus ;
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// share the file with user2
2013-05-26 22:44:15 +04:00
\OCP\Share :: shareItem ( 'folder' , $fileInfoSubFolder [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 , OCP\PERMISSION_ALL );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// check if share key for user2 exists
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.shareKey' ));
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as user2
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// get file contents
2013-05-26 22:44:15 +04:00
$retrievedCryptedFile = $this -> view -> file_get_contents (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared' . $this -> subfolder
. $this -> subsubfolder . '/' . $this -> filename );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// check if data is the same
2013-05-26 22:44:15 +04:00
$this -> assertEquals ( $this -> dataShort , $retrievedCryptedFile );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// get the file info
2013-05-26 22:44:15 +04:00
$fileInfo = $this -> view -> getFileInfo (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared' . $this -> subfolder
. $this -> subsubfolder . '/' . $this -> filename );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// check if we have fileInfos
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_array ( $fileInfo ));
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// share the file with user3
2013-05-26 22:44:15 +04:00
\OCP\Share :: shareItem ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 , OCP\PERMISSION_ALL );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// check if share key for user3 exists
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 . '.shareKey' ));
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as user3
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// get file contents
2013-05-26 22:44:15 +04:00
$retrievedCryptedFile = $this -> view -> file_get_contents (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 . '/files/Shared/' . $this -> filename );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// check if data is the same
2013-05-26 22:44:15 +04:00
$this -> assertEquals ( $this -> dataShort , $retrievedCryptedFile );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
if ( $withTeardown ) {
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as user2
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// unshare the file with user3
2013-05-26 22:44:15 +04:00
\OCP\Share :: unshare ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys'
. $this -> folder1 . $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 . '.shareKey' ));
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as user1
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// unshare the folder with user2
2013-05-26 22:44:15 +04:00
\OCP\Share :: unshare ( 'folder' , $fileInfoSubFolder [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys'
. $this -> folder1 . $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.shareKey' ));
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// unshare the folder1 with user1
2013-05-26 22:44:15 +04:00
\OCP\Share :: unshare ( 'folder' , $fileInfoFolder1 [ 'fileid' ], \OCP\Share :: SHARE_TYPE_USER , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-10 03:00:24 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys'
. $this -> folder1 . $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '.shareKey' ));
2013-05-08 00:56:59 +04:00
2013-05-20 03:24:36 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
$this -> view -> unlink (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this -> folder1 . $this -> subfolder
. $this -> subsubfolder . '/' . $this -> filename );
2013-05-09 21:37:26 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys'
. $this -> folder1 . $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '.shareKey' ));
2013-05-20 03:24:36 +04:00
}
}
2013-05-06 23:16:42 +04:00
2013-05-26 05:22:16 +04:00
function testPublicShareFile () {
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// save file with content
2013-07-30 16:18:01 +04:00
$cryptedFile = file_put_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename , $this -> dataShort );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// test that data was successfully written
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_int ( $cryptedFile ));
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy :: $enabled ;
\OC_FileProxy :: $enabled = false ;
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// get the file info from previous created file
2013-05-26 22:44:15 +04:00
$fileInfo = $this -> view -> getFileInfo (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// check if we have a valid file info
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_array ( $fileInfo ));
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// check if the unencrypted file size is stored
2013-05-26 22:44:15 +04:00
$this -> assertGreaterThan ( 0 , $fileInfo [ 'unencrypted_size' ]);
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// re-enable the file proxy
\OC_FileProxy :: $enabled = $proxyStatus ;
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// share the file
2013-05-26 22:44:15 +04:00
\OCP\Share :: shareItem ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_LINK , false , OCP\PERMISSION_ALL );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-14 02:00:20 +04:00
2013-05-26 22:44:15 +04:00
$publicShareKeyId = \OC_Appconfig :: getValue ( 'files_encryption' , 'publicShareKeyId' );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// check if share key for public exists
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . $publicShareKeyId . '.shareKey' ));
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// some hacking to simulate public link
$GLOBALS [ 'app' ] = 'files_sharing' ;
2013-05-26 22:44:15 +04:00
$GLOBALS [ 'fileOwner' ] = \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 ;
2013-05-31 22:55:05 +04:00
\OC_User :: setUserId ( false );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// get file contents
2013-07-30 16:18:01 +04:00
$retrievedCryptedFile = file_get_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// check if data is the same as we previously written
2013-05-26 22:44:15 +04:00
$this -> assertEquals ( $this -> dataShort , $retrievedCryptedFile );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// tear down
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// unshare the file
2013-05-26 22:44:15 +04:00
\OCP\Share :: unshare ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_LINK , null );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . $publicShareKeyId . '.shareKey' ));
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
$this -> view -> unlink ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
2013-05-14 02:00:20 +04:00
2013-05-20 03:24:36 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '.shareKey' ));
2013-05-20 03:24:36 +04:00
}
2013-05-14 02:00:20 +04:00
2013-06-10 11:31:22 +04:00
/**
* @ medium
*/
2013-05-26 05:22:16 +04:00
function testShareFileWithGroup () {
2013-05-16 02:30:01 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-16 02:30:01 +04:00
// save file with content
2013-07-30 16:18:01 +04:00
$cryptedFile = file_put_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename , $this -> dataShort );
2013-05-16 02:30:01 +04:00
// test that data was successfully written
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_int ( $cryptedFile ));
2013-05-16 02:30:01 +04:00
// disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy :: $enabled ;
\OC_FileProxy :: $enabled = false ;
// get the file info from previous created file
2013-05-26 22:44:15 +04:00
$fileInfo = $this -> view -> getFileInfo (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
2013-05-16 02:30:01 +04:00
// check if we have a valid file info
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_array ( $fileInfo ));
2013-05-16 02:30:01 +04:00
// check if the unencrypted file size is stored
2013-05-26 22:44:15 +04:00
$this -> assertGreaterThan ( 0 , $fileInfo [ 'unencrypted_size' ]);
2013-05-16 02:30:01 +04:00
// re-enable the file proxy
\OC_FileProxy :: $enabled = $proxyStatus ;
// share the file
2013-05-26 22:44:15 +04:00
\OCP\Share :: shareItem ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_GROUP , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_GROUP1 , OCP\PERMISSION_ALL );
2013-05-16 02:30:01 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-16 02:30:01 +04:00
// check if share key for user2 and user3 exists
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.shareKey' ));
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 . '.shareKey' ));
2013-05-16 02:30:01 +04:00
// login as user1
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 );
2013-05-16 02:30:01 +04:00
// get file contents
2013-05-26 22:44:15 +04:00
$retrievedCryptedFile = $this -> view -> file_get_contents (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared/' . $this -> filename );
2013-05-16 02:30:01 +04:00
// check if data is the same as we previously written
2013-05-26 22:44:15 +04:00
$this -> assertEquals ( $this -> dataShort , $retrievedCryptedFile );
2013-05-16 02:30:01 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-16 02:30:01 +04:00
// unshare the file
2013-05-26 22:44:15 +04:00
\OCP\Share :: unshare ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_GROUP , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_GROUP1 );
2013-05-16 02:30:01 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.shareKey' ));
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER4 . '.shareKey' ));
2013-05-16 02:30:01 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
$this -> view -> unlink ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
2013-05-16 02:30:01 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '.shareKey' ));
2013-05-16 02:30:01 +04:00
}
2013-06-10 11:31:22 +04:00
/**
* @ large
*/
2013-05-26 05:22:16 +04:00
function testRecoveryFile () {
2013-07-31 18:15:49 +04:00
$this -> markTestIncomplete (
'No idea what\'s wrong here, this works perfectly in real-world. removeRecoveryKeys(\'/\') L709 removes correctly the keys, but for some reasons afterwards also the top-level folder "share-keys" is gone...'
);
2013-05-26 05:22:16 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-26 05:22:16 +04:00
2013-05-26 22:44:15 +04:00
\OCA\Encryption\Helper :: adminEnableRecovery ( null , 'test123' );
$recoveryKeyId = OC_Appconfig :: getValue ( 'files_encryption' , 'recoveryKeyId' );
2013-05-17 03:07:50 +04:00
2013-05-21 02:00:55 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-21 02:00:55 +04:00
2013-05-26 22:44:15 +04:00
$util = new \OCA\Encryption\Util ( new \OC_FilesystemView ( '/' ), \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-17 03:07:50 +04:00
// check if recovery password match
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $util -> checkRecoveryPassword ( 'test123' ));
2013-05-17 03:07:50 +04:00
// enable recovery for admin
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $util -> setRecoveryForUser ( 1 ));
2013-05-17 03:07:50 +04:00
// create folder structure
2013-05-26 22:44:15 +04:00
$this -> view -> mkdir ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this -> folder1 );
$this -> view -> mkdir (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this -> folder1 . $this -> subfolder );
$this -> view -> mkdir (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this -> folder1 . $this -> subfolder
. $this -> subsubfolder );
2013-05-17 03:07:50 +04:00
// save file with content
2013-07-30 16:18:01 +04:00
$cryptedFile1 = file_put_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename , $this -> dataShort );
$cryptedFile2 = file_put_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> folder1 . $this -> subfolder . $this -> subsubfolder . '/'
2013-05-26 22:44:15 +04:00
. $this -> filename , $this -> dataShort );
2013-05-17 03:07:50 +04:00
// test that data was successfully written
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_int ( $cryptedFile1 ));
$this -> assertTrue ( is_int ( $cryptedFile2 ));
2013-05-17 03:07:50 +04:00
// check if share key for admin and recovery exists
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '.shareKey' ));
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '.shareKey' ));
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
2013-05-17 03:07:50 +04:00
// disable recovery for admin
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $util -> setRecoveryForUser ( 0 ));
2013-05-17 03:07:50 +04:00
// remove all recovery keys
2013-05-26 22:44:15 +04:00
$util -> removeRecoveryKeys ( '/' );
2013-05-17 03:07:50 +04:00
// check if share key for recovery not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
2013-05-17 03:07:50 +04:00
// enable recovery for admin
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $util -> setRecoveryForUser ( 1 ));
2013-05-17 03:07:50 +04:00
2013-07-31 18:15:49 +04:00
// add recovery keys again
2013-05-26 22:44:15 +04:00
$util -> addRecoveryKeys ( '/' );
2013-05-17 03:07:50 +04:00
// check if share key for admin and recovery exists
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
2013-05-17 03:07:50 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
$this -> view -> unlink ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
$this -> view -> unlink ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> folder1 );
2013-05-17 03:07:50 +04:00
// check if share key for recovery not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
$this -> assertTrue ( \OCA\Encryption\Helper :: adminEnableRecovery ( null , 'test123' ));
$this -> assertTrue ( \OCA\Encryption\Helper :: adminDisableRecovery ( 'test123' ));
$this -> assertEquals ( 0 , \OC_Appconfig :: getValue ( 'files_encryption' , 'recoveryAdminEnabled' ));
2013-05-17 03:07:50 +04:00
}
2013-06-10 11:31:22 +04:00
/**
* @ large
*/
2013-05-26 05:22:16 +04:00
function testRecoveryForUser () {
2013-07-31 18:44:43 +04:00
$this -> markTestIncomplete (
'This test drives Jenkins crazy - "Cannot modify header information - headers already sent" - line 811'
);
2013-05-17 03:07:50 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-17 03:07:50 +04:00
2013-05-26 22:44:15 +04:00
\OCA\Encryption\Helper :: adminEnableRecovery ( null , 'test123' );
$recoveryKeyId = OC_Appconfig :: getValue ( 'files_encryption' , 'recoveryKeyId' );
2013-05-17 03:07:50 +04:00
2013-07-31 18:15:49 +04:00
// login as user2
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-17 03:07:50 +04:00
2013-05-26 22:44:15 +04:00
$util = new \OCA\Encryption\Util ( new \OC_FilesystemView ( '/' ), \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 );
2013-05-17 03:07:50 +04:00
// enable recovery for admin
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $util -> setRecoveryForUser ( 1 ));
2013-05-17 03:07:50 +04:00
// create folder structure
2013-05-26 22:44:15 +04:00
$this -> view -> mkdir ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this -> folder1 );
$this -> view -> mkdir (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this -> folder1 . $this -> subfolder );
$this -> view -> mkdir (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this -> folder1 . $this -> subfolder
. $this -> subsubfolder );
2013-05-17 03:07:50 +04:00
// save file with content
2013-07-31 18:15:49 +04:00
$cryptedFile1 = file_put_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files/' . $this -> filename , $this -> dataShort );
$cryptedFile2 = file_put_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files/' . $this -> folder1 . $this -> subfolder . $this -> subsubfolder . '/'
2013-05-26 22:44:15 +04:00
. $this -> filename , $this -> dataShort );
2013-05-17 03:07:50 +04:00
// test that data was successfully written
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_int ( $cryptedFile1 ));
$this -> assertTrue ( is_int ( $cryptedFile2 ));
2013-05-17 03:07:50 +04:00
// check if share key for user and recovery exists
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '.shareKey' ));
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '.shareKey' ));
$this -> assertTrue ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
2013-05-17 03:07:50 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-17 03:07:50 +04:00
// change password
2013-05-26 22:44:15 +04:00
\OC_User :: setPassword ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 , 'test' , 'test123' );
2013-05-17 03:07:50 +04:00
2013-07-31 18:15:49 +04:00
// login as user2
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 , false , 'test' );
2013-05-17 03:07:50 +04:00
// get file contents
2013-07-31 18:15:49 +04:00
$retrievedCryptedFile1 = file_get_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files/' . $this -> filename );
2013-05-26 22:44:15 +04:00
$retrievedCryptedFile2 = file_get_contents (
2013-07-31 18:15:49 +04:00
'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this -> folder1 . $this -> subfolder . $this -> subsubfolder . '/' . $this -> filename );
2013-05-17 03:07:50 +04:00
// check if data is the same as we previously written
2013-05-26 22:44:15 +04:00
$this -> assertEquals ( $this -> dataShort , $retrievedCryptedFile1 );
$this -> assertEquals ( $this -> dataShort , $retrievedCryptedFile2 );
2013-05-17 03:07:50 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
$this -> view -> unlink ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this -> folder1 );
$this -> view -> unlink ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this -> filename );
2013-05-17 03:07:50 +04:00
// check if share key for user and recovery exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '.shareKey' ));
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '.shareKey' ));
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this -> folder1
. $this -> subfolder . $this -> subsubfolder . '/'
. $this -> filename . '.' . $recoveryKeyId . '.shareKey' ));
2013-05-17 03:07:50 +04:00
// enable recovery for admin
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( $util -> setRecoveryForUser ( 0 ));
2013-05-21 02:00:55 +04:00
2013-05-26 22:44:15 +04:00
\OCA\Encryption\Helper :: adminDisableRecovery ( 'test123' );
$this -> assertEquals ( 0 , \OC_Appconfig :: getValue ( 'files_encryption' , 'recoveryAdminEnabled' ));
2013-05-17 03:07:50 +04:00
}
2013-06-10 11:31:22 +04:00
/**
* @ medium
*/
2013-05-26 05:22:16 +04:00
function testFailShareFile () {
2013-05-20 23:46:28 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-20 23:46:28 +04:00
// save file with content
2013-07-30 16:18:01 +04:00
$cryptedFile = file_put_contents ( 'crypt:///' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename , $this -> dataShort );
2013-05-20 23:46:28 +04:00
// test that data was successfully written
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_int ( $cryptedFile ));
2013-05-20 23:46:28 +04:00
// disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy :: $enabled ;
\OC_FileProxy :: $enabled = false ;
// get the file info from previous created file
2013-05-26 22:44:15 +04:00
$fileInfo = $this -> view -> getFileInfo (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
2013-05-20 23:46:28 +04:00
// check if we have a valid file info
2013-05-26 22:44:15 +04:00
$this -> assertTrue ( is_array ( $fileInfo ));
2013-05-20 23:46:28 +04:00
// check if the unencrypted file size is stored
2013-05-26 22:44:15 +04:00
$this -> assertGreaterThan ( 0 , $fileInfo [ 'unencrypted_size' ]);
2013-05-20 23:46:28 +04:00
// break users public key
2013-05-26 22:44:15 +04:00
$this -> view -> rename ( '/public-keys/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.public.key' ,
'/public-keys/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.public.key_backup' );
2013-05-20 23:46:28 +04:00
// re-enable the file proxy
\OC_FileProxy :: $enabled = $proxyStatus ;
// share the file
2013-08-01 16:19:33 +04:00
try {
\OCP\Share :: shareItem ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_GROUP , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_GROUP1 , OCP\PERMISSION_ALL );
} catch ( Exception $e ) {
$this -> assertEquals ( 0 , strpos ( $e -> getMessage (), " Following users are not set up for encryption " ));
}
2013-05-20 23:46:28 +04:00
// login as admin
2013-05-26 22:44:15 +04:00
\Test_Encryption_Util :: loginHelper ( \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 );
2013-05-20 23:46:28 +04:00
// check if share key for user1 not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.shareKey' ));
2013-05-20 23:46:28 +04:00
// disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy :: $enabled ;
\OC_FileProxy :: $enabled = false ;
// break user1 public key
2013-05-26 22:44:15 +04:00
$this -> view -> rename (
'/public-keys/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.public.key_backup' ,
'/public-keys/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.public.key' );
2013-05-20 23:46:28 +04:00
// remove share file
2013-05-26 22:44:15 +04:00
$this -> view -> unlink ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3
. '.shareKey' );
2013-05-20 23:46:28 +04:00
// re-enable the file proxy
\OC_FileProxy :: $enabled = $proxyStatus ;
// unshare the file with user1
2013-05-26 22:44:15 +04:00
\OCP\Share :: unshare ( 'file' , $fileInfo [ 'fileid' ], \OCP\Share :: SHARE_TYPE_GROUP , \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_GROUP1 );
2013-05-20 23:46:28 +04:00
// check if share key not exists
2013-05-26 22:44:15 +04:00
$this -> assertFalse ( $this -> view -> file_exists (
'/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/'
. $this -> filename . '.' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER3 . '.shareKey' ));
2013-05-20 23:46:28 +04:00
// cleanup
2013-05-26 22:44:15 +04:00
$this -> view -> unlink ( '/' . \Test_Encryption_Share :: TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this -> filename );
2013-05-20 23:46:28 +04:00
}
2013-05-06 23:16:42 +04:00
}