Skip to content

Commit

Permalink
added test to share deleted project space
Browse files Browse the repository at this point in the history
  • Loading branch information
PrajwolAmatya committed Jan 31, 2024
1 parent af96aa4 commit 9c7e394
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 20 deletions.
48 changes: 48 additions & 0 deletions tests/acceptance/features/apiSharingNg/shareInvitations.feature
Original file line number Diff line number Diff line change
Expand Up @@ -1711,3 +1711,51 @@ Feature: Send a sharing invitations
| Space Editor |
| Co Owner |
| Manager |


Scenario Outline: send share invitation for deleted project space to 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 "Admin" has disabled a space "NewSpace"
And user "Admin" has deleted a space "NewSpace"
When user "Alice" sends the following share invitation for space using the Graph API:
| space | NewSpace |
| sharee | Brian |
| shareType | user |
| permissionsRole | <permissions-role> |
Then the HTTP status code should be "404"
And the JSON data of the response should match
"""
{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string",
"enum": ["itemNotFound"]
},
"message": {
"type": "string",
"enum": ["stat: error: not found: "]
}
}
}
}
}
"""
Examples:
| permissions-role |
| Space Viewer |
| Space Editor |
| Co Owner |
| Manager |
13 changes: 8 additions & 5 deletions tests/acceptance/features/bootstrap/SharingNgContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,11 @@ public function theUserPermissionsListOfResource(string $user, string $fileOrFol
*/
public function sendShareInvitation(string $user, TableNode $table): ResponseInterface {
$rows = $table->getRowsHash();
$space = $this->spacesContext->getSpaceByName($user, $rows['space']);
if ($rows['space'] === 'Personal' || $rows['space'] === 'Shares') {
$space = $this->spacesContext->getSpaceByName($user, $rows['space']);
} else {
$space = $this->spacesContext->getCreatedSpace($rows['space']);
}
$spaceId = $space['id'];

// for resharing a resource, "item-id" in API endpoint takes shareMountId
Expand All @@ -154,10 +158,9 @@ public function sendShareInvitation(string $user, TableNode $table): ResponseInt
} else {
$resource = $rows['resource'] ?? '';

// for a disabled space, the state of the space is set to trashed
// resource id of disabled space cannot be accessed, but is in format: ($space['id'] . '!' . $space['owner']['user']['id'])
if (isset($space['root']['deleted']['state']) && $space['root']['deleted']['state'] === 'trashed') {
$itemId = $spaceId . '!' . $space['owner']['user']['id'];
// for a disabled and deleted space, resource id is not accessible, so get resource id from the saved response
if ($resource === '' && $rows['space'] !== 'Personal') {
$itemId = $space['fileId'];
} else {
$itemId = $this->spacesContext->getResourceId($user, $rows['space'], $resource);
}
Expand Down
45 changes: 30 additions & 15 deletions tests/acceptance/features/bootstrap/SpacesContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,17 +83,31 @@ public function getSpaceCreator(string $spaceName): string {
if (!\array_key_exists($spaceName, $this->createdSpaces)) {
throw new Exception(__METHOD__ . " space '$spaceName' has not been created in this scenario");
}
return $this->createdSpaces[$spaceName];
return $this->createdSpaces[$spaceName]['spaceCreator'];
}

/**
* @param string $spaceName
* @param string $spaceCreator
* @param ResponseInterface $response
*
* @return void
*/
public function setSpaceCreator(string $spaceName, string $spaceCreator): void {
$this->createdSpaces[$spaceName] = $spaceCreator;
public function addCreatedSpace(string $spaceCreator, ResponseInterface $response): void {
$response = $this->featureContext->getJsonDecodedResponseBodyContent($response);
$spaceName = $response->name;
$this->createdSpaces[$spaceName] = [];
$this->createdSpaces[$spaceName]['id'] = $response->id;
$this->createdSpaces[$spaceName]['spaceCreator'] = $spaceCreator;
$this->createdSpaces[$spaceName]['fileId'] = $response->id . '!' . $response->owner->user->id;
}

/**
* @param string $spaceName
*
* @return array
*/
public function getCreatedSpace(string $spaceName): array {
return $this->createdSpaces[$spaceName];
}

private array $availableSpaces = [];
Expand Down Expand Up @@ -695,16 +709,17 @@ public function theUserCreatesASpaceWithQuotaUsingTheGraphApi(
): void {
$space = ["Name" => $spaceName, "driveType" => $spaceType, "quota" => ["total" => $quota]];
$body = json_encode($space);
$this->featureContext->setResponse(
GraphHelper::createSpace(
$this->featureContext->getBaseUrl(),
$user,
$this->featureContext->getPasswordForUser($user),
$body,
$this->featureContext->getStepLineRef()
)
$response = GraphHelper::createSpace(
$this->featureContext->getBaseUrl(),
$user,
$this->featureContext->getPasswordForUser($user),
$body,
$this->featureContext->getStepLineRef()
);
$this->setSpaceCreator($spaceName, $user);
$this->featureContext->setResponse($response);
if ($response->getStatusCode() === '201') {
$this->addCreatedSpace($user, $response);
}
}

/**
Expand Down Expand Up @@ -1645,7 +1660,7 @@ public function userHasCreatedSpace(
): void {
$space = ["Name" => $spaceName, "driveType" => $spaceType, "quota" => ["total" => $quota]];
$response = $this->createSpace($user, $space);
$this->setSpaceCreator($spaceName, $user);
$this->addCreatedSpace($user, $response);
$this->featureContext->theHTTPStatusCodeShouldBe(
201,
"Expected response status code should be 201 (Created)",
Expand All @@ -1670,7 +1685,7 @@ public function theUserHasCreatedASpaceByDefaultUsingTheGraphApi(
): void {
$space = ["Name" => $spaceName];
$response = $this->createSpace($user, $space);
$this->setSpaceCreator($spaceName, $user);
$this->addCreatedSpace($user, $response);
$this->featureContext->theHTTPStatusCodeShouldBe(
201,
"Expected response status code should be 201 (Created)",
Expand Down

0 comments on commit 9c7e394

Please sign in to comment.