mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-02-19 12:10:32 -06:00
[test-only][full-ci]ApiTests. purge trash bin tests (#6699)
* purge trash bin tests * fix
This commit is contained in:
@@ -139,3 +139,13 @@ Feature: State of the quota
|
||||
When user "Brian" tries to create a space "new space" of type "project" with quota "51" using the Graph API
|
||||
Then the HTTP status code should be "400"
|
||||
And the user "Brian" should not have a space called "new space"
|
||||
|
||||
|
||||
Scenario: user can restore a file version even if there is not enough quota to do so
|
||||
Given user "Admin" has changed the quota of the "Alice Hansen" space to "30"
|
||||
And user "Alice" has uploaded file with content "file is less than 30 bytes" to "/file.txt"
|
||||
And user "Alice" has uploaded file with content "reduceContent" to "/file.txt"
|
||||
And user "Alice" has uploaded file with content "some content" to "newFile.txt"
|
||||
When user "Alice" restores version index "1" of file "/file.txt" using the WebDAV API
|
||||
Then the HTTP status code should be "204"
|
||||
And the content of file "/file.txt" for user "Alice" should be "file is less than 30 bytes"
|
||||
|
||||
@@ -12,8 +12,6 @@ Feature: Restore files, folder
|
||||
| username |
|
||||
| Alice |
|
||||
| Brian |
|
||||
| Bob |
|
||||
| Carol |
|
||||
And 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 "restore objects" with the default quota using the GraphApi
|
||||
@@ -74,11 +72,44 @@ Feature: Restore files, folder
|
||||
| Brian | viewer | 403 | should not | should |
|
||||
|
||||
|
||||
Scenario: user can restore a file even if there is not enough quota to do so
|
||||
Given user "Admin" has changed the quota of the "Brian Murphy" space to "30"
|
||||
And user "Brian" has uploaded file with content "file is less than 30 bytes" to "/file.txt"
|
||||
And user "Brian" has uploaded file with content "reduceContent" to "/file.txt"
|
||||
And user "Brian" has uploaded file with content "some content" to "newFile.txt"
|
||||
When user "Brian" restores version index "1" of file "/file.txt" using the WebDAV API
|
||||
Then the HTTP status code should be "204"
|
||||
And the content of file "/file.txt" for user "Brian" should be "file is less than 30 bytes"
|
||||
Scenario Outline: only space manager can purge the trash via the webDav API
|
||||
Given user "Alice" has shared a space "restore objects" with settings:
|
||||
| shareWith | Brian |
|
||||
| role | <role> |
|
||||
And the administrator has assigned the role "Space Admin" to user "Brian" using the Graph API
|
||||
And user "Alice" has removed the file "newFolder/file.txt" from space "restore objects"
|
||||
When user "Brian" deletes the file "file.txt" from the trash of the space "restore objects"
|
||||
Then the HTTP status code should be "<code>"
|
||||
And as "Brian" file "file.txt" <shouldOrNotBeInTrash> exist in the trashbin of the space "restore objects"
|
||||
Examples:
|
||||
| role | code | shouldOrNotBeInTrash |
|
||||
| manager | 204 | should not |
|
||||
| editor | 403 | should |
|
||||
| viewer | 403 | should |
|
||||
|
||||
|
||||
Scenario Outline: admin user who is not a member of space cannot see its trash bin
|
||||
Given user "Alice" has removed the file "newFolder/file.txt" from space "restore objects"
|
||||
And the administrator has assigned the role "<role>" to user "Brian" using the Graph API
|
||||
When user "Brian" with admin permission lists all deleted files in the trash bin of the space "restore objects"
|
||||
Then the HTTP status code should be "404"
|
||||
Examples:
|
||||
| role |
|
||||
| Space Admin |
|
||||
| Admin |
|
||||
|
||||
|
||||
Scenario Outline: admin user without space-manager role cannot purge the trash
|
||||
Given user "Alice" has shared a space "restore objects" with settings:
|
||||
| shareWith | Brian |
|
||||
| role | editor |
|
||||
And the administrator has assigned the role "<role>" to user "Brian" using the Graph API
|
||||
And user "Alice" has removed the file "newFolder/file.txt" from space "restore objects"
|
||||
When user "Brian" tries to delete the file "file.txt" from the trash of the space "restore objects"
|
||||
Then the HTTP status code should be "403"
|
||||
And as "Alice" file "file.txt" should exist in the trashbin of the space "restore objects"
|
||||
Examples:
|
||||
| role |
|
||||
| Space Admin |
|
||||
| Admin |
|
||||
|
||||
@@ -199,7 +199,7 @@ class SpacesContext implements Context {
|
||||
$this->theUserListsAllHisAvailableSpacesUsingTheGraphApi($user);
|
||||
}
|
||||
$spaces = $this->getAvailableSpaces();
|
||||
Assert::assertIsArray($spaces[$spaceName], "Space with name $spaceName for user $user not found");
|
||||
Assert::assertArrayHasKey($spaceName, $spaces, "Space with name $spaceName for user $user not found");
|
||||
Assert::assertNotEmpty($spaces[$spaceName]["root"]["webDavUrl"], "WebDavUrl for space with name $spaceName for user $user not found");
|
||||
return $spaces[$spaceName];
|
||||
}
|
||||
@@ -2365,6 +2365,26 @@ class SpacesContext implements Context {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^user "([^"]*)" with admin permission lists all deleted files in the trash bin of the space "([^"]*)"$/
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $spaceName
|
||||
*
|
||||
* @return void
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function adminListAllDeletedFilesInTrash(
|
||||
string $user,
|
||||
string $spaceName
|
||||
): void {
|
||||
$space = $this->getSpaceByNameManager($user, $spaceName);
|
||||
$fullUrl = $this->baseUrl . $this->davSpacesUrl . "trash-bin/" . $space["id"];
|
||||
$this->featureContext->setResponse(
|
||||
HttpRequestHelper::sendRequest($fullUrl, '', 'PROPFIND', $user, $this->featureContext->getPasswordForUser($user))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* User get all objects in the trash of project space
|
||||
*
|
||||
@@ -2460,7 +2480,7 @@ class SpacesContext implements Context {
|
||||
}
|
||||
|
||||
if ($pathToDeletedObject === "") {
|
||||
throw new Exception(__METHOD__ . " Object '$object' was not found in the trashbin of user '$user' space '$spaceName'");
|
||||
throw new Exception(__METHOD__ . " Object '$object' was not found in the trashbin of space '$spaceName' by user '$user'");
|
||||
}
|
||||
|
||||
$destination = $this->baseUrl . $this->davSpacesUrl . $space["id"] . $destination;
|
||||
@@ -2480,6 +2500,50 @@ class SpacesContext implements Context {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @When user :user deletes the file/folder :resource from the trash of the space :spaceName
|
||||
* @When user :user tries to delete the file/folder :resource from the trash of the space :spaceName
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $object
|
||||
* @param string $spaceName
|
||||
*
|
||||
* @return void
|
||||
* @throws GuzzleException
|
||||
* @throws Exception
|
||||
*/
|
||||
public function userDeletesObjectsFromTrashRequest(
|
||||
string $user,
|
||||
string $object,
|
||||
string $spaceName
|
||||
): void {
|
||||
// find object in trash
|
||||
$objectsInTrash = $this->getObjectsInTrashbin($user, $spaceName);
|
||||
$pathToDeletedObject = "";
|
||||
foreach ($objectsInTrash as $objectInTrash) {
|
||||
if ($objectInTrash["name"] === $object) {
|
||||
$pathToDeletedObject = $objectInTrash["href"];
|
||||
}
|
||||
}
|
||||
|
||||
if ($pathToDeletedObject === "") {
|
||||
throw new Exception(__METHOD__ . " Object '$object' was not found in the trashbin of space '$spaceName' by user '$user'");
|
||||
}
|
||||
|
||||
$fullUrl = $this->baseUrl . $pathToDeletedObject;
|
||||
$this->featureContext->setResponse(
|
||||
HttpRequestHelper::sendRequest(
|
||||
$fullUrl,
|
||||
"",
|
||||
'DELETE',
|
||||
$user,
|
||||
$this->featureContext->getPasswordForUser($user),
|
||||
[],
|
||||
""
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* User downloads a preview of the file inside the project space
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user