Skip to content
Snippets Groups Projects
Commit 81ae4cb5 authored by Florin Peter's avatar Florin Peter
Browse files

added test for public shared file via link

parent a4e9e2fc
No related branches found
No related tags found
No related merge requests found
...@@ -1096,7 +1096,7 @@ class Util { ...@@ -1096,7 +1096,7 @@ class Util {
// handle public access // handle public access
if($fileOwnerUid === false && $this->isPublic) { if($fileOwnerUid === false && $this->isPublic) {
$filename = $view->getPath( $GLOBALS['fileSource'] ); $filename = $this->fileIdToPath( $GLOBALS['fileSource'] );
$fileOwnerUid = $GLOBALS['fileOwner']; $fileOwnerUid = $GLOBALS['fileOwner'];
return array ( $fileOwnerUid, $filename ); return array ( $fileOwnerUid, $filename );
......
...@@ -136,10 +136,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase ...@@ -136,10 +136,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase
$this->loginHelper('user1'); $this->loginHelper('user1');
// get file contents // get file contents
$retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $this->filename); $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $this->filename);
// check if data is the same as we previously written // check if data is the same as we previously written
$this->assertEquals($this->dataShort, $retreivedCryptedFile); $this->assertEquals($this->dataShort, $retrievedCryptedFile);
// cleanup // cleanup
if ($withTeardown) { if ($withTeardown) {
...@@ -184,10 +184,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase ...@@ -184,10 +184,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase
$this->loginHelper('user2'); $this->loginHelper('user2');
// get file contents // get file contents
$retreivedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename);
// check if data is the same as previously written // check if data is the same as previously written
$this->assertEquals($this->dataShort, $retreivedCryptedFile); $this->assertEquals($this->dataShort, $retrievedCryptedFile);
// cleanup // cleanup
if ($withTeardown) { if ($withTeardown) {
...@@ -260,10 +260,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase ...@@ -260,10 +260,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase
$this->loginHelper('user1'); $this->loginHelper('user1');
// get file contents // get file contents
$retreivedCryptedFile = $this->view->file_get_contents('/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename);
// check if data is the same // check if data is the same
$this->assertEquals($this->dataShort, $retreivedCryptedFile); $this->assertEquals($this->dataShort, $retrievedCryptedFile);
// cleanup // cleanup
if ($withTeardown) { if ($withTeardown) {
...@@ -320,10 +320,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase ...@@ -320,10 +320,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase
$this->loginHelper('user2'); $this->loginHelper('user2');
// get file contents // get file contents
$retreivedCryptedFile = $this->view->file_get_contents('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename);
// check if data is the same // check if data is the same
$this->assertEquals($this->dataShort, $retreivedCryptedFile); $this->assertEquals($this->dataShort, $retrievedCryptedFile);
// get the file info // get the file info
$fileInfo = $this->view->getFileInfo('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); $fileInfo = $this->view->getFileInfo('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename);
...@@ -344,10 +344,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase ...@@ -344,10 +344,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase
$this->loginHelper('user3'); $this->loginHelper('user3');
// get file contents // get file contents
$retreivedCryptedFile = $this->view->file_get_contents('/user3/files/Shared/' . $this->filename); $retrievedCryptedFile = $this->view->file_get_contents('/user3/files/Shared/' . $this->filename);
// check if data is the same // check if data is the same
$this->assertEquals($this->dataShort, $retreivedCryptedFile); $this->assertEquals($this->dataShort, $retrievedCryptedFile);
// cleanup // cleanup
if ($withTeardown) { if ($withTeardown) {
...@@ -387,6 +387,74 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase ...@@ -387,6 +387,74 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase
} }
} }
function testPublicShareFile()
{
// login as admin
$this->loginHelper('admin');
// save file with content
$cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort);
// test that data was successfully written
$this->assertTrue(is_int($cryptedFile));
// disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false;
// get the file info from previous created file
$fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename);
// check if we have a valid file info
$this->assertTrue(is_array($fileInfo));
// check if the unencrypted file size is stored
$this->assertGreaterThan(0, $fileInfo['unencrypted_size']);
// re-enable the file proxy
\OC_FileProxy::$enabled = $proxyStatus;
// share the file
\OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, false);
// login as admin
$this->loginHelper('admin');
$publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId');
// check if share key for public exists
$this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey'));
// some hacking to simulate public link
$GLOBALS['app'] = 'files_sharing';
$GLOBALS['fileOwner'] = 'admin';
$GLOBALS['fileSource'] = $fileInfo['fileid'];
\OC_User::setUserId('');
// get file contents
$retrievedCryptedFile = file_get_contents('crypt://' . $this->filename);
// check if data is the same as we previously written
$this->assertEquals($this->dataShort, $retrievedCryptedFile);
// tear down
// login as admin
$this->loginHelper('admin');
// unshare the file
\OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
// check if share key not exists
$this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey'));
// cleanup
$this->view->unlink('/admin/files/' . $this->filename);
// check if share key not exists
$this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey'));
}
function loginHelper($user, $create = false) function loginHelper($user, $create = false)
{ {
if ($create) { if ($create) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment