From 3b75b5b722a976aa5c9122c1131cd098f465b323 Mon Sep 17 00:00:00 2001 From: Prajwol Amatya <83579989+PrajwolAmatya@users.noreply.github.com> Date: Wed, 24 Jan 2024 15:45:35 +0545 Subject: [PATCH] added test to reshare resources to other users SharingNg (#8275) --- .../features/apiSharingNg/reshare.feature | 125 ++++++++++++++++++ .../features/bootstrap/SharingNgContext.php | 17 ++- 2 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 tests/acceptance/features/apiSharingNg/reshare.feature diff --git a/tests/acceptance/features/apiSharingNg/reshare.feature b/tests/acceptance/features/apiSharingNg/reshare.feature new file mode 100644 index 000000000..74a2e7412 --- /dev/null +++ b/tests/acceptance/features/apiSharingNg/reshare.feature @@ -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 | | + When user "Brian" sends the following share invitation using the Graph API: + | resourceType | file | + | resource | textfile1.txt | + | space | Shares | + | sharee | Carol | + | shareType | user | + | permissionsRole | | + 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 | | + When user "Brian" sends the following share invitation using the Graph API: + | resourceType | folder | + | resource | FolderToShare | + | space | Shares | + | sharee | Carol | + | shareType | user | + | permissionsRole | | + 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 | | + When user "Brian" sends the following share invitation using the Graph API: + | resourceType | file | + | resource | textfile1.txt | + | space | Shares | + | sharee | Carol | + | shareType | user | + | permissionsRole | | + 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 | | + When user "Brian" sends the following share invitation using the Graph API: + | resourceType | folder | + | resource | FolderToShare | + | space | Shares | + | sharee | Carol | + | shareType | user | + | permissionsRole | | + 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 | diff --git a/tests/acceptance/features/bootstrap/SharingNgContext.php b/tests/acceptance/features/bootstrap/SharingNgContext.php index bb4492301..7e16a7356 100644 --- a/tests/acceptance/features/bootstrap/SharingNgContext.php +++ b/tests/acceptance/features/bootstrap/SharingNgContext.php @@ -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']));