Update all to use OCP\PERMISSION_* instead of OCP\Share::PERMISSION_*

This commit is contained in:
Thomas Tanghus 2012-11-11 19:58:54 +01:00
parent 7f0c69eb0e
commit 56239df2e7
10 changed files with 99 additions and 103 deletions

View File

@ -89,15 +89,15 @@ $freeSpace=OC_Filesystem::free_space($dir);
$freeSpace=max($freeSpace, 0); $freeSpace=max($freeSpace, 0);
$maxUploadFilesize = min($maxUploadFilesize, $freeSpace); $maxUploadFilesize = min($maxUploadFilesize, $freeSpace);
$permissions = OCP\Share::PERMISSION_READ; $permissions = OCP\PERMISSION_READ;
if (OC_Filesystem::isUpdatable($dir.'/')) { if (OC_Filesystem::isUpdatable($dir.'/')) {
$permissions |= OCP\Share::PERMISSION_UPDATE; $permissions |= OCP\PERMISSION_UPDATE;
} }
if (OC_Filesystem::isDeletable($dir.'/')) { if (OC_Filesystem::isDeletable($dir.'/')) {
$permissions |= OCP\Share::PERMISSION_DELETE; $permissions |= OCP\PERMISSION_DELETE;
} }
if (OC_Filesystem::isSharable($dir.'/')) { if (OC_Filesystem::isSharable($dir.'/')) {
$permissions |= OCP\Share::PERMISSION_SHARE; $permissions |= OCP\PERMISSION_SHARE;
} }
$tmpl = new OCP\Template( 'files', 'index', 'user' ); $tmpl = new OCP\Template( 'files', 'index', 'user' );

View File

@ -58,7 +58,7 @@
<th id="headerSize"><?php echo $l->t( 'Size' ); ?></th> <th id="headerSize"><?php echo $l->t( 'Size' ); ?></th>
<th id="headerDate"> <th id="headerDate">
<span id="modified"><?php echo $l->t( 'Modified' ); ?></span> <span id="modified"><?php echo $l->t( 'Modified' ); ?></span>
<?php if ($_['permissions'] & OCP\Share::PERMISSION_DELETE): ?> <?php if ($_['permissions'] & OCP\PERMISSION_DELETE): ?>
<!-- NOTE: Temporary fix to allow unsharing of files in root of Shared folder --> <!-- NOTE: Temporary fix to allow unsharing of files in root of Shared folder -->
<?php if ($_['dir'] == '/Shared'): ?> <?php if ($_['dir'] == '/Shared'): ?>
<span class="selectedActions"><a href="" class="delete"><?php echo $l->t('Unshare')?> <img class="svg" alt="<?php echo $l->t('Unshare')?>" src="<?php echo OCP\image_path("core", "actions/delete.svg"); ?>" /></a></span> <span class="selectedActions"><a href="" class="delete"><?php echo $l->t('Unshare')?> <img class="svg" alt="<?php echo $l->t('Unshare')?>" src="<?php echo OCP\image_path("core", "actions/delete.svg"); ?>" /></a></span>

View File

@ -19,11 +19,11 @@ if (version_compare($installedVersion, '0.3', '<')) {
$itemType = 'file'; $itemType = 'file';
} }
if ($row['permissions'] == 0) { if ($row['permissions'] == 0) {
$permissions = OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE; $permissions = OCP\PERMISSION_READ | OCP\PERMISSION_SHARE;
} else { } else {
$permissions = OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_SHARE; $permissions = OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_SHARE;
if ($itemType == 'folder') { if ($itemType == 'folder') {
$permissions |= OCP\Share::PERMISSION_CREATE; $permissions |= OCP\PERMISSION_CREATE;
} }
} }
$pos = strrpos($row['uid_shared_with'], '@'); $pos = strrpos($row['uid_shared_with'], '@');

View File

@ -97,10 +97,10 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
$file['permissions'] = $item['permissions']; $file['permissions'] = $item['permissions'];
if ($file['type'] == 'file') { if ($file['type'] == 'file') {
// Remove Create permission if type is file // Remove Create permission if type is file
$file['permissions'] &= ~OCP\Share::PERMISSION_CREATE; $file['permissions'] &= ~OCP\PERMISSION_CREATE;
} }
// NOTE: Temporary fix to allow unsharing of files in root of Shared directory // NOTE: Temporary fix to allow unsharing of files in root of Shared directory
$file['permissions'] |= OCP\Share::PERMISSION_DELETE; $file['permissions'] |= OCP\PERMISSION_DELETE;
$files[] = $file; $files[] = $file;
} }
return $files; return $files;
@ -113,7 +113,7 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
} }
$size += $item['size']; $size += $item['size'];
} }
return array(0 => array('id' => -1, 'name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size, 'writable' => false, 'type' => 'dir', 'directory' => '', 'permissions' => OCP\Share::PERMISSION_READ)); return array(0 => array('id' => -1, 'name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size, 'writable' => false, 'type' => 'dir', 'directory' => '', 'permissions' => OCP\PERMISSION_READ));
} else if ($format == self::FORMAT_OPENDIR) { } else if ($format == self::FORMAT_OPENDIR) {
$files = array(); $files = array();
foreach ($items as $item) { foreach ($items as $item) {

View File

@ -41,7 +41,7 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share
$file['permissions'] = $folder['permissions']; $file['permissions'] = $folder['permissions'];
if ($file['type'] == 'file') { if ($file['type'] == 'file') {
// Remove Create permission if type is file // Remove Create permission if type is file
$file['permissions'] &= ~OCP\Share::PERMISSION_CREATE; $file['permissions'] &= ~OCP\PERMISSION_CREATE;
} }
} }
return $files; return $files;

View File

@ -201,7 +201,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
if ($path == '') { if ($path == '') {
return false; return false;
} }
return ($this->getPermissions($path) & OCP\Share::PERMISSION_CREATE); return ($this->getPermissions($path) & OCP\PERMISSION_CREATE);
} }
public function isReadable($path) { public function isReadable($path) {
@ -212,21 +212,21 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
if ($path == '') { if ($path == '') {
return false; return false;
} }
return ($this->getPermissions($path) & OCP\Share::PERMISSION_UPDATE); return ($this->getPermissions($path) & OCP\PERMISSION_UPDATE);
} }
public function isDeletable($path) { public function isDeletable($path) {
if ($path == '') { if ($path == '') {
return true; return true;
} }
return ($this->getPermissions($path) & OCP\Share::PERMISSION_DELETE); return ($this->getPermissions($path) & OCP\PERMISSION_DELETE);
} }
public function isSharable($path) { public function isSharable($path) {
if ($path == '') { if ($path == '') {
return false; return false;
} }
return ($this->getPermissions($path) & OCP\Share::PERMISSION_SHARE); return ($this->getPermissions($path) & OCP\PERMISSION_SHARE);
} }
public function file_exists($path) { public function file_exists($path) {

View File

@ -147,7 +147,7 @@ if (isset($_GET['file']) || isset($_GET['dir'])) {
if ($i['directory'] == '/') { if ($i['directory'] == '/') {
$i['directory'] = ''; $i['directory'] = '';
} }
$i['permissions'] = OCP\Share::PERMISSION_READ; $i['permissions'] = OCP\PERMISSION_READ;
$files[] = $i; $files[] = $i;
} }
// Make breadcrumb // Make breadcrumb

View File

@ -91,16 +91,16 @@ class OC_Files {
foreach ($files as &$file) { foreach ($files as &$file) {
$file['directory'] = $directory; $file['directory'] = $directory;
$file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file'; $file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file';
$permissions = OCP\Share::PERMISSION_READ; $permissions = OCP\PERMISSION_READ;
// NOTE: Remove check when new encryption is merged // NOTE: Remove check when new encryption is merged
if (!$file['encrypted']) { if (!$file['encrypted']) {
$permissions |= OCP\Share::PERMISSION_SHARE; $permissions |= OCP\PERMISSION_SHARE;
} }
if ($file['type'] == 'dir' && $file['writable']) { if ($file['type'] == 'dir' && $file['writable']) {
$permissions |= OCP\Share::PERMISSION_CREATE; $permissions |= OCP\PERMISSION_CREATE;
} }
if ($file['writable']) { if ($file['writable']) {
$permissions |= OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_DELETE; $permissions |= OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE;
} }
$file['permissions'] = $permissions; $file['permissions'] = $permissions;
} }

View File

@ -46,12 +46,8 @@ class Share {
* Check if permission is granted with And (&) e.g. Check if delete is granted: if ($permissions & PERMISSION_DELETE) * Check if permission is granted with And (&) e.g. Check if delete is granted: if ($permissions & PERMISSION_DELETE)
* Remove permissions with And (&) and Not (~) e.g. Remove the update permission: $permissions &= ~PERMISSION_UPDATE * Remove permissions with And (&) and Not (~) e.g. Remove the update permission: $permissions &= ~PERMISSION_UPDATE
* Apps are required to handle permissions on their own, this class only stores and manages the permissions of shares * Apps are required to handle permissions on their own, this class only stores and manages the permissions of shares
* @see lib/public/constants.php
*/ */
const PERMISSION_CREATE = 4;
const PERMISSION_READ = 1;
const PERMISSION_UPDATE = 2;
const PERMISSION_DELETE = 8;
const PERMISSION_SHARE = 16;
const FORMAT_NONE = -1; const FORMAT_NONE = -1;
const FORMAT_STATUSES = -2; const FORMAT_STATUSES = -2;
@ -402,7 +398,7 @@ class Share {
// Check if permissions were removed // Check if permissions were removed
if ($item['permissions'] & ~$permissions) { if ($item['permissions'] & ~$permissions) {
// If share permission is removed all reshares must be deleted // If share permission is removed all reshares must be deleted
if (($item['permissions'] & self::PERMISSION_SHARE) && (~$permissions & self::PERMISSION_SHARE)) { if (($item['permissions'] & PERMISSION_SHARE) && (~$permissions & PERMISSION_SHARE)) {
self::delete($item['id'], true); self::delete($item['id'], true);
} else { } else {
$ids = array(); $ids = array();
@ -701,7 +697,7 @@ class Share {
$items[$id]['share_with'] = $row['share_with']; $items[$id]['share_with'] = $row['share_with'];
} }
// Switch ids if sharing permission is granted on only one share to ensure correct parent is used if resharing // Switch ids if sharing permission is granted on only one share to ensure correct parent is used if resharing
if (~(int)$items[$id]['permissions'] & self::PERMISSION_SHARE && (int)$row['permissions'] & self::PERMISSION_SHARE) { if (~(int)$items[$id]['permissions'] & PERMISSION_SHARE && (int)$row['permissions'] & PERMISSION_SHARE) {
$items[$row['id']] = $items[$id]; $items[$row['id']] = $items[$id];
unset($items[$id]); unset($items[$id]);
$id = $row['id']; $id = $row['id'];
@ -847,7 +843,7 @@ class Share {
throw new \Exception($message); throw new \Exception($message);
} }
// Check if share permissions is granted // Check if share permissions is granted
if ((int)$checkReshare['permissions'] & self::PERMISSION_SHARE) { if ((int)$checkReshare['permissions'] & PERMISSION_SHARE) {
if (~(int)$checkReshare['permissions'] & $permissions) { if (~(int)$checkReshare['permissions'] & $permissions) {
$message = 'Sharing '.$itemSource.' failed, because the permissions exceed permissions granted to '.$uidOwner; $message = 'Sharing '.$itemSource.' failed, because the permissions exceed permissions granted to '.$uidOwner;
\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR); \OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
@ -1133,7 +1129,7 @@ class Share {
$duplicateParent = $query->execute(array($item['item_type'], $item['item_target'], self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique, $item['uid_owner'], $item['parent']))->fetchRow(); $duplicateParent = $query->execute(array($item['item_type'], $item['item_target'], self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique, $item['uid_owner'], $item['parent']))->fetchRow();
if ($duplicateParent) { if ($duplicateParent) {
// Change the parent to the other item id if share permission is granted // Change the parent to the other item id if share permission is granted
if ($duplicateParent['permissions'] & self::PERMISSION_SHARE) { if ($duplicateParent['permissions'] & PERMISSION_SHARE) {
$query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `parent` = ? WHERE `id` = ?'); $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `parent` = ? WHERE `id` = ?');
$query->execute(array($duplicateParent['id'], $item['id'])); $query->execute(array($duplicateParent['id'], $item['id']));
continue; continue;

View File

@ -64,7 +64,7 @@ class Test_Share extends UnitTestCase {
public function testShareInvalidShareType() { public function testShareInvalidShareType() {
$message = 'Share type foobar is not valid for test.txt'; $message = 'Share type foobar is not valid for test.txt';
try { try {
OCP\Share::shareItem('test', 'test.txt', 'foobar', $this->user2, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', 'foobar', $this->user2, OCP\PERMISSION_READ);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
@ -73,7 +73,7 @@ class Test_Share extends UnitTestCase {
public function testInvalidItemType() { public function testInvalidItemType() {
$message = 'Sharing backend for foobar not found'; $message = 'Sharing backend for foobar not found';
try { try {
OCP\Share::shareItem('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
@ -109,7 +109,7 @@ class Test_Share extends UnitTestCase {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
try { try {
OCP\Share::setPermissions('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_UPDATE); OCP\Share::setPermissions('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_UPDATE);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
@ -120,131 +120,131 @@ class Test_Share extends UnitTestCase {
// Invalid shares // Invalid shares
$message = 'Sharing test.txt failed, because the user '.$this->user1.' is the item owner'; $message = 'Sharing test.txt failed, because the user '.$this->user1.' is the item owner';
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
$message = 'Sharing test.txt failed, because the user foobar does not exist'; $message = 'Sharing test.txt failed, because the user foobar does not exist';
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, 'foobar', OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, 'foobar', OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
$message = 'Sharing foobar failed, because the sharing backend for test could not find its source'; $message = 'Sharing foobar failed, because the sharing backend for test could not find its source';
try { try {
OCP\Share::shareItem('test', 'foobar', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'foobar', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
// Valid share // Valid share
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ));
$this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); $this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
// Attempt to share again // Attempt to share again
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$message = 'Sharing test.txt failed, because this item is already shared with '.$this->user2; $message = 'Sharing test.txt failed, because this item is already shared with '.$this->user2;
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
// Attempt to share back // Attempt to share back
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$message = 'Sharing test.txt failed, because the user '.$this->user1.' is the original sharer'; $message = 'Sharing test.txt failed, because the user '.$this->user1.' is the original sharer';
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
// Unshare // Unshare
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2));
// Attempt reshare without share permission // Attempt reshare without share permission
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$message = 'Sharing test.txt failed, because resharing is not allowed'; $message = 'Sharing test.txt failed, because resharing is not allowed';
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
// Owner grants share and update permission // Owner grants share and update permission
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_SHARE)); $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_SHARE));
// Attempt reshare with escalated permissions // Attempt reshare with escalated permissions
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$message = 'Sharing test.txt failed, because the permissions exceed permissions granted to '.$this->user2; $message = 'Sharing test.txt failed, because the permissions exceed permissions granted to '.$this->user2;
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
// Valid reshare // Valid reshare
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE));
$this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); $this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
OC_User::setUserId($this->user3); OC_User::setUserId($this->user3);
$this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
$this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
// Attempt to escalate permissions // Attempt to escalate permissions
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$message = 'Setting permissions for test.txt failed, because the permissions exceed permissions granted to '.$this->user2; $message = 'Setting permissions for test.txt failed, because the permissions exceed permissions granted to '.$this->user2;
try { try {
OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE); OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
// Remove update permission // Remove update permission
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE)); $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
OC_User::setUserId($this->user3); OC_User::setUserId($this->user3);
$this->assertEquals(array(OCP\Share::PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); $this->assertEquals(array(OCP\PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
// Remove share permission // Remove share permission
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ)); $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertEquals(array(OCP\Share::PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); $this->assertEquals(array(OCP\PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
OC_User::setUserId($this->user3); OC_User::setUserId($this->user3);
$this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt')); $this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt'));
// Reshare again, and then have owner unshare // Reshare again, and then have owner unshare
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE)); $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ));
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt')); $this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt'));
OC_User::setUserId($this->user3); OC_User::setUserId($this->user3);
$this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt')); $this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt'));
// Attempt target conflict // Attempt target conflict
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ));
OC_User::setUserId($this->user3); OC_User::setUserId($this->user3);
$this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ)); $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET); $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET);
@ -263,7 +263,7 @@ class Test_Share extends UnitTestCase {
// Invalid shares // Invalid shares
$message = 'Sharing test.txt failed, because the group foobar does not exist'; $message = 'Sharing test.txt failed, because the group foobar does not exist';
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
@ -272,131 +272,131 @@ class Test_Share extends UnitTestCase {
OC_Appconfig::setValue('core', 'shareapi_share_policy', 'groups_only'); OC_Appconfig::setValue('core', 'shareapi_share_policy', 'groups_only');
$message = 'Sharing test.txt failed, because '.$this->user1.' is not a member of the group '.$this->group2; $message = 'Sharing test.txt failed, because '.$this->user1.' is not a member of the group '.$this->group2;
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
OC_Appconfig::setValue('core', 'shareapi_share_policy', $policy); OC_Appconfig::setValue('core', 'shareapi_share_policy', $policy);
// Valid share // Valid share
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ));
$this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); $this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
OC_User::setUserId($this->user3); OC_User::setUserId($this->user3);
$this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
// Attempt to share again // Attempt to share again
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1; $message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1;
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
// Attempt to share back to owner of group share // Attempt to share back to owner of group share
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$message = 'Sharing test.txt failed, because the user '.$this->user1.' is the original sharer'; $message = 'Sharing test.txt failed, because the user '.$this->user1.' is the original sharer';
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
// Attempt to share back to group // Attempt to share back to group
$message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1; $message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1;
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
// Attempt to share back to member of group // Attempt to share back to member of group
$message ='Sharing test.txt failed, because this item is already shared with '.$this->user3; $message ='Sharing test.txt failed, because this item is already shared with '.$this->user3;
try { try {
OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\Share::PERMISSION_READ); OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ);
$this->fail('Exception was expected: '.$message); $this->fail('Exception was expected: '.$message);
} catch (Exception $exception) { } catch (Exception $exception) {
$this->assertEquals($message, $exception->getMessage()); $this->assertEquals($message, $exception->getMessage());
} }
// Unshare // Unshare
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1)); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1));
// Valid share with same person - user then group // Valid share with same person - user then group
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE | OCP\Share::PERMISSION_SHARE)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE | OCP\PERMISSION_SHARE));
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
$this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_DELETE | OCP\Share::PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE | OCP\PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
OC_User::setUserId($this->user3); OC_User::setUserId($this->user3);
$this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
$this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
// Valid reshare // Valid reshare
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\Share::PERMISSION_READ)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\PERMISSION_READ));
OC_User::setUserId($this->user4); OC_User::setUserId($this->user4);
$this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
// Unshare from user only // Unshare from user only
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
OC_User::setUserId($this->user4); OC_User::setUserId($this->user4);
$this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
// Valid share with same person - group then user // Valid share with same person - group then user
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE)); $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
$this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
// Unshare from group only // Unshare from group only
OC_User::setUserId($this->user1); OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1)); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertEquals(array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
// Attempt user specific target conflict // Attempt user specific target conflict
OC_User::setUserId($this->user3); OC_User::setUserId($this->user3);
$this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE)); $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET); $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET);
$this->assertEquals(2, count($to_test)); $this->assertEquals(2, count($to_test));
$this->assertTrue(in_array('test.txt', $to_test)); $this->assertTrue(in_array('test.txt', $to_test));
$this->assertTrue(in_array('test1.txt', $to_test)); $this->assertTrue(in_array('test1.txt', $to_test));
// Valid reshare // Valid reshare
$this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE)); $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE));
OC_User::setUserId($this->user4); OC_User::setUserId($this->user4);
$this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
// Remove user from group // Remove user from group
OC_Group::removeFromGroup($this->user2, $this->group1); OC_Group::removeFromGroup($this->user2, $this->group1);
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
OC_User::setUserId($this->user4); OC_User::setUserId($this->user4);
$this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
// Add user to group // Add user to group
OC_Group::addToGroup($this->user4, $this->group1); OC_Group::addToGroup($this->user4, $this->group1);
$this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
// Unshare from self // Unshare from self
$this->assertTrue(OCP\Share::unshareFromSelf('test', 'test.txt')); $this->assertTrue(OCP\Share::unshareFromSelf('test', 'test.txt'));
$this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
OC_User::setUserId($this->user2); OC_User::setUserId($this->user2);
$this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
// Remove group // Remove group
OC_Group::deleteGroup($this->group1); OC_Group::deleteGroup($this->group1);
OC_User::setUserId($this->user4); OC_User::setUserId($this->user4);