Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
our_own_cloud_project
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
die_coolen_jungs
our_own_cloud_project
Commits
3eae2614
Commit
3eae2614
authored
12 years ago
by
Florin Peter
Browse files
Options
Downloads
Patches
Plain Diff
added test for re-share folder
parent
15845bf0
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
apps/files_encryption/tests/share.php
+215
-97
215 additions, 97 deletions
apps/files_encryption/tests/share.php
with
215 additions
and
97 deletions
apps/files_encryption/tests/share.php
+
215
−
97
View file @
3eae2614
...
@@ -32,9 +32,11 @@ require_once realpath( dirname(__FILE__).'/../appinfo/app.php' );
...
@@ -32,9 +32,11 @@ require_once realpath( dirname(__FILE__).'/../appinfo/app.php' );
use
OCA\Encryption
;
use
OCA\Encryption
;
class
Test_Encryption_Share
extends
\PHPUnit_Framework_TestCase
{
class
Test_Encryption_Share
extends
\PHPUnit_Framework_TestCase
{
function
setUp
()
{
function
setUp
()
{
// reset backend
// reset backend
\OC_User
::
clearBackends
();
\OC_User
::
clearBackends
();
\OC_User
::
useBackend
(
'database'
);
\OC_User
::
useBackend
(
'database'
);
...
@@ -45,9 +47,19 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase {
...
@@ -45,9 +47,19 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase {
$userHome
=
\OC_User
::
getHome
(
'admin'
);
$userHome
=
\OC_User
::
getHome
(
'admin'
);
$this
->
dataDir
=
str_replace
(
'/admin'
,
''
,
$userHome
);
$this
->
dataDir
=
str_replace
(
'/admin'
,
''
,
$userHome
);
$this
->
folder1
=
'/folder1'
;
$this
->
subfolder
=
'/subfolder1'
;
$this
->
subsubfolder
=
'/subsubfolder1'
;
$this
->
filename
=
'share-tmp.test'
;
// enable resharing
\OC_Appconfig
::
setValue
(
'core'
,
'shareapi_allow_resharing'
,
'yes'
);
\OC_Appconfig
::
setValue
(
'core'
,
'shareapi_allow_resharing'
,
'yes'
);
OC_Hook
::
clear
(
'OCP\\Share'
);
// clear share hooks
\OC_Hook
::
clear
(
'OCP\\Share'
);
\OC
::
registerShareHooks
();
\OCP\Util
::
connectHook
(
'OC_Filesystem'
,
'setup'
,
'\OC\Files\Storage\Shared'
,
'setup'
);
// Sharing related hooks
// Sharing related hooks
\OCA\Encryption\Helper
::
registerShareHooks
();
\OCA\Encryption\Helper
::
registerShareHooks
();
...
@@ -57,220 +69,326 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase {
...
@@ -57,220 +69,326 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase {
\OC_FileProxy
::
register
(
new
OCA\Encryption\Proxy
());
\OC_FileProxy
::
register
(
new
OCA\Encryption\Proxy
());
\OC
::
registerShareHooks
();
OCP\Util
::
connectHook
(
'OC_Filesystem'
,
'setup'
,
'\OC\Files\Storage\Shared'
,
'setup'
);
// remember files_trashbin state
// 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
// we don't want to tests with app files_trashbin
enabled
\OC_App
::
disable
(
'files_trashbin'
);
\OC_App
::
disable
(
'files_trashbin'
);
// create users
$this
->
loginHelper
(
'user1'
,
true
);
$this
->
loginHelper
(
'user1'
,
true
);
$this
->
loginHelper
(
'user2'
,
true
);
$this
->
loginHelper
(
'user2'
,
true
);
$this
->
loginHelper
(
'user3'
,
true
);
$this
->
loginHelper
(
'user3'
,
true
);
$this
->
loginHelper
(
'user4'
,
true
);
}
}
function
tearDown
()
{
function
tearDown
()
{
// reset app files_trashbin
if
(
$this
->
stateFilesTrashbin
)
{
if
(
$this
->
stateFilesTrashbin
)
{
OC_App
::
enable
(
'files_trashbin'
);
OC_App
::
enable
(
'files_trashbin'
);
}
else
{
}
else
{
OC_App
::
disable
(
'files_trashbin'
);
OC_App
::
disable
(
'files_trashbin'
);
}
}
// cleanup users
\OC_User
::
deleteUser
(
'user1'
);
\OC_User
::
deleteUser
(
'user1'
);
\OC_User
::
deleteUser
(
'user2'
);
\OC_User
::
deleteUser
(
'user2'
);
\OC_User
::
deleteUser
(
'user3'
);
\OC_User
::
deleteUser
(
'user3'
);
\OC_User
::
deleteUser
(
'user4'
);
}
}
function
testShareFile
(
$withTeardown
=
true
)
{
function
testShareFile
(
$withTeardown
=
true
)
{
// login as admin
// login as admin
$this
->
loginHelper
(
'admin'
);
$this
->
loginHelper
(
'admin'
);
$filename
=
'share-tmp.test'
;
// save file with content
$cryptedFile
=
file_put_contents
(
'crypt://'
.
$this
->
filename
,
$this
->
dataShort
);
$cryptedFile
=
file_put_contents
(
'crypt://'
.
$filename
,
$this
->
dataShort
);
//
T
est that data was successfully written
//
t
est that data was successfully written
$this
->
assertTrue
(
is_int
(
$cryptedFile
));
$this
->
assertTrue
(
is_int
(
$cryptedFile
));
//
D
isable encryption proxy to prevent recursive calls
//
d
isable encryption proxy to prevent recursive calls
$proxyStatus
=
\OC_FileProxy
::
$enabled
;
$proxyStatus
=
\OC_FileProxy
::
$enabled
;
\OC_FileProxy
::
$enabled
=
false
;
\OC_FileProxy
::
$enabled
=
false
;
// get the file info
s
// get the file info
from previous created file
$fileInfo
=
$this
->
view
->
getFileInfo
(
'/admin/files/'
.
$
filename
);
$fileInfo
=
$this
->
view
->
getFileInfo
(
'/admin/files/'
.
$this
->
filename
);
// check if we have file
I
nfo
s
// check if we have
a valid
file
i
nfo
$this
->
assertTrue
(
is_array
(
$fileInfo
));
$this
->
assertTrue
(
is_array
(
$fileInfo
));
// check if
we have fileInfos
// check if
the unencrypted file size is stored
$this
->
assertGreaterThan
(
0
,
$fileInfo
[
'unencrypted_size'
]);
$this
->
assertGreaterThan
(
0
,
$fileInfo
[
'unencrypted_size'
]);
// re-enable the file proxy
\OC_FileProxy
::
$enabled
=
$proxyStatus
;
\OC_FileProxy
::
$enabled
=
$proxyStatus
;
// share the file
// share the file
\OCP\Share
::
shareItem
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
,
OCP\PERMISSION_ALL
);
\OCP\Share
::
shareItem
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
,
OCP\PERMISSION_ALL
);
// login as admin
$this
->
loginHelper
(
'admin'
);
$this
->
loginHelper
(
'admin'
);
// check if share key exists
// check if share key
for user1
exists
$this
->
assertTrue
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys/'
.
$
filename
.
'.user1.shareKey'
));
$this
->
assertTrue
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys/'
.
$this
->
filename
.
'.user1.shareKey'
));
// login as user1
// login as user1
$this
->
loginHelper
(
'user1'
);
$this
->
loginHelper
(
'user1'
);
//
G
et file contents
without using any wrapper to get it's actual contents on disk
//
g
et file contents
$retreivedCryptedFile
=
$this
->
view
->
file_get_contents
(
'/user1/files/Shared/'
.
$filename
);
$retreivedCryptedFile
=
$this
->
view
->
file_get_contents
(
'/user1/files/Shared/'
.
$
this
->
filename
);
// check if data is the same
// check if data is the same
as we previously written
$this
->
assertEquals
(
$this
->
dataShort
,
$retreivedCryptedFile
);
$this
->
assertEquals
(
$this
->
dataShort
,
$retreivedCryptedFile
);
// cleanup
if
(
$withTeardown
)
{
if
(
$withTeardown
)
{
// login as admin
// login as admin
$this
->
loginHelper
(
'admin'
);
$this
->
loginHelper
(
'admin'
);
// share the file
//
un
share the file
\OCP\Share
::
unshare
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
);
\OCP\Share
::
unshare
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
);
// check if share key not exists
// check if share key not exists
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys/'
.
$
filename
.
'.user1.shareKey'
));
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys/'
.
$this
->
filename
.
'.user1.shareKey'
));
// cleanup
// cleanup
$this
->
view
->
unlink
(
'/admin/files/'
.
$
filename
);
$this
->
view
->
unlink
(
'/admin/files/'
.
$this
->
filename
);
// check if share key not exists
// check if share key 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/'
.
$this
->
filename
.
'.admin.shareKey'
));
}
}
}
}
function
testReShareFile
(
$withTeardown
=
true
)
{
function
testReShareFile
(
$withTeardown
=
true
)
{
$this
->
testShareFile
(
false
);
$this
->
testShareFile
(
false
);
// login as user1
// login as user1
$this
->
loginHelper
(
'user1'
);
$this
->
loginHelper
(
'user1'
);
$filename
=
'share-tmp.test'
;
// get the file info
// get the file info
$fileInfo
=
$this
->
view
->
getFileInfo
(
'/user1/files/Shared/'
.
$
filename
);
$fileInfo
=
$this
->
view
->
getFileInfo
(
'/user1/files/Shared/'
.
$this
->
filename
);
// share the file
// share the file
with user2
\OCP\Share
::
shareItem
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user2'
,
OCP\PERMISSION_ALL
);
\OCP\Share
::
shareItem
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user2'
,
OCP\PERMISSION_ALL
);
// login as admin
$this
->
loginHelper
(
'admin'
);
$this
->
loginHelper
(
'admin'
);
// check if share key exists
// check if share key
for user2
exists
$this
->
assertTrue
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys/'
.
$
filename
.
'.user2.shareKey'
));
$this
->
assertTrue
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys/'
.
$this
->
filename
.
'.user2.shareKey'
));
// login as user2
// login as user2
$this
->
loginHelper
(
'user2'
);
$this
->
loginHelper
(
'user2'
);
//
G
et file contents
without using any wrapper to get it's actual contents on disk
//
g
et file contents
$retreivedCryptedFile
=
$this
->
view
->
file_get_contents
(
'/user2/files/Shared/'
.
$filename
);
$retreivedCryptedFile
=
$this
->
view
->
file_get_contents
(
'/user2/files/Shared/'
.
$
this
->
filename
);
// check if data is the same
// check if data is the same
as previously written
$this
->
assertEquals
(
$this
->
dataShort
,
$retreivedCryptedFile
);
$this
->
assertEquals
(
$this
->
dataShort
,
$retreivedCryptedFile
);
// cleanup
if
(
$withTeardown
)
{
if
(
$withTeardown
)
{
// login as admin
// login as user1
$this
->
loginHelper
(
'user1'
);
$this
->
loginHelper
(
'user1'
);
// share the file
//
un
share the file
with user2
\OCP\Share
::
unshare
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user2'
);
\OCP\Share
::
unshare
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user2'
);
// login as admin
$this
->
loginHelper
(
'admin'
);
$this
->
loginHelper
(
'admin'
);
// check if share key not exists
// check if share key not exists
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys/'
.
$
filename
.
'.user2.shareKey'
));
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys/'
.
$this
->
filename
.
'.user2.shareKey'
));
// share the file
//
un
share the file
with user1
\OCP\Share
::
unshare
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
);
\OCP\Share
::
unshare
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
);
// check if share key not exists
// check if share key not exists
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys/'
.
$
filename
.
'.user1.shareKey'
));
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys/'
.
$this
->
filename
.
'.user1.shareKey'
));
// cleanup
// cleanup
$this
->
view
->
unlink
(
'/admin/files/'
.
$
filename
);
$this
->
view
->
unlink
(
'/admin/files/'
.
$this
->
filename
);
// check if share key not exists
// check if share key 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/'
.
$this
->
filename
.
'.admin.shareKey'
));
}
}
}
}
function
testShareFolder
(
$withTeardown
=
true
)
{
function
testShareFolder
(
$withTeardown
=
true
)
// create user1
{
$this
->
loginHelper
(
'user1'
);
// login as admin
// login as admin
$this
->
loginHelper
(
'admin'
);
$this
->
loginHelper
(
'admin'
);
$folder1
=
'/folder1'
;
// create folder structure
$subfolder
=
'/subfolder1'
;
$this
->
view
->
mkdir
(
'/admin/files'
.
$this
->
folder1
);
$subsubfolder
=
'/subsubfolder1'
;
$this
->
view
->
mkdir
(
'/admin/files'
.
$this
->
folder1
.
$this
->
subfolder
);
$this
->
view
->
mkdir
(
'/admin/files'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
);
$filename
=
'share-tmp.test'
;
$this
->
view
->
mkdir
(
'/admin/files'
.
$folder1
);
// save file with content
$this
->
view
->
mkdir
(
'/admin/files'
.
$folder1
.
$subfolder
);
$cryptedFile
=
file_put_contents
(
'crypt://'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
,
$this
->
dataShort
);
$this
->
view
->
mkdir
(
'/admin/files'
.
$folder1
.
$subfolder
.
$subsubfolder
);
$cryptedFile
=
file_put_contents
(
'crypt://'
.
$folder1
.
$subfolder
.
$subsubfolder
.
'/'
.
$filename
,
$this
->
dataShort
);
// test that data was successfully written
// Test that data was successfully written
$this
->
assertTrue
(
is_int
(
$cryptedFile
));
$this
->
assertTrue
(
is_int
(
$cryptedFile
));
//
D
isable encryption proxy to prevent recursive calls
//
d
isable encryption proxy to prevent recursive calls
$proxyStatus
=
\OC_FileProxy
::
$enabled
;
$proxyStatus
=
\OC_FileProxy
::
$enabled
;
\OC_FileProxy
::
$enabled
=
false
;
\OC_FileProxy
::
$enabled
=
false
;
// get the file info
s
// get the file info
from previous created folder
$fileInfo
=
$this
->
view
->
getFileInfo
(
'/admin/files
/
folder1
/'
);
$fileInfo
=
$this
->
view
->
getFileInfo
(
'/admin/files
'
.
$this
->
folder1
);
// check if we have file
I
nfo
s
// check if we have
a valid
file
i
nfo
$this
->
assertTrue
(
is_array
(
$fileInfo
));
$this
->
assertTrue
(
is_array
(
$fileInfo
));
// re-enable the file proxy
\OC_FileProxy
::
$enabled
=
$proxyStatus
;
\OC_FileProxy
::
$enabled
=
$proxyStatus
;
// share the f
ile
// share the f
older with user1
\OCP\Share
::
shareItem
(
'folder'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
,
OCP\PERMISSION_ALL
);
\OCP\Share
::
shareItem
(
'folder'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
,
OCP\PERMISSION_ALL
);
// login as admin
$this
->
loginHelper
(
'admin'
);
$this
->
loginHelper
(
'admin'
);
// check if share key exists
// check if share key
for user1
exists
$this
->
assertTrue
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys'
.
$folder1
.
$subfolder
.
$subsubfolder
.
'/'
.
$
filename
.
'.user1.shareKey'
));
$this
->
assertTrue
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
.
'.user1.shareKey'
));
// login as user1
// login as user1
$this
->
loginHelper
(
'user1'
);
$this
->
loginHelper
(
'user1'
);
//
G
et file contents
without using any wrapper to get it's actual contents on disk
//
g
et file contents
$retreivedCryptedFile
=
$this
->
view
->
file_get_contents
(
'/user1/files/Shared'
.
$folder1
.
$subfolder
.
$subsubfolder
.
'/'
.
$
filename
);
$retreivedCryptedFile
=
$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
,
$retreivedCryptedFile
);
// cleanup
if
(
$withTeardown
)
{
if
(
$withTeardown
)
{
// login as admin
// login as admin
$this
->
loginHelper
(
'admin'
);
$this
->
loginHelper
(
'admin'
);
// share the f
ile
//
un
share the f
older with user1
\OCP\Share
::
unshare
(
'folder'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
);
\OCP\Share
::
unshare
(
'folder'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
);
// check if share key not exists
// check if share key not exists
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys'
.
$folder1
.
$subfolder
.
$subsubfolder
.
'/'
.
$filename
.
'.user1.shareKey'
));
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
.
'.user1.shareKey'
));
// cleanup
$this
->
view
->
unlink
(
'/admin/files'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
);
// check if share key not exists
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
.
'.admin.shareKey'
));
}
return
$fileInfo
;
}
function
testReShareFolder
(
$withTeardown
=
true
)
{
$fileInfoFolder1
=
$this
->
testShareFolder
(
false
);
// login as user1
$this
->
loginHelper
(
'user1'
);
// disable encryption proxy to prevent recursive calls
$proxyStatus
=
\OC_FileProxy
::
$enabled
;
\OC_FileProxy
::
$enabled
=
false
;
// get the file info from previous created folder
$fileInfoSubFolder
=
$this
->
view
->
getFileInfo
(
'/user1/files/Shared'
.
$this
->
folder1
.
$this
->
subfolder
);
// check if we have a valid file info
$this
->
assertTrue
(
is_array
(
$fileInfoSubFolder
));
// re-enable the file proxy
\OC_FileProxy
::
$enabled
=
$proxyStatus
;
// share the file with user2
\OCP\Share
::
shareItem
(
'folder'
,
$fileInfoSubFolder
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user2'
,
OCP\PERMISSION_ALL
);
// login as admin
$this
->
loginHelper
(
'admin'
);
// check if share key for user2 exists
$this
->
assertTrue
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
.
'.user2.shareKey'
));
// login as user2
$this
->
loginHelper
(
'user2'
);
// get file contents
$retreivedCryptedFile
=
$this
->
view
->
file_get_contents
(
'/user2/files/Shared'
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
);
// check if data is the same
$this
->
assertEquals
(
$this
->
dataShort
,
$retreivedCryptedFile
);
// get the file info
$fileInfo
=
$this
->
view
->
getFileInfo
(
'/user2/files/Shared'
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
);
// check if we have fileInfos
$this
->
assertTrue
(
is_array
(
$fileInfo
));
// share the file with user3
\OCP\Share
::
shareItem
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user3'
,
OCP\PERMISSION_ALL
);
// login as admin
$this
->
loginHelper
(
'admin'
);
// check if share key for user3 exists
$this
->
assertTrue
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
.
'.user3.shareKey'
));
// login as user3
$this
->
loginHelper
(
'user3'
);
// get file contents
$retreivedCryptedFile
=
$this
->
view
->
file_get_contents
(
'/user3/files/Shared/'
.
$this
->
filename
);
// check if data is the same
$this
->
assertEquals
(
$this
->
dataShort
,
$retreivedCryptedFile
);
// cleanup
if
(
$withTeardown
)
{
// login as user2
$this
->
loginHelper
(
'user2'
);
// unshare the file with user3
\OCP\Share
::
unshare
(
'file'
,
$fileInfo
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user3'
);
// check if share key not exists
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
.
'.user3.shareKey'
));
// login as user1
$this
->
loginHelper
(
'user1'
);
// unshare the folder with user2
\OCP\Share
::
unshare
(
'folder'
,
$fileInfoSubFolder
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user2'
);
// check if share key not exists
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
.
'.user2.shareKey'
));
// login as admin
$this
->
loginHelper
(
'admin'
);
// unshare the folder1 with user1
\OCP\Share
::
unshare
(
'folder'
,
$fileInfoFolder1
[
'fileid'
],
\OCP\Share
::
SHARE_TYPE_USER
,
'user1'
);
// check if share key not exists
$this
->
assertFalse
(
$this
->
view
->
file_exists
(
'/admin/files_encryption/share-keys'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
.
'.user1.shareKey'
));
// cleanup
// cleanup
$this
->
view
->
unlink
(
'/admin/files'
.
$folder1
.
$subfolder
.
$subsubfolder
.
'/'
.
$
filename
);
$this
->
view
->
unlink
(
'/admin/files'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
);
// check if share key not exists
// 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'
.
$this
->
folder1
.
$this
->
subfolder
.
$this
->
subsubfolder
.
'/'
.
$this
->
filename
.
'.admin.shareKey'
));
}
}
}
}
function
loginHelper
(
$user
,
$create
=
false
)
{
function
loginHelper
(
$user
,
$create
=
false
)
{
if
(
$create
)
{
if
(
$create
)
{
\OC_User
::
createUser
(
$user
,
$user
);
\OC_User
::
createUser
(
$user
,
$user
);
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment