Revert using item name, no longer allowing the same item source exist for a user
This commit is contained in:
parent
536fbb9189
commit
9699ff03bd
5 changed files with 118 additions and 92 deletions
|
@ -24,9 +24,9 @@ OC_JSON::checkLoggedIn();
|
|||
if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSource'])) {
|
||||
switch ($_POST['action']) {
|
||||
case 'share':
|
||||
if (isset($_POST['itemName']) && isset($_POST['shareType']) && isset($_POST['shareWith']) && isset($_POST['permissions'])) {
|
||||
if (isset($_POST['shareType']) && isset($_POST['shareWith']) && isset($_POST['permissions'])) {
|
||||
try {
|
||||
OCP\Share::shareItem($_POST['itemType'], $_POST['itemName'], $_POST['itemSource'], (int)$_POST['shareType'], $_POST['shareWith'], $_POST['permissions']);
|
||||
OCP\Share::shareItem($_POST['itemType'], $_POST['itemSource'], (int)$_POST['shareType'], $_POST['shareWith'], $_POST['permissions']);
|
||||
// TODO May need to return private link
|
||||
OC_JSON::success();
|
||||
} catch (Exception $exception) {
|
||||
|
@ -56,9 +56,9 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
|
|||
}
|
||||
break;
|
||||
case 'getItem':
|
||||
if (isset($_GET['itemType']) && isset($_GET['itemName']) && isset($_GET['itemSource'])) {
|
||||
$reshare = OCP\Share::getItemSharedWith($_GET['itemType'], $_GET['itemName'], OCP\Share::FORMAT_NONE, null, true);
|
||||
if ($_GET['itemSource'] !== false) {
|
||||
if (isset($_GET['itemType']) && isset($_GET['itemSource']) && isset($_GET['checkShares'])) {
|
||||
$reshare = OCP\Share::getItemSharedWithBySource($_GET['itemType'], $_GET['itemSource'], OCP\Share::FORMAT_NONE, null, true);
|
||||
if ($_GET['checkShares'] == "true") {
|
||||
$shares = OCP\Share::getItemShared($_GET['itemType'], $_GET['itemSource']);
|
||||
} else {
|
||||
$shares = false;
|
||||
|
|
|
@ -30,12 +30,14 @@ OC.Share={
|
|||
}
|
||||
});
|
||||
},
|
||||
loadItem:function(itemType, itemName, itemSource) {
|
||||
loadItem:function(itemType, itemSource) {
|
||||
var data = '';
|
||||
if (typeof OC.Share.statuses[itemName] === 'undefined') {
|
||||
itemSource = false;
|
||||
if (typeof OC.Share.statuses[itemSource] === 'undefined') {
|
||||
checkShares = false;
|
||||
} else {
|
||||
checkShares = true;
|
||||
}
|
||||
$.ajax({type: 'GET', url: OC.filePath('core', 'ajax', 'share.php'), data: { fetch: 'getItem', itemType: itemType, itemName: itemName, itemSource: itemSource }, async: false, success: function(result) {
|
||||
$.ajax({type: 'GET', url: OC.filePath('core', 'ajax', 'share.php'), data: { fetch: 'getItem', itemType: itemType, itemSource: itemSource, checkShares: checkShares }, async: false, success: function(result) {
|
||||
if (result && result.status === 'success') {
|
||||
data = result.data;
|
||||
} else {
|
||||
|
@ -44,8 +46,8 @@ OC.Share={
|
|||
}});
|
||||
return data;
|
||||
},
|
||||
share:function(itemType, itemName, itemSource, shareType, shareWith, permissions, callback) {
|
||||
$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'share', itemType: itemType, itemName: itemName, itemSource: itemSource, shareType: shareType, shareWith: shareWith, permissions: permissions }, function(result) {
|
||||
share:function(itemType, itemSource, shareType, shareWith, permissions, callback) {
|
||||
$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'share', itemType: itemType, itemSource: itemSource, shareType: shareType, shareWith: shareWith, permissions: permissions }, function(result) {
|
||||
if (result && result.status === 'success') {
|
||||
if (callback) {
|
||||
callback(result.data);
|
||||
|
@ -73,9 +75,9 @@ OC.Share={
|
|||
}
|
||||
});
|
||||
},
|
||||
showDropDown:function(itemType, itemName, itemSource, appendTo, privateLink, possiblePermissions) {
|
||||
var data = OC.Share.loadItem(itemType, itemName, itemSource);
|
||||
var html = '<div id="dropdown" class="drop" data-item-type="'+itemType+'" data-item-name="'+itemName+'" data-item-source="'+itemSource+'">';
|
||||
showDropDown:function(itemType, itemSource, appendTo, privateLink, possiblePermissions) {
|
||||
var data = OC.Share.loadItem(itemType, itemSource);
|
||||
var html = '<div id="dropdown" class="drop" data-item-type="'+itemType+'" data-item-source="'+itemSource+'">';
|
||||
if (data.reshare) {
|
||||
if (data.reshare.share_type == OC.Share.SHARE_TYPE_GROUP) {
|
||||
html += 'Shared with you and the group '+data.reshare.share_with+' by '+data.reshare.uid_owner;
|
||||
|
@ -136,7 +138,7 @@ OC.Share={
|
|||
$(this).val(shareWith);
|
||||
// Default permissions are Read and Share
|
||||
var permissions = OC.Share.PERMISSION_READ | OC.Share.PERMISSION_SHARE;
|
||||
OC.Share.share($('#dropdown').data('item-type'), $('#dropdown').data('item-name'), $('#dropdown').data('item-source'), shareType, shareWith, permissions, function() {
|
||||
OC.Share.share($('#dropdown').data('item-type'), $('#dropdown').data('item-source'), shareType, shareWith, permissions, function() {
|
||||
OC.Share.addShareWith(shareType, shareWith, permissions, possiblePermissions);
|
||||
$('#shareWith').val('');
|
||||
});
|
||||
|
@ -251,9 +253,8 @@ $(document).ready(function() {
|
|||
|
||||
$('a.share').live('click', function(event) {
|
||||
event.stopPropagation();
|
||||
if ($(this).data('item-type') !== undefined && $(this).data('item-name') !== undefined && $(this).data('item-source') !== undefined) {
|
||||
if ($(this).data('item-type') !== undefined && $(this).data('item-source') !== undefined) {
|
||||
var itemType = $(this).data('item-type');
|
||||
var itemName = $(this).data('item-name');
|
||||
var itemSource = $(this).data('item-source');
|
||||
var appendTo = $(this).parent().parent();
|
||||
var privateLink = false;
|
||||
|
@ -264,13 +265,13 @@ $(document).ready(function() {
|
|||
if (OC.Share.droppedDown) {
|
||||
if (item != $('#dropdown').data('item')) {
|
||||
OC.Share.hideDropDown(function () {
|
||||
OC.Share.showDropDown(itemType, itemName, itemSource, appendTo, privateLink, possiblePermissions);
|
||||
OC.Share.showDropDown(itemType, itemSource, appendTo, privateLink, possiblePermissions);
|
||||
});
|
||||
} else {
|
||||
OC.Share.hideDropDown();
|
||||
}
|
||||
} else {
|
||||
OC.Share.showDropDown(itemType, itemName, itemSource, appendTo, privateLink, possiblePermissions);
|
||||
OC.Share.showDropDown(itemType, itemSource, appendTo, privateLink, possiblePermissions);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -280,7 +281,11 @@ $(document).ready(function() {
|
|||
FileActions.register('all', 'Share', FileActions.PERMISSION_SHARE, function(filename) {
|
||||
// Return the correct sharing icon
|
||||
if (scanFiles.scanning) { return; } // workaround to prevent additional http request block scanning feedback
|
||||
var item = $('#dir').val() + filename;
|
||||
if ($('#dir').val() == '/') {
|
||||
var item = $('#dir').val() + filename;
|
||||
} else {
|
||||
var item = $('#dir').val() + '/' + filename;
|
||||
}
|
||||
// Check if status is in cache
|
||||
if (OC.Share.statuses[item] === true) {
|
||||
return OC.imagePath('core', 'actions/public');
|
||||
|
@ -302,7 +307,11 @@ $(document).ready(function() {
|
|||
return OC.imagePath('core', 'actions/share');
|
||||
}
|
||||
}, function(filename) {
|
||||
var item = $('#dir').val() + filename;
|
||||
if ($('#dir').val() == '/') {
|
||||
var item = $('#dir').val() + filename;
|
||||
} else {
|
||||
var item = $('#dir').val() + '/' + filename;
|
||||
}
|
||||
if ($('tr').filterAttr('data-file', filename).data('type') == 'dir') {
|
||||
var itemType = 'folder';
|
||||
var possiblePermissions = OC.Share.PERMISSION_CREATE | OC.Share.PERMISSION_UPDATE | OC.Share.PERMISSION_DELETE | OC.Share.PERMISSION_SHARE;
|
||||
|
@ -316,14 +325,14 @@ $(document).ready(function() {
|
|||
if (item != $('#dropdown').data('item')) {
|
||||
OC.Share.hideDropDown(function () {
|
||||
$('tr').filterAttr('data-file', filename).addClass('mouseOver');
|
||||
OC.Share.showDropDown(itemType, '/'+filename, item, appendTo, true, possiblePermissions);
|
||||
OC.Share.showDropDown(itemType, item, appendTo, true, possiblePermissions);
|
||||
});
|
||||
} else {
|
||||
OC.Share.hideDropDown();
|
||||
}
|
||||
} else {
|
||||
$('tr').filterAttr('data-file',filename).addClass('mouseOver');
|
||||
OC.Share.showDropDown(itemType, '/'+filename, item, appendTo, true, possiblePermissions);
|
||||
OC.Share.showDropDown(itemType, item, appendTo, true, possiblePermissions);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -139,7 +139,7 @@ class Share {
|
|||
* @param int CRUDS permissions
|
||||
* @return bool Returns true on success or false on failure
|
||||
*/
|
||||
public static function shareItem($itemType, $itemName, $itemSource, $shareType, $shareWith, $permissions) {
|
||||
public static function shareItem($itemType, $itemSource, $shareType, $shareWith, $permissions) {
|
||||
$uidOwner = \OC_User::getUser();
|
||||
// Verify share type and sharing conditions are met
|
||||
if ($shareType === self::SHARE_TYPE_USER) {
|
||||
|
@ -152,10 +152,18 @@ class Share {
|
|||
$message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' does not exist';
|
||||
\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
|
||||
throw new \Exception($message);
|
||||
} else {
|
||||
$inGroup = array_intersect(\OC_Group::getUserGroups($uidOwner), \OC_Group::getUserGroups($shareWith));
|
||||
if (empty($inGroup)) {
|
||||
$message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is not a member of any groups that '.$uidOwner.' is a member of';
|
||||
}
|
||||
$inGroup = array_intersect(\OC_Group::getUserGroups($uidOwner), \OC_Group::getUserGroups($shareWith));
|
||||
if (empty($inGroup)) {
|
||||
$message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is not a member of any groups that '.$uidOwner.' is a member of';
|
||||
\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
|
||||
throw new \Exception($message);
|
||||
}
|
||||
// Check if the item source is already shared with the user, either from the same owner or a different user
|
||||
if ($checkExists = self::getItems($itemType, $itemSource, self::$shareTypeUserAndGroups, $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) {
|
||||
// Only allow the same share to occur again if it is the same owner and is not a user share, this use case is for increasing permissions for a specific user
|
||||
if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) {
|
||||
$message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith;
|
||||
\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
|
||||
throw new \Exception($message);
|
||||
}
|
||||
|
@ -165,11 +173,27 @@ class Share {
|
|||
$message = 'Sharing '.$itemSource.' failed, because the group '.$shareWith.' does not exist';
|
||||
\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
|
||||
throw new \Exception($message);
|
||||
} else if (!\OC_Group::inGroup($uidOwner, $shareWith)) {
|
||||
}
|
||||
if (!\OC_Group::inGroup($uidOwner, $shareWith)) {
|
||||
$message = 'Sharing '.$itemSource.' failed, because '.$uidOwner.' is not a member of the group '.$shareWith;
|
||||
\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
|
||||
throw new \Exception($message);
|
||||
}
|
||||
// Check if the item source is already shared with the group, either from the same owner or a different user
|
||||
// The check for each user in the group is done inside the put() function
|
||||
if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_GROUP, $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) {
|
||||
// Only allow the same share to occur again if it is the same owner and is not a group share, this use case is for increasing permissions for a specific user
|
||||
if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) {
|
||||
$message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith;
|
||||
\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
|
||||
throw new \Exception($message);
|
||||
}
|
||||
}
|
||||
// Convert share with into an array with the keys group and users
|
||||
$group = $shareWith;
|
||||
$shareWith = array();
|
||||
$shareWith['group'] = $group;
|
||||
$shareWith['users'] = array_diff(\OC_Group::usersInGroup($group), array($uidOwner));
|
||||
} else if ($shareType === self::SHARE_TYPE_PRIVATE_LINK) {
|
||||
$shareWith = md5(uniqid($itemSource, true));
|
||||
return self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions);
|
||||
|
@ -192,26 +216,13 @@ class Share {
|
|||
\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
|
||||
throw new \Exception($message);
|
||||
}
|
||||
return self::shareItem($itemType, $itemName, $itemSource, self::SHARE_TYPE_EMAIL, $details['EMAIL'], $permissions);
|
||||
return self::shareItem($itemType, $itemSource, self::SHARE_TYPE_EMAIL, $details['EMAIL'], $permissions);
|
||||
} else {
|
||||
// Future share types need to include their own conditions
|
||||
$message = 'Share type '.$shareType.' is not valid for '.$itemSource;
|
||||
\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
|
||||
throw new \Exception($message);
|
||||
}
|
||||
// TODO This query has pretty bad performance if there are large collections, figure out a way to make the collection searching more efficient
|
||||
if (self::getItems($itemType, $itemSource, $shareType, $shareWith, $uidOwner, self::FORMAT_NONE, null, 1, true)) {
|
||||
$message = 'Sharing '.$itemSource.' failed, because this item is already shared with '.$shareWith;
|
||||
\OC_Log::write('OCP\Share', $message, \OC_Log::ERROR);
|
||||
throw new \Exception($message);
|
||||
}
|
||||
if ($shareType == self::SHARE_TYPE_GROUP) {
|
||||
// Convert share with into an array with the keys group and users
|
||||
$group = $shareWith;
|
||||
$shareWith = array();
|
||||
$shareWith['group'] = $group;
|
||||
$shareWith['users'] = array_diff(\OC_Group::usersInGroup($group), array($uidOwner));
|
||||
}
|
||||
// If the item is a folder, scan through the folder looking for equivalent item types
|
||||
if ($itemType == 'folder') {
|
||||
$parentFolder = self::put('folder', $itemSource, $shareType, $shareWith, $uidOwner, $permissions, true);
|
||||
|
@ -223,7 +234,7 @@ class Share {
|
|||
array_push($files, $children);
|
||||
} else {
|
||||
// Pass on to put() to check if this item should be converted, the item won't be inserted into the database unless it can be converted
|
||||
self::put('file', $name, $name, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder);
|
||||
self::put('file', $name, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -231,7 +242,7 @@ class Share {
|
|||
return false;
|
||||
} else {
|
||||
// Put the item into the database
|
||||
return self::put($itemType, $itemName, $itemSource, $shareType, $shareWith, $uidOwner, $permissions);
|
||||
return self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -566,7 +577,11 @@ class Share {
|
|||
}
|
||||
// Remove root from file source paths if retrieving own shared items
|
||||
if (isset($uidOwner) && isset($row['file_source'])) {
|
||||
$row['file_source'] = substr($row['file_source'], $root);
|
||||
if (isset($row['parent'])) {
|
||||
$row['file_source'] = '/Shared/'.basename($row['file_source']);
|
||||
} else {
|
||||
$row['file_source'] = substr($row['file_source'], $root);
|
||||
}
|
||||
}
|
||||
$items[$row['id']] = $row;
|
||||
}
|
||||
|
@ -644,7 +659,7 @@ class Share {
|
|||
* @param bool|array Parent folder target (optional)
|
||||
* @return bool Returns true on success or false on failure
|
||||
*/
|
||||
private static function put($itemType, $itemName, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder = null) {
|
||||
private static function put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, $parentFolder = null) {
|
||||
// Check file extension for an equivalent item type to convert to
|
||||
if ($itemType == 'file') {
|
||||
$extension = strtolower(substr($itemSource, strrpos($itemSource, '.') + 1));
|
||||
|
@ -661,7 +676,7 @@ class Share {
|
|||
}
|
||||
$backend = self::getBackend($itemType);
|
||||
// Check if this is a reshare
|
||||
if ($checkReshare = self::getItemSharedWith($itemType, $itemName, self::FORMAT_NONE, null, true)) {
|
||||
if ($checkReshare = self::getItemSharedWithBySource($itemType, $itemSource, self::FORMAT_NONE, null, true)) {
|
||||
// Check if attempting to share back to owner
|
||||
if ($checkReshare['uid_owner'] == $shareWith && $shareType == self::SHARE_TYPE_USER) {
|
||||
$message = 'Sharing '.$itemSource.' failed, because the user '.$shareWith.' is the original sharer';
|
||||
|
|
|
@ -25,16 +25,18 @@ class Test_Share_Backend implements OCP\Share_Backend {
|
|||
const FORMAT_TARGET = 1;
|
||||
const FORMAT_PERMISSIONS = 2;
|
||||
|
||||
private $testItem = 'test.txt';
|
||||
private $testItem1 = 'test.txt';
|
||||
private $testItem2 = 'share.txt';
|
||||
|
||||
public function isValidSource($itemSource, $uidOwner) {
|
||||
if ($itemSource == $this->testItem) {
|
||||
if ($itemSource == $this->testItem1 || $itemSource == $this->testItem2) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public function generateTarget($itemSource, $shareWith, $exclude = null) {
|
||||
$target = $itemSource;
|
||||
// Always make target be test.txt to cause conflicts
|
||||
$target = 'test.txt';
|
||||
if (isset($exclude)) {
|
||||
$pos = strrpos($target, '.');
|
||||
$name = substr($target, 0, $pos);
|
||||
|
|
|
@ -63,13 +63,13 @@ class Test_Share extends UnitTestCase {
|
|||
|
||||
public function testShareInvalidShareType() {
|
||||
$this->expectException(new Exception('Share type foobar is not valid for test.txt'));
|
||||
OCP\Share::shareItem('test', 'test.txt', 'test.txt', 'foobar', $this->user2, OCP\Share::PERMISSION_READ);
|
||||
OCP\Share::shareItem('test', 'test.txt', 'foobar', $this->user2, OCP\Share::PERMISSION_READ);
|
||||
}
|
||||
|
||||
public function testInvalidItemType() {
|
||||
$message = 'Sharing backend for foobar not found';
|
||||
try {
|
||||
OCP\Share::shareItem('foobar', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
|
@ -116,28 +116,28 @@ class Test_Share extends UnitTestCase {
|
|||
// Invalid shares
|
||||
$message = 'Sharing test.txt failed, because the user '.$this->user1.' is the item owner';
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
}
|
||||
$message = 'Sharing test.txt failed, because the user foobar does not exist';
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
}
|
||||
$message = 'Sharing foobar failed, because the sharing backend for test could not find its source';
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'foobar', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
}
|
||||
|
||||
// Valid share
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ));
|
||||
$this->assertEqual(OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), array('test.txt'));
|
||||
OC_User::setUserId($this->user2);
|
||||
$this->assertEqual(OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), array('test.txt'));
|
||||
|
@ -146,7 +146,7 @@ class Test_Share extends UnitTestCase {
|
|||
OC_User::setUserId($this->user1);
|
||||
$message = 'Sharing test.txt failed, because this item is already shared with '.$this->user2;
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
|
@ -156,7 +156,7 @@ class Test_Share extends UnitTestCase {
|
|||
OC_User::setUserId($this->user2);
|
||||
$message = 'Sharing test.txt failed, because the user '.$this->user1.' is the original sharer';
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
|
@ -167,11 +167,11 @@ class Test_Share extends UnitTestCase {
|
|||
$this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2));
|
||||
|
||||
// Attempt reshare without share permission
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ));
|
||||
OC_User::setUserId($this->user2);
|
||||
$message = 'Sharing test.txt failed, because resharing is not allowed';
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
|
@ -185,14 +185,14 @@ class Test_Share extends UnitTestCase {
|
|||
OC_User::setUserId($this->user2);
|
||||
$message = 'Sharing test.txt failed, because the permissions exceed permissions granted to '.$this->user2;
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
}
|
||||
|
||||
// Valid reshare
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE));
|
||||
$this->assertEqual(OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), array('test.txt'));
|
||||
OC_User::setUserId($this->user3);
|
||||
$this->assertEqual(OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), array('test.txt'));
|
||||
|
@ -228,7 +228,7 @@ class Test_Share extends UnitTestCase {
|
|||
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));
|
||||
OC_User::setUserId($this->user2);
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ));
|
||||
OC_User::setUserId($this->user1);
|
||||
$this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2));
|
||||
OC_User::setUserId($this->user2);
|
||||
|
@ -238,12 +238,12 @@ class Test_Share extends UnitTestCase {
|
|||
|
||||
// Attempt target conflict
|
||||
OC_User::setUserId($this->user1);
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ));
|
||||
OC_User::setUserId($this->user3);
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', 'test.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\Share::PERMISSION_READ));
|
||||
OC_User::setUserId($this->user2);
|
||||
$this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array('test.txt', 'test1.txt'));
|
||||
|
||||
|
||||
// Remove user
|
||||
OC_User::deleteUser($this->user1);
|
||||
OC_User::setUserId($this->user2);
|
||||
|
@ -254,21 +254,21 @@ class Test_Share extends UnitTestCase {
|
|||
// Invalid shares
|
||||
$message = 'Sharing test.txt failed, because the group foobar does not exist';
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
}
|
||||
$message = 'Sharing test.txt failed, because '.$this->user1.' is not a member of the group '.$this->group2;
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
}
|
||||
|
||||
// Valid share
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ));
|
||||
$this->assertEqual(OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), array('test.txt'));
|
||||
OC_User::setUserId($this->user2);
|
||||
$this->assertEqual(OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), array('test.txt'));
|
||||
|
@ -279,7 +279,7 @@ class Test_Share extends UnitTestCase {
|
|||
OC_User::setUserId($this->user1);
|
||||
$message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1;
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
|
@ -289,25 +289,25 @@ class Test_Share extends UnitTestCase {
|
|||
OC_User::setUserId($this->user2);
|
||||
$message = 'Sharing test.txt failed, because the user '.$this->user1.' is the original sharer';
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
}
|
||||
|
||||
// Attempt to share back to group
|
||||
$message = 'Sharing test.txt failed, because the item was orignally shared with the group '.$this->group1;
|
||||
$message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1;
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
}
|
||||
|
||||
// Attempt to share back to member of group
|
||||
$message = 'Sharing test.txt failed, because the user '.$this->user3.' is a member of the original group share';
|
||||
$message ='Sharing test.txt failed, because this item is already shared with '.$this->user3;
|
||||
try {
|
||||
OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ);
|
||||
$this->fail('Exception was expected: '.$message);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertEqual($exception->getMessage(), $message);
|
||||
|
@ -318,8 +318,8 @@ class Test_Share extends UnitTestCase {
|
|||
$this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1));
|
||||
|
||||
// Valid share with same person - user then group
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', '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', '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_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_GROUP, $this->group1, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE));
|
||||
OC_User::setUserId($this->user2);
|
||||
$this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array('test.txt'));
|
||||
$this->assertEqual(OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS), array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_DELETE | OCP\Share::PERMISSION_SHARE));
|
||||
|
@ -329,7 +329,7 @@ class Test_Share extends UnitTestCase {
|
|||
|
||||
// Valid reshare
|
||||
OC_User::setUserId($this->user2);
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ));
|
||||
OC_User::setUserId($this->user4);
|
||||
$this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array('test.txt'));
|
||||
|
||||
|
@ -343,7 +343,7 @@ class Test_Share extends UnitTestCase {
|
|||
|
||||
// Valid share with same person - group then user
|
||||
OC_User::setUserId($this->user1);
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', '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\Share::PERMISSION_READ | OCP\Share::PERMISSION_DELETE));
|
||||
OC_User::setUserId($this->user2);
|
||||
$this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array('test.txt'));
|
||||
$this->assertEqual(OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS), array(OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_UPDATE | OCP\Share::PERMISSION_DELETE));
|
||||
|
@ -356,21 +356,21 @@ class Test_Share extends UnitTestCase {
|
|||
|
||||
// Attempt user specific target conflict
|
||||
OC_User::setUserId($this->user3);
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE));
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE));
|
||||
OC_User::setUserId($this->user2);
|
||||
$this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array('test.txt', 'test1.txt'));
|
||||
|
||||
// Valid reshare TODO Broken
|
||||
$this->assertTrue(OCP\Share::shareItem('test', 'test1.txt', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE));
|
||||
OC_User::setUserId($this->user4);
|
||||
$this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array('test1.txt'));
|
||||
|
||||
// Remove user from group
|
||||
OC_Group::removeFromGroup($this->user2, $this->group1);
|
||||
OC_User::setUserId($this->user2);
|
||||
$this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array('test.txt'));
|
||||
OC_User::setUserId($this->user4);
|
||||
$this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array());
|
||||
// // Valid reshare TODO Broken
|
||||
// $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\Share::PERMISSION_READ | OCP\Share::PERMISSION_SHARE));
|
||||
// OC_User::setUserId($this->user4);
|
||||
// $this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array('test1.txt'));
|
||||
//
|
||||
// // Remove user from group
|
||||
// OC_Group::removeFromGroup($this->user2, $this->group1);
|
||||
// OC_User::setUserId($this->user2);
|
||||
// $this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array('test.txt'));
|
||||
// OC_User::setUserId($this->user4);
|
||||
// $this->assertEqual(OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET), array());
|
||||
|
||||
// Add user to group
|
||||
|
||||
|
|
Loading…
Reference in a new issue