added test to reshare resources to other users SharingNg (#8275)

This commit is contained in:
Prajwol Amatya
2024-01-24 15:45:35 +05:45
committed by GitHub
parent 9b87682f4e
commit 3b75b5b722
2 changed files with 139 additions and 3 deletions
@@ -0,0 +1,125 @@
Feature: Reshare a share invitation
As a user
I want to be able to reshare the share invitations to other users
So that they can have access to it
https://owncloud.dev/libre-graph-api/#/drives.permissions/Invite
Background:
Given these users have been created with default attributes and without skeleton files:
| username |
| Alice |
| Brian |
| Carol |
Scenario Outline: reshare a file to a user with different roles
Given user "Alice" has uploaded file with content "to share" to "/textfile1.txt"
And user "Alice" has sent the following share invitation:
| resourceType | file |
| resource | textfile1.txt |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | <permissions-role> |
When user "Brian" sends the following share invitation using the Graph API:
| resourceType | file |
| resource | textfile1.txt |
| space | Shares |
| sharee | Carol |
| shareType | user |
| permissionsRole | <reshare-permissions-role> |
Then the HTTP status code should be "200"
And for user "Carol" the space Shares should contain these entries:
| textfile1.txt |
Examples:
| permissions-role | reshare-permissions-role |
| Viewer | Viewer |
| File Editor | Viewer |
| File Editor | File Editor |
Scenario Outline: reshare a folder to a user with different roles
Given user "Alice" has created folder "FolderToShare"
And user "Alice" has sent the following share invitation:
| resourceType | folder |
| resource | FolderToShare |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | <permissions-role> |
When user "Brian" sends the following share invitation using the Graph API:
| resourceType | folder |
| resource | FolderToShare |
| space | Shares |
| sharee | Carol |
| shareType | user |
| permissionsRole | <reshare-permissions-role> |
Then the HTTP status code should be "200"
And for user "Carol" the space Shares should contain these entries:
| FolderToShare |
Examples:
| permissions-role | reshare-permissions-role |
| Viewer | Viewer |
| Editor | Viewer |
| Editor | Editor |
| Editor | Uploader |
Scenario Outline: reshare a file inside project space to a user with different roles
Given using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "NewSpace" with the default quota using the Graph API
And user "Alice" has uploaded a file inside space "NewSpace" with content "to share" to "textfile1.txt"
And user "Alice" has sent the following share invitation:
| resourceType | file |
| resource | textfile1.txt |
| space | NewSpace |
| sharee | Brian |
| shareType | user |
| permissionsRole | <permissions-role> |
When user "Brian" sends the following share invitation using the Graph API:
| resourceType | file |
| resource | textfile1.txt |
| space | Shares |
| sharee | Carol |
| shareType | user |
| permissionsRole | <reshare-permissions-role> |
Then the HTTP status code should be "200"
And for user "Carol" the space Shares should contain these entries:
| textfile1.txt |
Examples:
| permissions-role | reshare-permissions-role |
| Viewer | Viewer |
| File Editor | Viewer |
| File Editor | File Editor |
Scenario Outline: reshare a folder inside project space to a user with different roles
Given using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "NewSpace" with the default quota using the Graph API
And user "Alice" has created a folder "FolderToShare" in space "NewSpace"
And user "Alice" has sent the following share invitation:
| resourceType | folder |
| resource | FolderToShare |
| space | NewSpace |
| sharee | Brian |
| shareType | user |
| permissionsRole | <permissions-role> |
When user "Brian" sends the following share invitation using the Graph API:
| resourceType | folder |
| resource | FolderToShare |
| space | Shares |
| sharee | Carol |
| shareType | user |
| permissionsRole | <reshare-permissions-role> |
Then the HTTP status code should be "200"
And for user "Carol" the space Shares should contain these entries:
| FolderToShare |
Examples:
| permissions-role | reshare-permissions-role |
| Viewer | Viewer |
| Editor | Viewer |
| Editor | Editor |
| Editor | Uploader |
@@ -141,9 +141,20 @@ class SharingNgContext implements Context {
$rows = $table->getRowsHash();
$spaceId = ($this->spacesContext->getSpaceByName($user, $rows['space']))["id"];
$itemId = ($rows['resourceType'] === 'folder')
? $this->spacesContext->getResourceId($user, $rows['space'], $rows['resource'])
: $this->spacesContext->getFileId($user, $rows['space'], $rows['resource']);
// for resharing a resource, "item-id" in API endpoint takes shareMountId
if ($rows['space'] === 'Shares') {
$itemId = GraphHelper::getShareMountId(
$this->featureContext->getBaseUrl(),
$this->featureContext->getStepLineRef(),
$user,
$this->featureContext->getPasswordForUser($user),
$rows['resource']
);
} else {
$itemId = ($rows['resourceType'] === 'folder')
? $this->spacesContext->getResourceId($user, $rows['space'], $rows['resource'])
: $this->spacesContext->getFileId($user, $rows['space'], $rows['resource']);
}
$sharees = array_map('trim', explode(',', $rows['sharee']));
$shareTypes = array_map('trim', explode(',', $rows['shareType']));