added tests for recovery
This commit is contained in:
parent
a4c0eb1756
commit
2b0bf4dc87
1 changed files with 142 additions and 2 deletions
|
@ -528,12 +528,152 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase
|
|||
|
||||
}
|
||||
|
||||
function loginHelper($user, $create = false)
|
||||
function testRecoveryFile()
|
||||
{
|
||||
// login as admin
|
||||
$this->loginHelper('admin');
|
||||
|
||||
\OCA\Encryption\Helper::adminEnableRecovery(null, 'test123');
|
||||
$recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId');
|
||||
|
||||
// check if control file created
|
||||
$this->assertTrue($this->view->file_exists('/control-file/controlfile.enc'));
|
||||
|
||||
$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), 'admin');
|
||||
|
||||
// check if recovery password match
|
||||
$this->assertTrue($util->checkRecoveryPassword('test123'));
|
||||
|
||||
// enable recovery for admin
|
||||
$this->assertTrue($util->setRecoveryForUser(true));
|
||||
|
||||
// create folder structure
|
||||
$this->view->mkdir('/admin/files' . $this->folder1);
|
||||
$this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder);
|
||||
$this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder);
|
||||
|
||||
// save file with content
|
||||
$cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort);
|
||||
$cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename, $this->dataShort);
|
||||
|
||||
// test that data was successfully written
|
||||
$this->assertTrue(is_int($cryptedFile1));
|
||||
$this->assertTrue(is_int($cryptedFile2));
|
||||
|
||||
// check if share key for admin and recovery exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey'));
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.admin.shareKey'));
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
|
||||
// disable recovery for admin
|
||||
$this->assertTrue($util->setRecoveryForUser(false));
|
||||
|
||||
// remove all recovery keys
|
||||
$util->removeRecoveryKeys('/');
|
||||
|
||||
// check if share key for recovery not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
|
||||
// enable recovery for admin
|
||||
$this->assertTrue($util->setRecoveryForUser(true));
|
||||
|
||||
// remove all recovery keys
|
||||
$util->addRecoveryKeys('/');
|
||||
|
||||
// check if share key for admin and recovery exists
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
$this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
|
||||
// cleanup
|
||||
$this->view->unlink('/admin/files/' . $this->filename);
|
||||
$this->view->unlink('/admin/files/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename);
|
||||
|
||||
// check if share key for recovery not exists
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
$this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
}
|
||||
|
||||
function testRecoveryForUser()
|
||||
{
|
||||
// login as admin
|
||||
$this->loginHelper('admin');
|
||||
|
||||
\OCA\Encryption\Helper::adminEnableRecovery(null, 'test123');
|
||||
$recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId');
|
||||
|
||||
// check if control file created
|
||||
$this->assertTrue($this->view->file_exists('/control-file/controlfile.enc'));
|
||||
|
||||
// login as user1
|
||||
$this->loginHelper('user1');
|
||||
|
||||
$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), 'user1');
|
||||
|
||||
// enable recovery for admin
|
||||
$this->assertTrue($util->setRecoveryForUser(true));
|
||||
|
||||
// create folder structure
|
||||
$this->view->mkdir('/user1/files' . $this->folder1);
|
||||
$this->view->mkdir('/user1/files' . $this->folder1 . $this->subfolder);
|
||||
$this->view->mkdir('/user1/files' . $this->folder1 . $this->subfolder . $this->subsubfolder);
|
||||
|
||||
// save file with content
|
||||
$cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort);
|
||||
$cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename, $this->dataShort);
|
||||
|
||||
// test that data was successfully written
|
||||
$this->assertTrue(is_int($cryptedFile1));
|
||||
$this->assertTrue(is_int($cryptedFile2));
|
||||
|
||||
// check if share key for user and recovery exists
|
||||
$this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey'));
|
||||
$this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
$this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.user1.shareKey'));
|
||||
$this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
|
||||
// login as admin
|
||||
$this->loginHelper('admin');
|
||||
|
||||
// change password
|
||||
\OC_User::setPassword('user1', 'test', 'test123');
|
||||
|
||||
// login as user1
|
||||
$this->loginHelper('user1', false, 'test');
|
||||
|
||||
// get file contents
|
||||
$retrievedCryptedFile1 = file_get_contents('crypt://' . $this->filename);
|
||||
$retrievedCryptedFile2 = file_get_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename);
|
||||
|
||||
// check if data is the same as we previously written
|
||||
$this->assertEquals($this->dataShort, $retrievedCryptedFile1);
|
||||
$this->assertEquals($this->dataShort, $retrievedCryptedFile2);
|
||||
|
||||
// cleanup
|
||||
$this->view->unlink('/user1/files' . $this->folder1);
|
||||
$this->view->unlink('/user1/files' . $this->filename);
|
||||
|
||||
// check if share key for user and recovery exists
|
||||
$this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey'));
|
||||
$this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
$this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.user1.shareKey'));
|
||||
$this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder .'/'. $this->filename . '.'.$recoveryKeyId.'.shareKey'));
|
||||
|
||||
// enable recovery for admin
|
||||
$this->assertTrue($util->setRecoveryForUser(false));
|
||||
}
|
||||
|
||||
function loginHelper($user, $create = false, $password = false)
|
||||
{
|
||||
if ($create) {
|
||||
\OC_User::createUser($user, $user);
|
||||
}
|
||||
|
||||
if($password === false) {
|
||||
$password = $user;
|
||||
}
|
||||
|
||||
\OC_Util::tearDownFS();
|
||||
\OC_User::setUserId('');
|
||||
\OC\Files\Filesystem::tearDown();
|
||||
|
@ -541,7 +681,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase
|
|||
\OC_User::setUserId($user);
|
||||
|
||||
$params['uid'] = $user;
|
||||
$params['password'] = $user;
|
||||
$params['password'] = $password;
|
||||
OCA\Encryption\Hooks::login($params);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue