[tests-only] apiTest: list of trash files and restore files from the trash (#3462)
* apiTest: see trashbin and restore files from trash
This commit is contained in:
committed by
Christian Richter
parent
418e32f3d7
commit
6b96183618
@@ -3,126 +3,79 @@ Feature: Remove files, folder
|
||||
As a user
|
||||
I want to be able to remove files, folders
|
||||
Users with the editor role can also remove objects
|
||||
Users with the viewer role cannot remove objects
|
||||
Users with the viewer role cannot remove objects
|
||||
|
||||
Note - this feature is run in CI with ACCOUNTS_HASH_DIFFICULTY set to the default for production
|
||||
See https://github.com/owncloud/ocis/issues/1542 and https://github.com/owncloud/ocis/pull/839
|
||||
|
||||
Background:
|
||||
Given user "Alice" has been created with default attributes and without skeleton files
|
||||
And user "Brian" has been created with default attributes and without skeleton files
|
||||
Given these users have been created with default attributes and without skeleton files:
|
||||
| username |
|
||||
| Alice |
|
||||
| Brian |
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And user "Alice" has created a space "delete objects" with the default quota using the GraphApi
|
||||
And user "Alice" has created a folder "folderForDeleting/sub1/sub2" in space "delete objects"
|
||||
And user "Alice" has uploaded a file inside space "delete objects" with content "some content" to "text.txt"
|
||||
|
||||
# owner of space (admin permissions)
|
||||
|
||||
Scenario: An owner can delete a folder with some subfolders in a Space via the webDav API
|
||||
Given user "Alice" has created a space "Owner deletes folder" of type "project" with quota "10"
|
||||
And user "Alice" has created a folder "folderForDeleting/sub1/sub2" in space "Owner deletes folder"
|
||||
When user "Alice" removes the object "folderForDeleting" from space "Owner deletes folder"
|
||||
Then the HTTP status code should be "204"
|
||||
And for user "Alice" the space "Owner deletes folder" should not contain these entries:
|
||||
Scenario Outline: An user deletes a folder with some subfolders in a Space via the webDav API
|
||||
Given user "Alice" has shared a space "delete objects" to user "Brian" with role "<role>"
|
||||
When user "<user>" removes the folder "folderForDeleting" from space "delete objects"
|
||||
Then the HTTP status code should be "<code>"
|
||||
And for user "<user>" the space "delete objects" <shouldOrNotBeInSpace> contain these entries:
|
||||
| folderForDeleting |
|
||||
And as "<user>" folder "folderForDeleting" <shouldOrNotBeInTrash> exist in the trashbin of the space "delete objects"
|
||||
Examples:
|
||||
| user | role | code | shouldOrNotBeInSpace | shouldOrNotBeInTrash |
|
||||
| Alice | manager | 204 | should not | should |
|
||||
| Brian | manager | 204 | should not | should |
|
||||
| Brian | editor | 204 | should not | should |
|
||||
| Brian | viewer | 403 | should | should not |
|
||||
|
||||
|
||||
Scenario: An owner can delete a subfolder in a Space via the webDav API
|
||||
Given user "Alice" has created a space "Owner deletes subfolder" of type "project" with quota "10"
|
||||
And user "Alice" has created a subfolder "folder/subFolderForDeleting" in space "Owner deletes subfolder"
|
||||
When user "Alice" removes the object "folder/subFolderForDeleting" from space "Owner deletes subfolder"
|
||||
Then the HTTP status code should be "204"
|
||||
And for user "Alice" the space "Owner deletes subfolder" should contain these entries:
|
||||
| folder |
|
||||
And for user "Alice" folder "folder/" of the space "Owner deletes subfolder" should not contain these entries:
|
||||
| subFolderForDeleting |
|
||||
|
||||
|
||||
Scenario: An owner can delete a file in a Space via the webDav API
|
||||
Given user "Alice" has created a space "Owner deletes file" of type "project" with quota "20"
|
||||
And user "Alice" has uploaded a file inside space "Owner deletes file" with content "some content" to "text.txt"
|
||||
When user "Alice" removes the object "text.txt" from space "Owner deletes file"
|
||||
Then the HTTP status code should be "204"
|
||||
And for user "Alice" the space "Owner deletes file" should not contain these entries:
|
||||
| text.txt |
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "Owner deletes file" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Owner deletes file |
|
||||
| quota@@@used | 0 |
|
||||
|
||||
# editor role
|
||||
|
||||
Scenario: An editor can delete a folder with some subfolders in a Space via the webDav API
|
||||
Given user "Alice" has created a space "Editor deletes folder" of type "project" with quota "10"
|
||||
And user "Alice" has created a folder "folderForDeleting/sub1/sub2" in space "Editor deletes folder"
|
||||
And user "Alice" has shared a space "Editor deletes folder" to user "Brian" with role "editor"
|
||||
When user "Brian" removes the object "folderForDeleting" from space "Editor deletes folder"
|
||||
Then the HTTP status code should be "204"
|
||||
And for user "Brian" the space "Editor deletes folder" should not contain these entries:
|
||||
Scenario Outline: An user deletes a subfolder in a Space via the webDav API
|
||||
Given user "Alice" has shared a space "delete objects" to user "Brian" with role "<role>"
|
||||
When user "<user>" removes the folder "folderForDeleting/sub1" from space "delete objects"
|
||||
Then the HTTP status code should be "<code>"
|
||||
And for user "<user>" the space "delete objects" should contain these entries:
|
||||
| folderForDeleting |
|
||||
And for user "<user>" folder "folderForDeleting/" of the space "delete objects" <shouldOrNotBeInSpace> contain these entries:
|
||||
| sub1 |
|
||||
And as "<user>" folder "sub1" <shouldOrNotBeInTrash> exist in the trashbin of the space "delete objects"
|
||||
Examples:
|
||||
| user | role | code | shouldOrNotBeInSpace | shouldOrNotBeInTrash |
|
||||
| Alice | manager | 204 | should not | should |
|
||||
| Brian | manager | 204 | should not | should |
|
||||
| Brian | editor | 204 | should not | should |
|
||||
| Brian | viewer | 403 | should | should not |
|
||||
|
||||
|
||||
Scenario: An editor can delete a subfolder in a Space via the webDav API
|
||||
Given user "Alice" has created a space "Editor deletes subfolder" of type "project" with quota "10"
|
||||
And user "Alice" has created a subfolder "folder/subFolderForDeleting" in space "Editor deletes subfolder"
|
||||
And user "Alice" has shared a space "Editor deletes subfolder" to user "Brian" with role "editor"
|
||||
When user "Brian" removes the object "folder/subFolderForDeleting" from space "Editor deletes subfolder"
|
||||
Then the HTTP status code should be "204"
|
||||
And for user "Brian" the space "Editor deletes subfolder" should contain these entries:
|
||||
| folder |
|
||||
And for user "Brian" folder "folder/" of the space "Editor deletes subfolder" should not contain these entries:
|
||||
| subFolderForDeleting |
|
||||
|
||||
|
||||
Scenario: An editor can delete a file in a Space via the webDav API
|
||||
Given user "Alice" has created a space "Editor deletes file" of type "project" with quota "20"
|
||||
And user "Alice" has uploaded a file inside space "Editor deletes file" with content "some content" to "text.txt"
|
||||
And user "Alice" has shared a space "Editor deletes file" to user "Brian" with role "editor"
|
||||
When user "Brian" removes the object "text.txt" from space "Editor deletes file"
|
||||
Then the HTTP status code should be "204"
|
||||
And for user "Brian" the space "Editor deletes file" should not contain these entries:
|
||||
Scenario Outline: An user deletes a file in a Space via the webDav API
|
||||
Given user "Alice" has shared a space "delete objects" to user "Brian" with role "<role>"
|
||||
When user "<user>" removes the file "text.txt" from space "delete objects"
|
||||
Then the HTTP status code should be "<code>"
|
||||
And for user "<user>" the space "delete objects" <shouldOrNotBeInSpace> contain these entries:
|
||||
| text.txt |
|
||||
When user "Brian" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "Editor deletes file" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Editor deletes file |
|
||||
| quota@@@used | 0 |
|
||||
|
||||
# viewer role
|
||||
|
||||
Scenario: A viewer cannot delete a folder with some subfolders in a Space via the webDav API
|
||||
Given user "Alice" has created a space "Viewer deletes folder" of type "project" with quota "10"
|
||||
And user "Alice" has created a folder "folderForDeleting/sub1/sub2" in space "Viewer deletes folder"
|
||||
And user "Alice" has shared a space "Viewer deletes folder" to user "Brian" with role "viewer"
|
||||
When user "Brian" removes the object "folderForDeleting" from space "Viewer deletes folder"
|
||||
Then the HTTP status code should be "403"
|
||||
And for user "Brian" the space "Viewer deletes folder" should contain these entries:
|
||||
| folderForDeleting |
|
||||
And as "<user>" file "text.txt" <shouldOrNotBeInTrash> exist in the trashbin of the space "delete objects"
|
||||
When user "<user>" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "delete objects" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | delete objects |
|
||||
| quota@@@used | <quotaValue> |
|
||||
Examples:
|
||||
| user | role | code | shouldOrNotBeInSpace | shouldOrNotBeInTrash | quotaValue |
|
||||
| Alice | manager | 204 | should not | should | 0 |
|
||||
| Brian | manager | 204 | should not | should | 0 |
|
||||
| Brian | editor | 204 | should not | should | 0 |
|
||||
| Brian | viewer | 403 | should | should not | 12 |
|
||||
|
||||
|
||||
Scenario: A viewer cannot delete a subfolder in a Space via the webDav API
|
||||
Given user "Alice" has created a space "Viewer deletes subfolder" of type "project" with quota "10"
|
||||
And user "Alice" has created a subfolder "folder/subFolderForDeleting" in space "Viewer deletes subfolder"
|
||||
And user "Alice" has shared a space "Viewer deletes subfolder" to user "Brian" with role "viewer"
|
||||
When user "Brian" removes the object "folder/subFolderForDeleting" from space "Viewer deletes subfolder"
|
||||
Then the HTTP status code should be "403"
|
||||
And for user "Brian" folder "folder/" of the space "Viewer deletes subfolder" should contain these entries:
|
||||
| subFolderForDeleting |
|
||||
|
||||
|
||||
Scenario: A viewer cannot delete a file in a Space via the webDav API
|
||||
Given user "Alice" has created a space "Viewer deletes file" of type "project" with quota "20"
|
||||
And user "Alice" has uploaded a file inside space "Viewer deletes file" with content "some content" to "text.txt"
|
||||
And user "Alice" has shared a space "Viewer deletes file" to user "Brian" with role "viewer"
|
||||
When user "Brian" removes the object "text.txt" from space "Viewer deletes file"
|
||||
Then the HTTP status code should be "403"
|
||||
And for user "Brian" the space "Viewer deletes file" should contain these entries:
|
||||
| text.txt |
|
||||
|
||||
|
||||
Scenario: An user is unable to delete a Space via the webDav API
|
||||
Given user "Alice" has created a space "user deletes a space" of type "project" with quota "20"
|
||||
When user "Alice" removes the object "" from space "user deletes a space"
|
||||
When user "Alice" removes the folder "" from space "user deletes a space"
|
||||
Then the HTTP status code should be "405"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "user deletes a space" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | user deletes a space |
|
||||
| key | value |
|
||||
| name | user deletes a space |
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
@api @skipOnOcV10
|
||||
Feature: Restore files, folder
|
||||
As a user with manager and editor role
|
||||
I want to be able to restore files, folders
|
||||
Users with the viewer role cannot restore objects
|
||||
|
||||
Note - this feature is run in CI with ACCOUNTS_HASH_DIFFICULTY set to the default for production
|
||||
See https://github.com/owncloud/ocis/issues/1542 and https://github.com/owncloud/ocis/pull/839
|
||||
|
||||
Background:
|
||||
Given these users have been created with default attributes and without skeleton files:
|
||||
| username |
|
||||
| Alice |
|
||||
| Brian |
|
||||
| Bob |
|
||||
| Carol |
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And user "Alice" creates a space "restore objects" of type "project" with the default quota using the GraphApi
|
||||
And user "Alice" has created a folder "newFolder" in space "restore objects"
|
||||
And user "Alice" has uploaded a file inside space "restore objects" with content "test" to "newFolder/file.txt"
|
||||
|
||||
|
||||
Scenario Outline: An user with different role can see deleted objects in trash bin of the space via the webDav API
|
||||
Given user "Alice" has shared a space "restore objects" to user "Brian" with role "<role>"
|
||||
And user "Alice" has removed the file "newFolder/file.txt" from space "restore objects"
|
||||
And user "Alice" has removed the folder "newFolder" from space "restore objects"
|
||||
When user "<user>" lists all deleted files in the trash bin of the space "restore objects"
|
||||
Then the HTTP status code should be "207"
|
||||
And as "<user>" folder "newFolder" should exist in the trashbin of the space "restore objects"
|
||||
And as "<user>" file "file.txt" should exist in the trashbin of the space "restore objects"
|
||||
Examples:
|
||||
| user | role |
|
||||
| Brian | manager |
|
||||
| Brian | editor |
|
||||
| Brian | viewer |
|
||||
|
||||
|
||||
Scenario Outline: An user restores a folder with some objects from the trash via the webDav API
|
||||
Given user "Alice" has shared a space "restore objects" to user "Brian" with role "<role>"
|
||||
And user "Alice" has removed the folder "newFolder" from space "restore objects"
|
||||
When user "<user>" restores the folder "newFolder" from the trash of the space "restore objects" to "/newFolder"
|
||||
Then the HTTP status code should be "<code>"
|
||||
And for user "<user>" the space "restore objects" <shouldOrNotBeInSpace> contain these entries:
|
||||
| newFolder |
|
||||
And as "<user>" folder "newFolder" <shouldOrNotBeInTrash> exist in the trashbin of the space "restore objects"
|
||||
Examples:
|
||||
| user | role | code | shouldOrNotBeInSpace | shouldOrNotBeInTrash |
|
||||
| Alice | manager | 201 | should | should not |
|
||||
| Brian | manager | 201 | should | should not |
|
||||
| Brian | editor | 201 | should | should not |
|
||||
| Brian | viewer | 403 | should not | should |
|
||||
|
||||
|
||||
Scenario Outline: An user restores a file from the trash via the webDav API
|
||||
Given user "Alice" has shared a space "restore objects" to user "Brian" with role "<role>"
|
||||
And user "Alice" has removed the file "newFolder/file.txt" from space "restore objects"
|
||||
When user "<user>" restores the file "file.txt" from the trash of the space "restore objects" to "newFolder/file.txt"
|
||||
Then the HTTP status code should be "<code>"
|
||||
And for user "<user>" folder "newFolder" of the space "restore objects" <shouldOrNotBeInSpace> contain these files:
|
||||
| file.txt |
|
||||
And as "<user>" file "file.txt" <shouldOrNotBeInTrash> exist in the trashbin of the space "restore objects"
|
||||
Examples:
|
||||
| user | role | code | shouldOrNotBeInSpace | shouldOrNotBeInTrash |
|
||||
| Alice | manager | 201 | should | should not |
|
||||
| Brian | manager | 201 | should | should not |
|
||||
| Brian | editor | 201 | should | should not |
|
||||
| Brian | viewer | 403 | should not | should |
|
||||
Reference in New Issue
Block a user