From f1327cc74d49e2ae61445d70ed1e2e37d613368f Mon Sep 17 00:00:00 2001 From: Swikriti Tripathi <41103328+SwikritiT@users.noreply.github.com> Date: Fri, 12 Jan 2024 16:04:10 +0545 Subject: [PATCH] Add tests for remove permissions link share (#8190) Signed-off-by: Swikriti Tripathi --- ...ected-failures-localAPI-on-OCIS-storage.md | 4 + .../apiSharingNg/deletePermissions.feature | 76 ++++++++++++++++++ .../features/bootstrap/SharingNgContext.php | 78 +++++++++++++++---- 3 files changed, 144 insertions(+), 14 deletions(-) diff --git a/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md b/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md index f647f4bb9e..798ad62002 100644 --- a/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md +++ b/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md @@ -270,6 +270,10 @@ The expected failures in this file are from features in the owncloud/ocis repo. - [apiSharingNg/linkShare.feature:447](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L447) - [apiSharingNg/linkShare.feature:448](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L448) - [apiSharingNg/linkShare.feature:449](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L449) +- [apiSharingNg/deletePermissions.feature:146](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L146) +- [apiSharingNg/deletePermissions.feature:163](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L163) +- [apiSharingNg/deletePermissions.feature:184](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L184) +- [apiSharingNg/deletePermissions.feature:203](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L203) ### [sharee (editor role) MOVE a file by file-id into same shared folder returns 403](https://github.com/owncloud/ocis/issues/7617) diff --git a/tests/acceptance/features/apiSharingNg/deletePermissions.feature b/tests/acceptance/features/apiSharingNg/deletePermissions.feature index 9cd1a3c4cf..8319982966 100644 --- a/tests/acceptance/features/apiSharingNg/deletePermissions.feature +++ b/tests/acceptance/features/apiSharingNg/deletePermissions.feature @@ -125,3 +125,79 @@ Feature: Remove access to a drive item | Co Owner | folder | FolderToShare | | Uploader | folder | FolderToShare | | Manager | folder | FolderToShare | + + + Scenario Outline: user removes access to a folder in link share + Given user "Alice" has created folder "FolderToShare" + And user "Alice" has created the following link share: + | resourceType | folder | + | resource | FolderToShare | + | space | Personal | + | permissionsRole | | + | password | %public% | + When user "Alice" removes the share permission of link from folder "FolderToShare" of space "Personal" using the Graph API + Then the HTTP status code should be "204" + Examples: + | role | + | view | + | edit | + | upload | + | createOnly | + | blocksDownload | + + + Scenario Outline: user removes access to a file in link share + Given user "Alice" has uploaded file "filesForUpload/textfile.txt" to "textfile.txt" + And user "Alice" has created the following link share: + | resourceType | file | + | resource | textfile.txt | + | space | Personal | + | permissionsRole | | + | password | %public% | + When user "Alice" removes the share permission of link from file "textfile.txt" of space "Personal" using the Graph API + Then the HTTP status code should be "204" + Examples: + | permissionsRole | + | view | + | edit | + | blocksDownload | + + + Scenario Outline: user removes access to a folder in project space in link share + Given 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 created the following link share: + | resourceType | folder | + | resource | FolderToShare | + | space | NewSpace | + | permissionsRole | | + | password | %public% | + When user "Alice" removes the share permission of link from folder "FolderToShare" of space "NewSpace" using the Graph API + Then the HTTP status code should be "204" + Examples: + | role | + | view | + | edit | + | upload | + | createOnly | + | blocksDownload | + + + Scenario Outline: user removes access to a file in project space in link share + Given 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 "some content" to "textfile.txt" + And user "Alice" has created the following link share: + | resourceType | file | + | resource | textfile.txt | + | space | NewSpace | + | permissionsRole | | + | password | %public% | + When user "Alice" removes the share permission of link from file "textfile.txt" of space "NewSpace" using the Graph API + Then the HTTP status code should be "204" + Examples: + | permissionsRole | + | view | + | edit | + | blocksDownload | diff --git a/tests/acceptance/features/bootstrap/SharingNgContext.php b/tests/acceptance/features/bootstrap/SharingNgContext.php index deec2f47d4..3b9f3295d4 100644 --- a/tests/acceptance/features/bootstrap/SharingNgContext.php +++ b/tests/acceptance/features/bootstrap/SharingNgContext.php @@ -328,6 +328,46 @@ class SharingNgContext implements Context { $this->featureContext->setResponse($response); } + /** + * @param string $sharer + * @param string $shareType (user|group) + * @param string $resourceType + * @param string $resource + * @param string $space + * @param string|null $sharee can be both user or group + * + * @return ResponseInterface + * @throws GuzzleException + * @throws JsonException + */ + public function removeSharePermission( + string $sharer, + string $shareType, + string $resourceType, + string $resource, + string $space, + ?string $sharee = null + ): ResponseInterface { + $spaceId = ($this->spacesContext->getSpaceByName($sharer, $space))["id"]; + $itemId = ($resourceType === 'folder') + ? $this->spacesContext->getResourceId($sharer, $space, $resource) + : $this->spacesContext->getFileId($sharer, $space, $resource); + + $permId = ($shareType === 'link') + ? $this->featureContext->shareNgGetLastCreatedLinkShareID() + : $this->featureContext->shareNgGetLastCreatedUserGroupShareID(); + return + GraphHelper::deleteSharePermission( + $this->featureContext->getBaseUrl(), + $this->featureContext->getStepLineRef(), + $sharer, + $this->featureContext->getPasswordForUser($sharer), + $spaceId, + $itemId, + $permId + ); + } + /** * @When /^user "([^"]*)" removes the share permission of (user|group) "([^"]*)" from (file|folder) "([^"]*)" of space "([^"]*)" using the Graph API$/ * @@ -350,21 +390,31 @@ class SharingNgContext implements Context { string $resource, string $space ): void { - $spaceId = ($this->spacesContext->getSpaceByName($sharer, $space))["id"]; - $itemId = ($resourceType === 'folder') - ? $this->spacesContext->getResourceId($sharer, $space, $resource) - : $this->spacesContext->getFileId($sharer, $space, $resource); - $permId = $this->featureContext->shareNgGetLastCreatedUserGroupShareID(); $this->featureContext->setResponse( - GraphHelper::deleteSharePermission( - $this->featureContext->getBaseUrl(), - $this->featureContext->getStepLineRef(), - $sharer, - $this->featureContext->getPasswordForUser($sharer), - $spaceId, - $itemId, - $permId - ) + $this->removeSharePermission($sharer, $shareType, $resourceType, $resource, $space) + ); + } + + /** + * @When /^user "([^"]*)" removes the share permission of link from (file|folder) "([^"]*)" of space "([^"]*)" using the Graph API$/ + * + * @param string $sharer + * @param string $resourceType + * @param string $resource + * @param string $space + * + * @return void + * @throws JsonException + * @throws GuzzleException + */ + public function userRemovesSharePermissionOfAResourceInLinkShareUsingGraphAPI( + string $sharer, + string $resourceType, + string $resource, + string $space + ):void { + $this->featureContext->setResponse( + $this->removeSharePermission($sharer, 'link', $resourceType, $resource, $space) ); } }