Skip to content

Commit

Permalink
Merge pull request #10672 from owncloud/tests-ocm-delete-share
Browse files Browse the repository at this point in the history
[tests-only][full-ci] add tests to remove access of shared resource to federated user
  • Loading branch information
prashant-gurung899 authored Dec 17, 2024
2 parents fe4e66c + 2841217 commit 0832c9b
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 15 deletions.
48 changes: 33 additions & 15 deletions tests/acceptance/bootstrap/SharingNgContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -1738,36 +1738,39 @@ public function userRemovesTheLastLinkShareOfSpaceUsingPermissionsEndpointOfGrap
* @param string $sharer
* @param string $space
* @param bool $shouldExist
* @param bool $federatedShare
*
* @return void
* @throws GuzzleException
* @throws JsonException
* @throws Exception
*/
public function checkIfShareExists(string $share, string $sharee, string $sharer, string $space, bool $shouldExist = true): void {
public function checkIfShareExists(string $share, string $sharee, string $sharer, string $space, bool $shouldExist = true, bool $federatedShare = false): void {
$share = \ltrim($share, "/");
if (\strtolower($space) === "personal") {
$remoteDriveAlias = "personal/" . \strtolower($sharer);
} else {
$remoteDriveAlias = "project/" . \strtolower($space);
}

// check share mountpoint
$response = GraphHelper::getMySpaces(
$this->featureContext->getBaseUrl(),
$sharee,
$this->featureContext->getPasswordForUser($sharee),
"",
$this->featureContext->getStepLineRef()
);
$driveList = HttpRequestHelper::getJsonDecodedResponseBodyContent($response)->value;
$foundShareMountpoint = false;
foreach ($driveList as $drive) {
if ($drive->driveType === "mountpoint" && $drive->name === $share && $drive->root->remoteItem->driveAlias === $remoteDriveAlias) {
$foundShareMountpoint = true;
if (!$federatedShare) {
// check share mountpoint
$response = GraphHelper::getMySpaces(
$this->featureContext->getBaseUrl(),
$sharee,
$this->featureContext->getPasswordForUser($sharee),
"",
$this->featureContext->getStepLineRef()
);
$driveList = HttpRequestHelper::getJsonDecodedResponseBodyContent($response)->value;
$foundShareMountpoint = false;
foreach ($driveList as $drive) {
if ($drive->driveType === "mountpoint" && $drive->name === $share && $drive->root->remoteItem->driveAlias === $remoteDriveAlias) {
$foundShareMountpoint = true;
}
}
Assert::assertSame($shouldExist, $foundShareMountpoint, "Share mountpoint '$share' was not found in the drives list.");
}
Assert::assertSame($shouldExist, $foundShareMountpoint, "Share mountpoint '$share' was not found in the drives list.");

// check share in shared-with-me list
$response = GraphHelper::getSharesSharedWithMe(
Expand Down Expand Up @@ -1808,6 +1811,21 @@ public function userShouldHaveShareSharedByUserFromSpace(string $sharee, string
$this->checkIfShareExists($share, $sharee, $sharer, $space, $shouldOrNot === "should");
}

/**
* @Then /^user "([^"]*)" (should|should not) have a federated share "([^"]*)" shared by user "([^"]*)" from space "([^"]*)"$/
*
* @param string $sharee
* @param string $shouldOrNot
* @param string $share
* @param string $sharer
* @param string $space
*
* @return void
*/
public function userShouldOrShouldNotHaveFederatedShareSharedByUserFromSpace(string $sharee, string $shouldOrNot, string $share, string $sharer, string $space): void {
$this->checkIfShareExists($share, $sharee, $sharer, $space, $shouldOrNot === "should", true);
}

/**
* @Given /^user "([^"]*)" has shared the following (?:files|folders) from space "([^"]*)" with user "([^"]*)" and role "([^"]*)":$/
*
Expand Down
24 changes: 24 additions & 0 deletions tests/acceptance/features/apiOcm/share.feature
Original file line number Diff line number Diff line change
Expand Up @@ -1273,3 +1273,27 @@ Feature: an user shares resources using ScienceMesh application
When user "Brian" lists all available spaces via the Graph API
Then the HTTP status code should be "200"
And the json responded should not contain a space with name "folderToShare"

@issue-10213
Scenario Outline: local user removes access of federated user from a resource
Given using spaces DAV path
And using server "REMOTE"
And "Brian" has created the federation share invitation
And using server "LOCAL"
And "Alice" has accepted invitation
And user "Alice" has created a folder "FOLDER" in space "Personal"
And user "Alice" has sent the following resource share invitation to federated user:
| resource | FOLDER |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | <permissionsRole> |
When user "Alice" removes the access of user "Brian" from resource "FOLDER" of space "Personal" using the Graph API
Then the HTTP status code should be "204"
And using server "REMOTE"
And user "Brian" should not have a federated share "FOLDER" shared by user "Alice" from space "Personal"
Examples:
| permissionsRole |
| Viewer |
| Uploader |
| Editor |

0 comments on commit 0832c9b

Please sign in to comment.