mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-06 19:40:42 -05:00
ApiTests. refactoring apiSpace suite (#4121)
This commit is contained in:
@@ -1,139 +1,198 @@
|
||||
@api @skipOnOcV10
|
||||
Feature: Change data of space
|
||||
As a user with admin rights
|
||||
As a user with space admin rights
|
||||
I want to be able to change the data of a created space (increase the quota, change name, etc.)
|
||||
|
||||
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 the administrator has given "Alice" the role "Admin" using the settings api
|
||||
|
||||
Scenario: An admin user can change the name and description of a Space via the Graph API
|
||||
Given user "Alice" has created a space "Project Jupiter" of type "project" with quota "20"
|
||||
When user "Alice" changes the name of the "Project Jupiter" space to "Project Death Star"
|
||||
And user "Alice" changes the description of the "Project Death Star" space to "The Death Star is a fictional mobile space station"
|
||||
Then the HTTP status code should be "200"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "Project Death Star" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| name | Project Death Star |
|
||||
| description | The Death Star is a fictional mobile space station |
|
||||
| quota@@@total | 20 |
|
||||
| root@@@webDavUrl | %base_url%/dav/spaces/%space_id% |
|
||||
|
||||
Scenario: An admin user can increase the quota of a Space via the Graph API
|
||||
Given user "Alice" has created a space "Project Earth" of type "project" with quota "20"
|
||||
When user "Alice" changes the quota of the "Project Earth" space to "100"
|
||||
Then the HTTP status code should be "200"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "Project Earth" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Earth |
|
||||
| quota@@@total | 100 |
|
||||
Given these users have been created with default attributes and without skeleton files:
|
||||
| username |
|
||||
| Alice |
|
||||
| Brian |
|
||||
| Bob |
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "Project Jupiter" of type "project" with quota "20"
|
||||
And user "Alice" has shared a space "Project Jupiter" to user "Brian" with role "editor"
|
||||
And user "Alice" has shared a space "Project Jupiter" to user "Bob" with role "viewer"
|
||||
|
||||
|
||||
Scenario: An user set readme file as description of the space via the Graph API
|
||||
Given user "Alice" has created a space "add special section" with the default quota using the GraphApi
|
||||
And user "Alice" has created a folder ".space" in space "add special section"
|
||||
And user "Alice" has uploaded a file inside space "add special section" with content "space description" to ".space/readme.md"
|
||||
When user "Alice" sets the file ".space/readme.md" as a description in a special section of the "add special section" space
|
||||
Then the HTTP status code should be "200"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "add special section" owned by "Alice" with description file ".space/readme.md" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | add special section |
|
||||
| special@@@0@@@size | 17 |
|
||||
| special@@@0@@@name | readme.md |
|
||||
| special@@@0@@@specialFolder@@@name | readme |
|
||||
| special@@@0@@@file@@@mimeType | text/markdown |
|
||||
| special@@@0@@@id | %file_id% |
|
||||
| special@@@0@@@eTag | %eTag% |
|
||||
And for user "Alice" folder ".space/" of the space "add special section" should contain these entries:
|
||||
| readme.md |
|
||||
And for user "Alice" the content of the file ".space/readme.md" of the space "add special section" should be "space description"
|
||||
|
||||
|
||||
Scenario Outline: An user set image file as space image of the space via the Graph API
|
||||
Given user "Alice" has created a space "add special section" with the default quota using the GraphApi
|
||||
And user "Alice" has created a folder ".space" in space "add special section"
|
||||
And user "Alice" has uploaded a file inside space "add special section" with content "" to ".space/<fileName>"
|
||||
When user "Alice" sets the file ".space/<fileName>" as a space image in a special section of the "add special section" space
|
||||
Then the HTTP status code should be "200"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "add special section" owned by "Alice" with description file ".space/<fileName>" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | add special section |
|
||||
| special@@@0@@@size | 0 |
|
||||
| special@@@0@@@name | <nameInResponse> |
|
||||
| special@@@0@@@specialFolder@@@name | image |
|
||||
| special@@@0@@@file@@@mimeType | <mimeType> |
|
||||
| special@@@0@@@id | %file_id% |
|
||||
| special@@@0@@@eTag | %eTag% |
|
||||
And for user "Alice" folder ".space/" of the space "add special section" should contain these entries:
|
||||
| <fileName> |
|
||||
Scenario Outline: Only space admin user can change the name of a Space via the Graph API
|
||||
When user "<user>" changes the name of the "Project Jupiter" space to "Project Death Star"
|
||||
Then the HTTP status code should be "<code>"
|
||||
And the user "<user>" should have a space called "<expectedName>" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| name | <expectedName> |
|
||||
Examples:
|
||||
| fileName | nameInResponse | mimeType |
|
||||
| spaceImage.jpeg | spaceImage.jpeg | image/jpeg |
|
||||
| spaceImage.png | spaceImage.png | image/png |
|
||||
| spaceImage.gif | spaceImage.gif | image/gif |
|
||||
| user | code | expectedName |
|
||||
| Alice | 200 | Project Death Star |
|
||||
| Brian | 403 | Project Jupiter |
|
||||
| Bob | 403 | Project Jupiter |
|
||||
|
||||
|
||||
Scenario: An user set new readme file as description of the space via the Graph API
|
||||
Given user "Alice" has created a space "add special section" with the default quota using the GraphApi
|
||||
And user "Alice" has created a folder ".space" in space "add special section"
|
||||
And user "Alice" has uploaded a file inside space "add special section" with content "space description" to ".space/readme.md"
|
||||
And user "Alice" has set the file ".space/readme.md" as a description in a special section of the "add special section" space
|
||||
When user "Alice" has uploaded a file inside space "add special section" with content "new space description" to ".space/newReadme.md"
|
||||
And user "Alice" sets the file ".space/newReadme.md" as a description in a special section of the "add special section" space
|
||||
Scenario: Only space admin user can change the description(subtitle) of a Space via the Graph API
|
||||
When user "Alice" changes the description of the "Project Jupiter" space to "The Death Star is a fictional mobile space station"
|
||||
Then the HTTP status code should be "200"
|
||||
And for user "Alice" the content of the file ".space/newReadme.md" of the space "add special section" should be "new space description"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "add special section" owned by "Alice" with description file ".space/newReadme.md" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | add special section |
|
||||
| special@@@0@@@size | 21 |
|
||||
| special@@@0@@@name | newReadme.md |
|
||||
| special@@@0@@@specialFolder@@@name | readme |
|
||||
| special@@@0@@@file@@@mimeType | text/markdown |
|
||||
| special@@@0@@@id | %file_id% |
|
||||
| special@@@0@@@eTag | %eTag% |
|
||||
And the user "Alice" should have a space called "Project Jupiter" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| name | Project Jupiter |
|
||||
| description | The Death Star is a fictional mobile space station |
|
||||
|
||||
|
||||
Scenario: An user set new image file as space image of the space via the Graph API
|
||||
Given user "Alice" has created a space "add special section" with the default quota using the GraphApi
|
||||
And user "Alice" has created a folder ".space" in space "add special section"
|
||||
And user "Alice" has uploaded a file inside space "add special section" with content "" to ".space/spaceImage.jpeg"
|
||||
And user "Alice" has set the file ".space/spaceImage.jpeg" as a space image in a special section of the "add special section" space
|
||||
When user "Alice" has uploaded a file inside space "add special section" with content "" to ".space/newSpaceImage.png"
|
||||
And user "Alice" sets the file ".space/newSpaceImage.png" as a space image in a special section of the "add special section" space
|
||||
Scenario Outline: Viewer and editor cannot change the description(subtitle) of a Space via the Graph API
|
||||
When user "<user>" changes the description of the "Project Jupiter" space to "The Death Star is a fictional mobile space station"
|
||||
Then the HTTP status code should be "<code>"
|
||||
Examples:
|
||||
| user | code |
|
||||
| Brian | 403 |
|
||||
| Bob | 403 |
|
||||
|
||||
|
||||
Scenario Outline: An user tries to increase the quota of a Space via the Graph API
|
||||
When user "<user>" changes the quota of the "Project Jupiter" space to "100"
|
||||
Then the HTTP status code should be "<code>"
|
||||
And the user "<user>" should have a space called "Project Jupiter" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Jupiter |
|
||||
| quota@@@total | <expectedQuataValue> |
|
||||
Examples:
|
||||
| user | code | expectedQuataValue |
|
||||
| Alice | 200 | 100 |
|
||||
| Brian | 401 | 20 |
|
||||
| Bob | 401 | 20 |
|
||||
|
||||
|
||||
Scenario Outline: An space admin user set no restriction quota of a Space via the Graph API
|
||||
When user "Alice" changes the quota of the "Project Jupiter" space to "<quotaValue>"
|
||||
Then the HTTP status code should be "200"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "add special section" owned by "Alice" with description file ".space/newSpaceImage.png" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | add special section |
|
||||
| special@@@0@@@size | 0 |
|
||||
| special@@@0@@@name | newSpaceImage.png |
|
||||
| special@@@0@@@specialFolder@@@name | image |
|
||||
| special@@@0@@@file@@@mimeType | image/png |
|
||||
| special@@@0@@@id | %file_id% |
|
||||
| special@@@0@@@eTag | %eTag% |
|
||||
|
||||
|
||||
Scenario Outline: An admin user set no restriction quota of a Space via the Graph API
|
||||
Given user "Alice" has created a space "Project Earth" of type "project" with quota "20"
|
||||
When user "Alice" changes the quota of the "Project Earth" space to "<quotaValue>"
|
||||
Then the HTTP status code should be "200"
|
||||
When user "Alice" uploads a file inside space "Project Earth" with content "some content" to "file.txt" using the WebDAV API
|
||||
When user "Alice" uploads a file inside space "Project Jupiter" with content "some content" to "file.txt" using the WebDAV API
|
||||
Then the HTTP status code should be "201"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "Project Earth" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Earth |
|
||||
| quota@@@used | 12 |
|
||||
And the user "Alice" should have a space called "Project Jupiter" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Jupiter |
|
||||
| quota@@@used | 12 |
|
||||
Examples:
|
||||
| quotaValue |
|
||||
| 0 |
|
||||
| -1 |
|
||||
|
||||
|
||||
Scenario: An user space admin set readme file as description of the space via the Graph API
|
||||
Given user "Alice" has created a folder ".space" in space "Project Jupiter"
|
||||
And user "Alice" has uploaded a file inside space "Project Jupiter" with content "space description" to ".space/readme.md"
|
||||
When user "Alice" sets the file ".space/readme.md" as a description in a special section of the "Project Jupiter" space
|
||||
Then the HTTP status code should be "200"
|
||||
And the user "Alice" should have a space called "Project Jupiter" owned by "Alice" with description file ".space/readme.md" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Jupiter |
|
||||
| special@@@0@@@size | 17 |
|
||||
| special@@@0@@@name | readme.md |
|
||||
| special@@@0@@@specialFolder@@@name | readme |
|
||||
| special@@@0@@@file@@@mimeType | text/markdown |
|
||||
| special@@@0@@@id | %file_id% |
|
||||
| special@@@0@@@eTag | %eTag% |
|
||||
And for user "Alice" folder ".space/" of the space "Project Jupiter" should contain these entries:
|
||||
| readme.md |
|
||||
And for user "Alice" the content of the file ".space/readme.md" of the space "Project Jupiter" should be "space description"
|
||||
|
||||
|
||||
Scenario Outline: An user member of the space changes readme file
|
||||
Given user "Alice" has created a folder ".space" in space "Project Jupiter"
|
||||
And user "Alice" has uploaded a file inside space "Project Jupiter" with content "space description" to ".space/readme.md"
|
||||
And user "Alice" has set the file ".space/readme.md" as a description in a special section of the "Project Jupiter" space
|
||||
When user "<user>" uploads a file inside space "Project Jupiter" with content "new description" to ".space/readme.md" using the WebDAV API
|
||||
Then the HTTP status code should be "<code>"
|
||||
And the user "<user>" should have a space called "Project Jupiter" owned by "Alice" with description file ".space/readme.md" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Jupiter |
|
||||
| special@@@0@@@size | <size> |
|
||||
| special@@@0@@@name | readme.md |
|
||||
| special@@@0@@@specialFolder@@@name | readme |
|
||||
| special@@@0@@@file@@@mimeType | text/markdown |
|
||||
| special@@@0@@@id | %file_id% |
|
||||
| special@@@0@@@eTag | %eTag% |
|
||||
And for user "<user>" folder ".space/" of the space "Project Jupiter" should contain these entries:
|
||||
| readme.md |
|
||||
And for user "<user>" the content of the file ".space/readme.md" of the space "Project Jupiter" should be "<content>"
|
||||
Examples:
|
||||
| user | code | size | content |
|
||||
| Brian | 204 | 15 | new description |
|
||||
| Bob | 403 | 17 | space description |
|
||||
|
||||
|
||||
Scenario Outline: An user space admin and editor set image file as space image of the space via the Graph API
|
||||
Given user "Alice" has created a folder ".space" in space "Project Jupiter"
|
||||
And user "<user>" has uploaded a file inside space "Project Jupiter" with content "" to ".space/<fileName>"
|
||||
When user "<user>" sets the file ".space/<fileName>" as a space image in a special section of the "Project Jupiter" space
|
||||
Then the HTTP status code should be "200"
|
||||
And the user "Alice" should have a space called "Project Jupiter" owned by "Alice" with description file ".space/<fileName>" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Jupiter |
|
||||
| special@@@0@@@size | 0 |
|
||||
| special@@@0@@@name | <nameInResponse> |
|
||||
| special@@@0@@@specialFolder@@@name | image |
|
||||
| special@@@0@@@file@@@mimeType | <mimeType> |
|
||||
| special@@@0@@@id | %file_id% |
|
||||
| special@@@0@@@eTag | %eTag% |
|
||||
And for user "<user>" folder ".space/" of the space "Project Jupiter" should contain these entries:
|
||||
| <fileName> |
|
||||
Examples:
|
||||
| user | fileName | nameInResponse | mimeType |
|
||||
| Alice | spaceImage.jpeg | spaceImage.jpeg | image/jpeg |
|
||||
| Brian | spaceImage.png | spaceImage.png | image/png |
|
||||
| Alice | spaceImage.gif | spaceImage.gif | image/gif |
|
||||
|
||||
|
||||
Scenario: An user viewer cannot set image file as space image of the space via the Graph API
|
||||
Given user "Alice" has created a folder ".space" in space "Project Jupiter"
|
||||
And user "Alice" has uploaded a file inside space "Project Jupiter" with content "" to ".space/someImageFile.jpg"
|
||||
When user "Bob" sets the file ".space/someImageFile.jpg" as a space image in a special section of the "Project Jupiter" space
|
||||
Then the HTTP status code should be "403"
|
||||
|
||||
|
||||
Scenario Outline: An user set new readme file as description of the space via the Graph API
|
||||
Given user "Alice" has created a folder ".space" in space "Project Jupiter"
|
||||
And user "Alice" has uploaded a file inside space "Project Jupiter" with content "space description" to ".space/readme.md"
|
||||
And user "Alice" has set the file ".space/readme.md" as a description in a special section of the "Project Jupiter" space
|
||||
When user "<user>" uploads a file inside space "Project Jupiter" owned by the user "Alice" with content "new content" to ".space/readme.md" using the WebDAV API
|
||||
Then the HTTP status code should be "<code>"
|
||||
And for user "<user>" the content of the file ".space/readme.md" of the space "Project Jupiter" should be "<expectedContent>"
|
||||
And the user "<user>" should have a space called "Project Jupiter" owned by "Alice" with description file ".space/readme.md" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Jupiter |
|
||||
| special@@@0@@@size | <expectedSize> |
|
||||
| special@@@0@@@name | readme.md |
|
||||
| special@@@0@@@specialFolder@@@name | readme |
|
||||
| special@@@0@@@file@@@mimeType | text/markdown |
|
||||
| special@@@0@@@id | %file_id% |
|
||||
| special@@@0@@@eTag | %eTag% |
|
||||
Examples:
|
||||
| user | code | expectedSize | expectedContent |
|
||||
| Alice | 204 | 11 | new content |
|
||||
| Brian | 204 | 11 | new content |
|
||||
| Bob | 403 | 17 | space description |
|
||||
|
||||
|
||||
Scenario Outline: An user set new image file as space image of the space via the Graph API
|
||||
Given user "Alice" has created a folder ".space" in space "Project Jupiter"
|
||||
And user "Alice" has uploaded a file inside space "Project Jupiter" with content "" to ".space/spaceImage.jpeg"
|
||||
And user "Alice" has set the file ".space/spaceImage.jpeg" as a space image in a special section of the "Project Jupiter" space
|
||||
When user "<user>" has uploaded a file inside space "Project Jupiter" with content "" to ".space/newSpaceImage.png"
|
||||
And user "<user>" sets the file ".space/newSpaceImage.png" as a space image in a special section of the "Project Jupiter" space
|
||||
Then the HTTP status code should be "200"
|
||||
And the user "<user>" should have a space called "Project Jupiter" owned by "Alice" with space image ".space/newSpaceImage.png" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Jupiter |
|
||||
| special@@@0@@@size | 0 |
|
||||
| special@@@0@@@name | newSpaceImage.png |
|
||||
| special@@@0@@@specialFolder@@@name | image |
|
||||
| special@@@0@@@file@@@mimeType | image/png |
|
||||
| special@@@0@@@id | %file_id% |
|
||||
| special@@@0@@@eTag | %eTag% |
|
||||
Examples:
|
||||
| user |
|
||||
| Alice |
|
||||
| Brian |
|
||||
@@ -2,7 +2,7 @@
|
||||
Feature: Disabling and deleting space
|
||||
As a manager of space
|
||||
I want to be able to disable the space first, then delete it.
|
||||
I want to make sure that a disabled spaces isn't accessible by shared users.
|
||||
I want to make sure that a disabled spaces isn't accessible by shared users.
|
||||
|
||||
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
|
||||
@@ -13,80 +13,58 @@ Feature: Disabling and deleting space
|
||||
| Alice |
|
||||
| Brian |
|
||||
| Bob |
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "Project Moon" with the default quota using the GraphApi
|
||||
And user "Alice" has shared a space "Project Moon" to user "Brian" with role "editor"
|
||||
And user "Alice" has shared a space "Project Moon" to user "Bob" with role "viewer"
|
||||
|
||||
|
||||
Scenario: An owner can disable a Space via the Graph API
|
||||
Given user "Alice" has created a space "disable a space" of type "project" with quota "10"
|
||||
And user "Alice" has shared a space "disable a space" to user "Brian" with role "editor"
|
||||
When user "Alice" disables a space "disable a space"
|
||||
Scenario Outline: A space admin user can disable a Space via the Graph API
|
||||
When user "Alice" disables a space "Project Moon"
|
||||
Then the HTTP status code should be "204"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "disable a space" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | disable a space |
|
||||
| root@@@deleted@@@state | trashed |
|
||||
|
||||
|
||||
Scenario: Participants without a manager role cannot see the disabled space
|
||||
Given user "Alice" has created a space "cannot see space" of type "project" with quota "10"
|
||||
And user "Alice" has shared a space "cannot see space" to user "Brian" with role "editor"
|
||||
And user "Alice" has shared a space "cannot see space" to user "Bob" with role "viewer"
|
||||
And user "Alice" has disabled a space "cannot see space"
|
||||
When user "Brian" lists all available spaces via the GraphApi
|
||||
Then the json responded should not contain a space with name "cannot see space"
|
||||
When user "Bob" lists all available spaces via the GraphApi
|
||||
Then the json responded should not contain a space with name "cannot see space"
|
||||
And the user "Alice" should have a space called "Project Moon" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Moon |
|
||||
| root@@@deleted@@@state | trashed |
|
||||
And the user "<user>" should not have a space called "Project Moon"
|
||||
Examples:
|
||||
| user |
|
||||
| Brian |
|
||||
| Bob |
|
||||
|
||||
|
||||
Scenario: An owner can delete a disabled Space via the webDav API
|
||||
Given user "Alice" has created a space "delete a space" of type "project" with quota "10"
|
||||
And user "Alice" has disabled a space "delete a space"
|
||||
When user "Alice" deletes a space "delete a space"
|
||||
Scenario Outline: An user without space admin role cannot disable a Space via the Graph API
|
||||
When user "<user>" disables a space "Project Moon"
|
||||
Then the HTTP status code should be "403"
|
||||
And the user "<user>" should have a space called "Project Moon" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Moon |
|
||||
Examples:
|
||||
| user |
|
||||
| Brian |
|
||||
| Bob |
|
||||
|
||||
|
||||
Scenario: A space manager can delete a disabled Space via the webDav API
|
||||
Given user "Alice" has disabled a space "Project Moon"
|
||||
When user "Alice" deletes a space "Project Moon"
|
||||
Then the HTTP status code should be "204"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should not contain a space with name "delete a space"
|
||||
|
||||
And the user "Alice" should not have a space called "Project Moon"
|
||||
|
||||
Scenario: An owner can disable and delete Space in which files and folders exist via the webDav API
|
||||
Given user "Alice" has created a space "delete a space with content" of type "project" with quota "10"
|
||||
And user "Alice" has uploaded a file inside space "delete a space with content" with content "test" to "test.txt"
|
||||
And user "Alice" has created a folder "MainFolder" in space "delete a space with content"
|
||||
When user "Alice" disables a space "delete a space with content"
|
||||
|
||||
Scenario: An space manager can disable and delete Space in which files and folders exist via the webDav API
|
||||
Given user "Alice" has uploaded a file inside space "Project Moon" with content "test" to "test.txt"
|
||||
And user "Alice" has created a folder "MainFolder" in space "Project Moon"
|
||||
When user "Alice" disables a space "Project Moon"
|
||||
Then the HTTP status code should be "204"
|
||||
When user "Alice" deletes a space "delete a space with content"
|
||||
When user "Alice" deletes a space "Project Moon"
|
||||
Then the HTTP status code should be "204"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should not contain a space with name "delete a space with content"
|
||||
And the user "Alice" should not have a space called "Project Moon"
|
||||
|
||||
|
||||
Scenario: An owner cannot delete a space via the webDav API without first disabling it
|
||||
Given user "Alice" has created a space "delete without disabling" of type "project" with quota "10"
|
||||
When user "Alice" deletes a space "delete without disabling"
|
||||
Scenario: An space manager cannot delete a space via the webDav API without first disabling it
|
||||
When user "Alice" deletes a space "Project Moon"
|
||||
Then the HTTP status code should be "400"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "delete without disabling" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | delete without disabling |
|
||||
|
||||
|
||||
Scenario: An user with editor role cannot disable a Space via the Graph API
|
||||
Given user "Alice" has created a space "editor tries to disable a space" of type "project" with quota "10"
|
||||
And user "Alice" has shared a space "editor tries to disable a space" to user "Brian" with role "editor"
|
||||
When user "Brian" disables a space "editor tries to disable a space"
|
||||
Then the HTTP status code should be "403"
|
||||
When user "Brian" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "editor tries to disable a space" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | editor tries to disable a space |
|
||||
|
||||
|
||||
Scenario: An user with viewer role cannot disable a Space via the Graph API
|
||||
Given user "Alice" has created a space "viewer tries to disable a space" of type "project" with quota "10"
|
||||
And user "Alice" has shared a space "viewer tries to disable a space" to user "Brian" with role "viewer"
|
||||
When user "Brian" disables a space "viewer tries to disable a space"
|
||||
Then the HTTP status code should be "403"
|
||||
When user "Brian" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "viewer tries to disable a space" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | viewer tries to disable a space |
|
||||
And the user "Alice" should have a space called "Project Moon" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Moon |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@api @skipOnOcV10
|
||||
Feature: Download file in project space
|
||||
As a user, I want to be able to download files
|
||||
As a user with different role, I want to be able to download files
|
||||
|
||||
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
|
||||
@@ -10,29 +10,42 @@ Feature: Download file in project space
|
||||
| username |
|
||||
| Alice |
|
||||
| Brian |
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
| Bob |
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "download file" with the default quota using the GraphApi
|
||||
And user "Alice" has uploaded a file inside space "download file" with content "some content" to "file.txt"
|
||||
And user "Alice" has shared a space "download file" to user "Brian" with role "editor"
|
||||
And user "Alice" has shared a space "download file" to user "Bob" with role "viewer"
|
||||
|
||||
|
||||
Scenario: An user downloads a file in the project space
|
||||
When user "Alice" downloads the file "file.txt" of the space "download file" using the WebDAV API
|
||||
Scenario Outline: An user downloads a file in the project space
|
||||
When user "<user>" downloads the file "file.txt" of the space "download file" using the WebDAV API
|
||||
Then the HTTP status code should be "200"
|
||||
And the following headers should be set
|
||||
| header | value |
|
||||
| Content-Length | 12 |
|
||||
Examples:
|
||||
| user |
|
||||
| Alice |
|
||||
| Brian |
|
||||
| Bob |
|
||||
|
||||
|
||||
Scenario: An user downloads an old version of the file in the project space
|
||||
Scenario Outline: An user downloads an old version of the file in the project space
|
||||
Given user "Alice" has uploaded a file inside space "download file" with content "new content" to "file.txt"
|
||||
And user "Alice" has uploaded a file inside space "download file" with content "newest content" to "file.txt"
|
||||
When user "Alice" downloads version of the file "file.txt" with the index "1" of the space "download file" using the WebDAV API
|
||||
When user "<user>" downloads version of the file "file.txt" with the index "1" of the space "download file" using the WebDAV API
|
||||
Then the HTTP status code should be "200"
|
||||
And the following headers should be set
|
||||
| header | value |
|
||||
| Content-Length | 11 |
|
||||
When user "Alice" downloads version of the file "file.txt" with the index "2" of the space "download file" using the WebDAV API
|
||||
When user "<user>" downloads version of the file "file.txt" with the index "2" of the space "download file" using the WebDAV API
|
||||
Then the HTTP status code should be "200"
|
||||
And the following headers should be set
|
||||
| header | value |
|
||||
| Content-Length | 12 |
|
||||
Examples:
|
||||
| user |
|
||||
| Alice |
|
||||
| Brian |
|
||||
| Bob |
|
||||
|
||||
@@ -9,8 +9,7 @@ Feature: Preview file in project space
|
||||
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 the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "previews of the files" with the default quota using the GraphApi
|
||||
|
||||
|
||||
|
||||
@@ -9,46 +9,67 @@ Feature: List and create spaces
|
||||
Background:
|
||||
Given user "Alice" has been created with default attributes and without skeleton files
|
||||
|
||||
|
||||
Scenario: An ordinary user can request information about their Space via the Graph API
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the HTTP status code should be "200"
|
||||
And the json responded should contain a space "Alice Hansen" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | personal |
|
||||
| driveAlias | personal/alice |
|
||||
| id | %space_id% |
|
||||
| name | Alice Hansen |
|
||||
| quota@@@state | normal |
|
||||
| key | value |
|
||||
| driveType | personal |
|
||||
| driveAlias | personal/alice |
|
||||
| id | %space_id% |
|
||||
| name | Alice Hansen |
|
||||
| quota@@@state | normal |
|
||||
| root@@@webDavUrl | %base_url%/dav/spaces/%space_id% |
|
||||
|
||||
|
||||
Scenario: An ordinary user can request information about their Space via the Graph API using a filter
|
||||
Given user "Brian" has been created with default attributes and without skeleton files
|
||||
And user "Brian" has created folder "folder"
|
||||
And user "Brian" has shared folder "folder" with user "Alice" with permissions "31"
|
||||
And user "Alice" has accepted share "/folder" offered by user "Brian"
|
||||
Then the user "Alice" should have a space called "Shares Jail" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | virtual |
|
||||
| id | %space_id% |
|
||||
| name | Shares Jail |
|
||||
When user "Alice" lists all available spaces via the GraphApi with query "$filter=driveType eq 'personal'"
|
||||
Then the HTTP status code should be "200"
|
||||
And the json responded should contain a space "Alice Hansen" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | personal |
|
||||
| id | %space_id% |
|
||||
| name | Alice Hansen |
|
||||
| quota@@@state | normal |
|
||||
| key | value |
|
||||
| driveType | personal |
|
||||
| id | %space_id% |
|
||||
| name | Alice Hansen |
|
||||
| quota@@@state | normal |
|
||||
| root@@@webDavUrl | %base_url%/dav/spaces/%space_id% |
|
||||
And the json responded should not contain a space with name "Shares Jail"
|
||||
And the json responded should only contain spaces of type "personal"
|
||||
|
||||
|
||||
Scenario: An ordinary user will not see any space when using a filter for project
|
||||
Given the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "my project" of type "project" with quota "20"
|
||||
When user "Alice" lists all available spaces via the GraphApi with query "$filter=driveType eq 'project'"
|
||||
Then the HTTP status code should be "200"
|
||||
And the json responded should contain a space "my project" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| id | %space_id% |
|
||||
| name | my project |
|
||||
And the json responded should not contain a space with name "Alice Hansen"
|
||||
And the json responded should not contain spaces of type "personal"
|
||||
|
||||
|
||||
Scenario: An ordinary user can access their Space via the webDav API
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
And user "Alice" lists the content of the space with the name "Alice Hansen" using the WebDav Api
|
||||
Then the HTTP status code should be "207"
|
||||
|
||||
|
||||
Scenario: An ordinary user cannot create a Space via Graph API
|
||||
When user "Alice" creates a space "Project Mars" of type "project" with the default quota using the GraphApi
|
||||
Then the HTTP status code should be "401"
|
||||
|
||||
|
||||
Scenario: An admin user can create a Space via the Graph API with default quota
|
||||
Given the administrator has given "Alice" the role "Admin" using the settings api
|
||||
When user "Alice" creates a space "Project Mars" of type "project" with the default quota using the GraphApi
|
||||
@@ -61,6 +82,7 @@ Feature: List and create spaces
|
||||
| quota@@@total | 1000000000 |
|
||||
| root@@@webDavUrl | %base_url%/dav/spaces/%space_id% |
|
||||
|
||||
|
||||
Scenario: An admin user can create a Space via the Graph API with certain quota
|
||||
Given the administrator has given "Alice" the role "Admin" using the settings api
|
||||
When user "Alice" creates a space "Project Venus" of type "project" with quota "2000" using the GraphApi
|
||||
@@ -72,6 +94,7 @@ Feature: List and create spaces
|
||||
| quota@@@total | 2000 |
|
||||
| root@@@webDavUrl | %base_url%/dav/spaces/%space_id% |
|
||||
|
||||
|
||||
Scenario: A user can list his personal space via multiple endpoints
|
||||
When user "Alice" lists all available spaces via the GraphApi with query "$filter=driveType eq 'personal'"
|
||||
Then the json responded should contain a space "Alice Hansen" owned by "Alice" with these key and value pairs:
|
||||
@@ -87,6 +110,7 @@ Feature: List and create spaces
|
||||
| name | Alice Hansen |
|
||||
| root@@@webDavUrl | %base_url%/dav/spaces/%space_id% |
|
||||
|
||||
|
||||
Scenario: A user can list his created spaces via multiple endpoints
|
||||
Given the administrator has given "Alice" the role "Admin" using the settings api
|
||||
When user "Alice" creates a space "Project Venus" of type "project" with quota "2000" using the GraphApi
|
||||
|
||||
@@ -13,14 +13,13 @@ Feature: State of the quota
|
||||
|
||||
Background:
|
||||
Given user "Alice" has been created with default attributes and without skeleton files
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
|
||||
|
||||
Scenario Outline: Quota information is returned in the list of spaces returned via the Graph API
|
||||
Given user "Alice" has created a space "<spaceName>" of type "project" with quota "<total>"
|
||||
And user "Alice" has uploaded a file inside space "<spaceName>" with content "<fileContent>" to "test.txt"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "<spaceName>" with these key and value pairs:
|
||||
When user "Alice" uploads a file inside space "<spaceName>" with content "<fileContent>" to "test.txt" using the WebDAV API
|
||||
Then the user "Alice" should have a space called "<spaceName>" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | <spaceName> |
|
||||
| quota@@@state | <state> |
|
||||
|
||||
@@ -13,7 +13,7 @@ Feature: Remove files, folder
|
||||
| username |
|
||||
| Alice |
|
||||
| Brian |
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And the administrator has given "Alice" the role "Space 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"
|
||||
@@ -58,8 +58,7 @@ Feature: Remove files, folder
|
||||
And for user "<user>" the space "delete objects" <shouldOrNotBeInSpace> contain these entries:
|
||||
| text.txt |
|
||||
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:
|
||||
And the user "<user>" should have a space called "delete objects" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | delete objects |
|
||||
| quota@@@used | <quotaValue> |
|
||||
@@ -72,10 +71,8 @@ Feature: Remove files, folder
|
||||
|
||||
|
||||
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 folder "" from space "user deletes a space"
|
||||
When user "Alice" removes the folder "" from space "delete objects"
|
||||
Then the HTTP status code should be "400"
|
||||
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 |
|
||||
And the user "Alice" should have a space called "delete objects" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | delete objects |
|
||||
|
||||
@@ -23,6 +23,7 @@ Feature: Resharing
|
||||
And user "Carol" has shared folder "Shares/folder" with user "Damian" with permissions "17"
|
||||
And user "Damian" has accepted share "/folder" offered by user "Carol"
|
||||
|
||||
|
||||
Scenario Outline: You should only be able to see direct outgoing shares not all the chain:
|
||||
Given user "Brian" has shared folder "Shares/folder" with user "Fred" with permissions "17"
|
||||
And user "Fred" has accepted share "/folder" offered by user "Brian"
|
||||
@@ -41,6 +42,7 @@ Feature: Resharing
|
||||
| Damian | 0 | should not be | should not be | should not be |
|
||||
| Fred | 0 | should not be | should not be | should not be |
|
||||
|
||||
|
||||
Scenario: Owners can see all the chain:
|
||||
When user "Alice" gets all the shares inside the folder "folder" using the sharing API
|
||||
Then the OCS status code should be "100"
|
||||
@@ -50,11 +52,13 @@ Feature: Resharing
|
||||
And user "Carol" should be included in the response
|
||||
And user "Damian" should be included in the response
|
||||
|
||||
|
||||
Scenario: You can't share with more permissions than you have
|
||||
When user "Damian" shares folder "Shares/folder" with user "Ember" with permissions "31" using the sharing API
|
||||
Then the OCS status code should be "404"
|
||||
And the OCS status message should be "Cannot set the requested share permissions"
|
||||
|
||||
|
||||
Scenario Outline: Editing reshares
|
||||
Given user "Carol" has shared folder "Shares/folder" with user "Fred" with permissions "17"
|
||||
And user "Fred" has accepted share "/folder" offered by user "Carol"
|
||||
@@ -68,6 +72,7 @@ Feature: Resharing
|
||||
| Brian | 998 | should not be |
|
||||
| Carol | 100 | should be |
|
||||
|
||||
|
||||
Scenario Outline: Deleting reshares
|
||||
Given user "Carol" has shared folder "Shares/folder" with user "Gina" with permissions "17"
|
||||
And user "Gina" has accepted share "/folder" offered by user "Carol"
|
||||
@@ -81,6 +86,7 @@ Feature: Resharing
|
||||
| Brian | 400 | should exist |
|
||||
| Carol | 100 | should not exist |
|
||||
|
||||
|
||||
Scenario Outline: Resharing with different permissions
|
||||
When user "<user>" shares folder "Shares/folder" with user "Ember" with permissions "<permissions>" using the sharing API
|
||||
Then the OCS status code should be "<code>"
|
||||
@@ -92,6 +98,7 @@ Feature: Resharing
|
||||
| Damian | 27 | 404 |
|
||||
| Damian | 31 | 404 |
|
||||
|
||||
|
||||
Scenario Outline: Resharing files with different permissions
|
||||
Given user "Alice" has uploaded file with content "Random data" to "/file.txt"
|
||||
And user "Alice" has shared file "/file.txt" with user "Brian" with permissions "<shareepermissions>"
|
||||
@@ -104,3 +111,18 @@ Feature: Resharing
|
||||
| 17 | 19 | 404 |
|
||||
| 19 | 19 | 100 |
|
||||
|
||||
|
||||
Scenario Outline: Resharing with group with different permissions
|
||||
Given group "security department" has been created
|
||||
And the administrator has added a user "Ember" to the group "security department" using GraphApi
|
||||
And the administrator has added a user "Fred" to the group "security department" using GraphApi
|
||||
When user "Brian" shares folder "Shares/folder" with group "security department" with permissions "<permissions>" using the sharing API
|
||||
Then the OCS status code should be "100"
|
||||
When user "Ember" accepts share "/folder" offered by user "Brian" using the sharing API
|
||||
Then user "Ember" <canUpload> able to upload file "filesForUpload/textfile.txt" to "/Shares/folder/textfile.txt"
|
||||
When user "Fred" accepts share "/folder" offered by user "Brian" using the sharing API
|
||||
Then user "Fred" <canUpload> able to upload file "filesForUpload/textfile.txt" to "/Shares/folder/textfile.txt"
|
||||
Examples:
|
||||
| permissions | canUpload |
|
||||
| 17 | should not be |
|
||||
| 31 | should be |
|
||||
|
||||
@@ -14,7 +14,7 @@ Feature: Restore files, folder
|
||||
| Brian |
|
||||
| Bob |
|
||||
| Carol |
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And the administrator has given "Alice" the role "Space 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"
|
||||
|
||||
@@ -14,58 +14,51 @@ Feature: Restoring space
|
||||
| Alice |
|
||||
| Brian |
|
||||
| Bob |
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "restore a space" of type "project" with quota "10"
|
||||
|
||||
|
||||
Scenario: An owner can restore a Space via the Graph API
|
||||
Given user "Alice" has created a space "restore a space" of type "project" with quota "10"
|
||||
And user "Alice" has disabled a space "restore a space"
|
||||
Given user "Alice" has disabled a space "restore a space"
|
||||
When user "Alice" restores a disabled space "restore a space"
|
||||
Then the HTTP status code should be "200"
|
||||
|
||||
|
||||
Scenario: Participants can see the data after the space is restored
|
||||
Given user "Alice" has created a space "data exists" of type "project" with quota "10"
|
||||
And user "Alice" has created a folder "mainFolder" in space "data exists"
|
||||
And user "Alice" has uploaded a file inside space "data exists" with content "example" to "test.txt"
|
||||
And user "Alice" has shared a space "data exists" to user "Brian" with role "editor"
|
||||
And user "Alice" has shared a space "data exists" to user "Bob" with role "viewer"
|
||||
And user "Alice" has disabled a space "data exists"
|
||||
When user "Alice" restores a disabled space "data exists"
|
||||
Then for user "Alice" the space "data exists" should contain these entries:
|
||||
| test.txt |
|
||||
| mainFolder |
|
||||
And for user "Brian" the space "data exists" should contain these entries:
|
||||
| test.txt |
|
||||
| mainFolder |
|
||||
And for user "Bob" the space "data exists" should contain these entries:
|
||||
| test.txt |
|
||||
| mainFolder |
|
||||
Given user "Alice" has created a folder "mainFolder" in space "restore a space"
|
||||
And user "Alice" has uploaded a file inside space "restore a space" with content "example" to "test.txt"
|
||||
And user "Alice" has shared a space "restore a space" to user "Brian" with role "editor"
|
||||
And user "Alice" has shared a space "restore a space" to user "Bob" with role "viewer"
|
||||
And user "Alice" has disabled a space "restore a space"
|
||||
When user "Alice" restores a disabled space "restore a space"
|
||||
Then for user "Alice" the space "restore a space" should contain these entries:
|
||||
| test.txt |
|
||||
| mainFolder |
|
||||
And for user "Brian" the space "restore a space" should contain these entries:
|
||||
| test.txt |
|
||||
| mainFolder |
|
||||
And for user "Bob" the space "restore a space" should contain these entries:
|
||||
| test.txt |
|
||||
| mainFolder |
|
||||
|
||||
|
||||
Scenario: Participants can create data in the space after restoring
|
||||
Given user "Alice" has created a space "create data in restored space" of type "project" with quota "10"
|
||||
And user "Alice" has shared a space "create data in restored space" to user "Brian" with role "editor"
|
||||
And user "Alice" has disabled a space "create data in restored space"
|
||||
And user "Alice" has restored a disabled space "create data in restored space"
|
||||
When user "Brian" creates a folder "mainFolder" in space "create data in restored space" using the WebDav Api
|
||||
And user "Brian" uploads a file inside space "create data in restored space" with content "test" to "test.txt" using the WebDAV API
|
||||
Then for user "Brian" the space "create data in restored space" should contain these entries:
|
||||
| test.txt |
|
||||
| mainFolder |
|
||||
|
||||
Scenario: Participant can create data in the space after restoring
|
||||
Given user "Alice" has shared a space "restore a space" to user "Brian" with role "editor"
|
||||
And user "Alice" has disabled a space "restore a space"
|
||||
And user "Alice" has restored a disabled space "restore a space"
|
||||
When user "Brian" creates a folder "mainFolder" in space "restore a space" using the WebDav Api
|
||||
And user "Brian" uploads a file inside space "restore a space" with content "test" to "test.txt" using the WebDAV API
|
||||
Then for user "Brian" the space "restore a space" should contain these entries:
|
||||
| test.txt |
|
||||
| mainFolder |
|
||||
|
||||
Scenario: User with viewer permissions cannot restore space
|
||||
Given user "Alice" has created a space "viewer restores space" of type "project" with quota "10"
|
||||
And user "Alice" has shared a space "viewer restores space" to user "Brian" with role "viewer"
|
||||
And user "Alice" has disabled a space "viewer restores space"
|
||||
When user "Brian" restores a disabled space "viewer restores space" without manager rights
|
||||
Then the HTTP status code should be "404"
|
||||
|
||||
|
||||
Scenario: User with editor permissions cannot restore space
|
||||
Given user "Alice" has created a space "editor restores space" of type "project" with quota "10"
|
||||
And user "Alice" has shared a space "editor restores space" to user "Brian" with role "editor"
|
||||
And user "Alice" has disabled a space "editor restores space"
|
||||
When user "Brian" restores a disabled space "editor restores space" without manager rights
|
||||
|
||||
Scenario Outline: User without space manager role cannot restore space
|
||||
Given user "Alice" has shared a space "restore a space" to user "Brian" with role "<role>"
|
||||
And user "Alice" has disabled a space "restore a space"
|
||||
When user "Brian" restores a disabled space "restore a space" without manager rights
|
||||
Then the HTTP status code should be "404"
|
||||
Examples:
|
||||
| role |
|
||||
| viewer |
|
||||
| editor |
|
||||
|
||||
@@ -11,7 +11,7 @@ Feature: Search
|
||||
| Alice |
|
||||
| Brian |
|
||||
And using new DAV path
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "find data" with the default quota using the GraphApi
|
||||
And user "Alice" has created a folder "folder/SubFolder1/subFOLDER2" in space "find data"
|
||||
And user "Alice" has uploaded a file inside space "find data" with content "some content" to "folder/SubFolder1/subFOLDER2/insideTheFolder.txt"
|
||||
|
||||
@@ -12,7 +12,7 @@ Feature: Share spaces
|
||||
| Alice |
|
||||
| Brian |
|
||||
| Bob |
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "share space" with the default quota using the GraphApi
|
||||
|
||||
|
||||
@@ -21,8 +21,7 @@ Feature: Share spaces
|
||||
Then the HTTP status code should be "200"
|
||||
And the OCS status code should be "200"
|
||||
And the OCS status message should be "OK"
|
||||
When user "Brian" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "share space" with these key and value pairs:
|
||||
And the user "Brian" should have a space called "share space" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| id | %space_id% |
|
||||
@@ -36,8 +35,7 @@ Feature: Share spaces
|
||||
|
||||
Scenario: A user can see who has been granted access
|
||||
Given user "Alice" has shared a space "share space" to user "Brian" with role "viewer"
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "share space" granted to "Brian" with these key and value pairs:
|
||||
And the user "Alice" should have a space called "share space" granted to "Brian" with these key and value pairs:
|
||||
| key | value |
|
||||
| root@@@permissions@@@1@@@grantedTo@@@0@@@user@@@id | %user_id% |
|
||||
| root@@@permissions@@@1@@@roles@@@0 | viewer |
|
||||
@@ -54,25 +52,21 @@ Feature: Share spaces
|
||||
|
||||
Scenario: When a user unshares a space, the space becomes unavailable to the receiver
|
||||
Given user "Alice" has shared a space "share space" to user "Brian" with role "viewer"
|
||||
When user "Brian" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "share space" with these key and value pairs:
|
||||
And the user "Brian" should have a space called "share space" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| id | %space_id% |
|
||||
| name | share space |
|
||||
When user "Alice" unshares a space "share space" to user "Brian"
|
||||
Then the HTTP status code should be "200"
|
||||
And user "Brian" lists all available spaces via the GraphApi
|
||||
And the json responded should not contain a space with name "share space"
|
||||
Then the user "Brian" should not have a space called "share space"
|
||||
|
||||
|
||||
Scenario: A user can add another user to the space managers to enable him
|
||||
Given user "Alice" has uploaded a file inside space "share space" with content "Test" to "test.txt"
|
||||
And user "Alice" has shared a space "share space" to user "Brian" with role "manager"
|
||||
When user "Brian" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "share space" granted to "Brian" with role "manager"
|
||||
When user "Brian" has shared a space "share space" to user "Bob" with role "viewer"
|
||||
And user "Bob" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "share space" granted to "Bob" with role "viewer"
|
||||
When user "Alice" shares a space "share space" to user "Brian" with role "manager"
|
||||
Then the user "Brian" should have a space called "share space" granted to "Brian" with role "manager"
|
||||
When user "Brian" shares a space "share space" to user "Bob" with role "viewer"
|
||||
Then the user "Bob" should have a space called "share space" granted to "Bob" with role "viewer"
|
||||
And for user "Bob" the space "share space" should contain these entries:
|
||||
| test.txt |
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
@api @skipOnOcV10
|
||||
Feature: Share a file or folder that is inside a space
|
||||
As an user with manager space role
|
||||
I want to be able to share the data inside the space
|
||||
As an user with manager space role
|
||||
I want to be able to share the data inside the space
|
||||
|
||||
| role | permissions |
|
||||
| viewer | 1 |
|
||||
| uploader | 4 |
|
||||
| contributor | 5 |
|
||||
| editor | 15 |
|
||||
|
||||
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
|
||||
@@ -18,64 +13,41 @@ Feature: Share a file or folder that is inside a space
|
||||
| Alice |
|
||||
| Brian |
|
||||
| Bob |
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "share sub-item" with the default quota using the GraphApi
|
||||
And user "Alice" has created a folder "folder" in space "share sub-item"
|
||||
And user "Alice" has uploaded a file inside space "share sub-item" with content "some content" to "folder/file.txt"
|
||||
And user "Alice" has uploaded a file inside space "share sub-item" with content "some content" to "file.txt"
|
||||
|
||||
|
||||
Scenario Outline: An user-owner can share a folder inside project space to another user with role:
|
||||
When user "Alice" shares the following entity "folder" inside of space "share sub-item" with user "Brian" with role "<role>"
|
||||
Scenario Outline: A manager of the space can share an entity inside project space to another user with role:
|
||||
When user "Alice" shares the following entity "<entity>" inside of space "share sub-item" with user "Brian" with role "<role>"
|
||||
Then the HTTP status code should be "200"
|
||||
And the OCS status code should be "200"
|
||||
And the OCS status message should be "OK"
|
||||
And user "Brian" accepts share "/folder" offered by user "Alice" using the sharing API
|
||||
And as "Brian" folder "Shares/folder" should exist
|
||||
When user "Brian" accepts share "/<entity>" offered by user "Alice" using the sharing API
|
||||
And as "Brian" <type> "Shares/<entity>" should exist
|
||||
Examples:
|
||||
| role |
|
||||
| viewer |
|
||||
| editor |
|
||||
| entity | type | role |
|
||||
| folder | folder | viewer |
|
||||
| folder | folder | editor |
|
||||
| file.txt | file | viewer |
|
||||
| file.txt | file | editor |
|
||||
|
||||
|
||||
Scenario Outline: An user-owner can share a file inside project space to another user with role:
|
||||
When user "Alice" shares the following entity "folder/file.txt" inside of space "share sub-item" with user "Brian" with role "<role>"
|
||||
Then the HTTP status code should be "200"
|
||||
And the OCS status code should be "200"
|
||||
And the OCS status message should be "OK"
|
||||
And user "Brian" accepts share "/file.txt" offered by user "Alice" using the sharing API
|
||||
Then as "Brian" file "Shares/file.txt" should exist
|
||||
Examples:
|
||||
| role |
|
||||
| viewer |
|
||||
| editor |
|
||||
|
||||
|
||||
Scenario Outline: An user participant of the project space with manager role can share a folder to another user
|
||||
Scenario Outline: An user participant of the project space with manager role can share an entity to another user
|
||||
Given user "Alice" has shared a space "share sub-item" to user "Brian" with role "manager"
|
||||
When user "Brian" shares the following entity "folder" inside of space "share sub-item" with user "Bob" with role "<role>"
|
||||
When user "Brian" shares the following entity "<entity>" inside of space "share sub-item" with user "Bob" with role "<role>"
|
||||
Then the HTTP status code should be "200"
|
||||
And the OCS status code should be "200"
|
||||
And the OCS status message should be "OK"
|
||||
And user "Bob" accepts share "/folder" offered by user "Brian" using the sharing API
|
||||
And as "Bob" folder "Shares/folder" should exist
|
||||
When user "Bob" accepts share "/<entity>" offered by user "Brian" using the sharing API
|
||||
And as "Bob" <type> "Shares/<entity>" should exist
|
||||
Examples:
|
||||
| role |
|
||||
| viewer |
|
||||
| editor |
|
||||
|
||||
|
||||
Scenario Outline: An user participant of the project space with manager role can share a file to another user
|
||||
Given user "Alice" has shared a space "share sub-item" to user "Brian" with role "manager"
|
||||
When user "Brian" shares the following entity "folder/file.txt" inside of space "share sub-item" with user "Bob" with role "<role>"
|
||||
Then the HTTP status code should be "200"
|
||||
And the OCS status code should be "200"
|
||||
And the OCS status message should be "OK"
|
||||
And user "Bob" accepts share "/file.txt" offered by user "Brian" using the sharing API
|
||||
Then as "Bob" file "Shares/file.txt" should exist
|
||||
Examples:
|
||||
| role |
|
||||
| viewer |
|
||||
| editor |
|
||||
| entity | type | role |
|
||||
| folder | folder | viewer |
|
||||
| folder | folder | editor |
|
||||
| file.txt | file | viewer |
|
||||
| file.txt | file | editor |
|
||||
|
||||
|
||||
Scenario Outline: An user participant of the project space without space manager role cannot share an entity to another user
|
||||
@@ -85,8 +57,8 @@ Feature: Share a file or folder that is inside a space
|
||||
And the OCS status code should be "<statusCode>"
|
||||
And the OCS status message should be "<statusMessage>"
|
||||
Examples:
|
||||
| entity | spaceRole | statusCode | statusMessage |
|
||||
| folder | editor | 404 | No share permission |
|
||||
| folder/file.txt | editor | 404 | No share permission |
|
||||
| folder/file.txt | viewer | 404 | No share permission |
|
||||
| folder | viewer | 404 | No share permission |
|
||||
| entity | spaceRole | statusCode | statusMessage |
|
||||
| folder | editor | 404 | No share permission |
|
||||
| file.txt | editor | 404 | No share permission |
|
||||
| file.txt | viewer | 404 | No share permission |
|
||||
| folder | viewer | 404 | No share permission |
|
||||
|
||||
@@ -23,13 +23,13 @@ Feature: Share a file or folder that is inside a space via public link
|
||||
| username |
|
||||
| Alice |
|
||||
| Brian |
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "share sub-item" with the default quota using the GraphApi
|
||||
And user "Alice" has created a folder "folder" in space "share sub-item"
|
||||
And user "Alice" has uploaded a file inside space "share sub-item" with content "some content" to "folder/file.txt"
|
||||
|
||||
|
||||
Scenario Outline: An user-owner can share an entity inside project space via public link
|
||||
Scenario Outline: A manager of the space can share an entity inside project space via public link
|
||||
When user "Alice" creates a public link share inside of space "share sub-item" with settings:
|
||||
| path | <entity> |
|
||||
| shareType | 3 |
|
||||
|
||||
@@ -1,131 +1,75 @@
|
||||
@api @skipOnOcV10
|
||||
Feature: Upload files into a space
|
||||
As a user
|
||||
I want to be able to work with project spaces and quota
|
||||
As an user
|
||||
I want to be able to create folders and files in the space
|
||||
|
||||
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 "Bob" has been created with default attributes and without skeleton files
|
||||
And the administrator has given "Alice" the role "Admin" using the settings api
|
||||
Given these users have been created with default attributes and without skeleton files:
|
||||
| username |
|
||||
| Alice |
|
||||
| Brian |
|
||||
| Bob |
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "Project Ceres" of type "project" with quota "2000"
|
||||
|
||||
|
||||
Scenario: A user can create a folder in a Space via the Graph API
|
||||
Given user "Alice" has created a space "Project Ceres" of type "project" with quota "2000"
|
||||
When user "Alice" creates a folder "mainFolder" in space "Project Ceres" using the WebDav Api
|
||||
Scenario Outline: An user creates a folder in the Space via the Graph API
|
||||
And user "Alice" has shared a space "Project Ceres" to user "Brian" with role "<role>"
|
||||
When user "Brian" creates a folder "mainFolder" in space "Project Ceres" using the WebDav Api
|
||||
Then the HTTP status code should be "<code>"
|
||||
And for user "Brian" the space "Project Ceres" <shouldOrNot> contain these entries:
|
||||
| mainFolder |
|
||||
Examples:
|
||||
| role | code | shouldOrNot |
|
||||
| manager | 201 | should |
|
||||
| editor | 201 | should |
|
||||
| viewer | 403 | should not |
|
||||
|
||||
|
||||
Scenario Outline: An user uploads a file in shared Space via the Graph API
|
||||
And user "Alice" has shared a space "Project Ceres" to user "Brian" with role "<role>"
|
||||
When user "Brian" uploads a file inside space "Project Ceres" with content "Test" to "test.txt" using the WebDAV API
|
||||
Then the HTTP status code should be "<code>"
|
||||
And for user "Brian" the space "Project Ceres" <shouldOrNot> contain these entries:
|
||||
| test.txt |
|
||||
And the user "Brian" should have a space called "Project Ceres" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Project Ceres |
|
||||
| quota@@@used | <usedQuota> |
|
||||
Examples:
|
||||
| role | code | shouldOrNot | usedQuota |
|
||||
| manager | 201 | should | 4 |
|
||||
| editor | 201 | should | 4 |
|
||||
| viewer | 403 | should not | 0 |
|
||||
|
||||
|
||||
Scenario: An user can create subfolders in a Space via the Graph API
|
||||
When user "Alice" creates a subfolder "mainFolder/subFolder1/subFolder2" in space "Project Ceres" using the WebDav Api
|
||||
Then the HTTP status code should be "201"
|
||||
And for user "Alice" the space "Project Ceres" should contain these entries:
|
||||
| mainFolder |
|
||||
|
||||
|
||||
Scenario: A user can create subfolders in a Space via the Graph API
|
||||
Given user "Alice" has created a space "Subfolders in Project" of type "project" with quota "2000"
|
||||
When user "Alice" creates a subfolder "mainFolder/subFolder1/subFolder2" in space "Subfolders in Project" using the WebDav Api
|
||||
Then the HTTP status code should be "201"
|
||||
And for user "Alice" the space "Subfolders in Project" should contain these entries:
|
||||
| mainFolder |
|
||||
And for user "Alice" folder "mainFolder/subFolder1/" of the space "Subfolders in Project" should contain these entries:
|
||||
And for user "Alice" folder "mainFolder/subFolder1/" of the space "Project Ceres" should contain these entries:
|
||||
| subFolder2 |
|
||||
|
||||
|
||||
Scenario: A user cannot create a folder in a Space if they do not have permission
|
||||
Given user "Alice" has created a space "Project Merkur" of type "project" with quota "2000"
|
||||
And user "Bob" creates a folder "forAlice" in space "Project Merkur" owned by the user "Alice" using the WebDav Api
|
||||
Scenario: An user can create a folder and upload a file to a Space
|
||||
When user "Alice" creates a folder "NewFolder" in space "Project Ceres" using the WebDav Api
|
||||
Then the HTTP status code should be "201"
|
||||
And user "Alice" uploads a file inside space "Project Ceres" with content "Test" to "test.txt" using the WebDAV API
|
||||
Then the HTTP status code should be "201"
|
||||
And for user "Alice" the space "Project Ceres" should contain these entries:
|
||||
| NewFolder |
|
||||
| test.txt |
|
||||
|
||||
|
||||
Scenario: An user cannot create a folder or a file in a Space if they do not have permission
|
||||
When user "Bob" creates a folder "forAlice" in space "Project Ceres" owned by the user "Alice" using the WebDav Api
|
||||
Then the HTTP status code should be "404"
|
||||
And for user "Alice" the space "Project Merkur" should not contain these entries:
|
||||
| forAlice |
|
||||
|
||||
|
||||
Scenario: A user can create a folder and upload a file to a Space
|
||||
Given user "Alice" has created a space "Project Moon" of type "project" with quota "2000"
|
||||
When user "Alice" creates a folder "NewFolder" in space "Project Moon" using the WebDav Api
|
||||
Then the HTTP status code should be "201"
|
||||
And user "Alice" uploads a file inside space "Project Moon" with content "Test" to "test.txt" using the WebDAV API
|
||||
Then the HTTP status code should be "201"
|
||||
And for user "Alice" the space "Project Moon" should contain these entries:
|
||||
| NewFolder |
|
||||
| test.txt |
|
||||
|
||||
|
||||
Scenario: A user cannot upload a file in a Space if they do not have permission
|
||||
Given user "Alice" has created a space "Project Pluto" of type "project" with quota "2000"
|
||||
When user "Bob" uploads a file inside space "Project Pluto" owned by the user "Alice" with content "Test" to "test.txt" using the WebDAV API
|
||||
When user "Bob" uploads a file inside space "Project Ceres" owned by the user "Alice" with content "Test" to "test.txt" using the WebDAV API
|
||||
Then the HTTP status code should be "404"
|
||||
And for user "Alice" the space "Project Pluto" should not contain these entries:
|
||||
| test.txt |
|
||||
|
||||
|
||||
Scenario: A user can upload a file in a Space and see the remaining quota
|
||||
When user "Alice" creates a space "Project Saturn" of type "project" with quota "2000" using the GraphApi
|
||||
And the json responded should contain a space "Project Saturn" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| id | %space_id% |
|
||||
| name | Project Saturn|
|
||||
| quota@@@total | 2000 |
|
||||
And user "Alice" uploads a file inside space "Project Saturn" with content "Test" to "test.txt" using the WebDAV API
|
||||
Then the HTTP status code should be "201"
|
||||
And for user "Alice" the space "Project Saturn" should contain these entries:
|
||||
| test.txt |
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "Project Saturn" with these key and value pairs:
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| id | %space_id% |
|
||||
| name | Project Saturn|
|
||||
| quota@@@state | normal |
|
||||
| quota@@@total | 2000 |
|
||||
| quota@@@remaining| 1996 |
|
||||
| quota@@@used | 4 |
|
||||
|
||||
|
||||
Scenario: A user with role editor can create a folder in shared Space via the Graph API
|
||||
Given user "Alice" has created a space "Editor can create folder" of type "project" with quota "2000"
|
||||
And user "Alice" has shared a space "Editor can create folder" to user "Bob" with role "editor"
|
||||
When user "Bob" creates a folder "mainFolder" in space "Editor can create folder" using the WebDav Api
|
||||
Then the HTTP status code should be "201"
|
||||
And for user "Bob" the space "Editor can create folder" should contain these entries:
|
||||
| mainFolder |
|
||||
And for user "Alice" the space "Editor can create folder" should contain these entries:
|
||||
| mainFolder |
|
||||
|
||||
|
||||
Scenario: A user with role viewer cannot create a folder in shared Space via the Graph API
|
||||
Given user "Alice" has created a space "Viewer cannot create folder" of type "project" with quota "2000"
|
||||
And user "Alice" has shared a space "Viewer cannot create folder" to user "Bob" with role "viewer"
|
||||
When user "Bob" creates a folder "mainFolder" in space "Viewer cannot create folder" using the WebDav Api
|
||||
Then the HTTP status code should be "403"
|
||||
And for user "Bob" the space "Viewer cannot create folder" should not contain these entries:
|
||||
| mainFolder |
|
||||
And for user "Alice" the space "Viewer cannot create folder" should not contain these entries:
|
||||
| mainFolder |
|
||||
|
||||
|
||||
Scenario: A user with role editor can upload a file in shared Space via the Graph API
|
||||
Given user "Alice" has created a space "Editor can upload file" of type "project" with quota "20"
|
||||
And user "Alice" has shared a space "Editor can upload file" to user "Bob" with role "editor"
|
||||
When user "Bob" uploads a file inside space "Editor can upload file" with content "Test" to "test.txt" using the WebDAV API
|
||||
Then the HTTP status code should be "201"
|
||||
And for user "Bob" the space "Editor can upload file" should contain these entries:
|
||||
| test.txt |
|
||||
And for user "Alice" the space "Editor can upload file" should contain these entries:
|
||||
| test.txt |
|
||||
When user "Bob" lists all available spaces via the GraphApi
|
||||
Then the json responded should contain a space "Editor can upload file" with these key and value pairs:
|
||||
| key | value |
|
||||
| name | Editor can upload file |
|
||||
| quota@@@used | 4 |
|
||||
|
||||
|
||||
Scenario: A user with role viewer cannot upload a file in shared Space via the Graph API
|
||||
Given user "Alice" has created a space "Viewer cannot upload file" of type "project" with quota "20"
|
||||
And user "Alice" has shared a space "Viewer cannot upload file" to user "Bob" with role "viewer"
|
||||
When user "Bob" uploads a file inside space "Viewer cannot upload file" with content "Test" to "test.txt" using the WebDAV API
|
||||
Then the HTTP status code should be "403"
|
||||
And for user "Bob" the space "Viewer cannot upload file" should not contain these entries:
|
||||
| test.txt |
|
||||
And for user "Alice" the space "Viewer cannot upload file" should not contain these entries:
|
||||
| test.txt |
|
||||
|
||||
And for user "Alice" the space "Project Ceres" should not contain these entries:
|
||||
| forAlice |
|
||||
| test.txt |
|
||||
|
||||
@@ -398,6 +398,8 @@ class GraphContext implements Context {
|
||||
/**
|
||||
* adds a user to a group
|
||||
*
|
||||
* @Given /^the administrator has added a user "([^"]*)" to the group "([^"]*)" using GraphApi$/
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $group
|
||||
* @param bool $checkResult
|
||||
|
||||
@@ -389,13 +389,13 @@ class SpacesContext implements Context {
|
||||
$userAdmin = $this->featureContext->getAdminUsername();
|
||||
|
||||
for ($i = 0; $i < 2; ++$i) {
|
||||
$this->theUserListsAllHisAvailableSpacesUsingTheGraphApiWithFilter(
|
||||
$this->theUserListsAllHisAvailableSpacesUsingTheGraphApi(
|
||||
$userAdmin,
|
||||
$query
|
||||
);
|
||||
|
||||
$rawBody = $this->featureContext->getResponse()->getBody()->getContents();
|
||||
$drives = json_decode($rawBody, true, 512, JSON_THROW_ON_ERROR);
|
||||
$drives = json_decode($rawBody, true, 512);
|
||||
if (isset($drives["value"])) {
|
||||
$drives = $drives["value"];
|
||||
}
|
||||
@@ -569,19 +569,22 @@ class SpacesContext implements Context {
|
||||
|
||||
/**
|
||||
* @When /^user "([^"]*)" lists all available spaces via the GraphApi$/
|
||||
* @When /^user "([^"]*)" lists all available spaces via the GraphApi with query "([^"]*)"$/
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $query
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @throws GuzzleException
|
||||
* @throws Exception
|
||||
*/
|
||||
public function theUserListsAllHisAvailableSpacesUsingTheGraphApi(string $user): void {
|
||||
public function theUserListsAllHisAvailableSpacesUsingTheGraphApi(string $user, string $query = ''): void {
|
||||
$this->featureContext->setResponse(
|
||||
$this->listMySpacesRequest(
|
||||
$user,
|
||||
$this->featureContext->getPasswordForUser($user)
|
||||
$this->featureContext->getPasswordForUser($user),
|
||||
"?" . $query
|
||||
)
|
||||
);
|
||||
$this->rememberTheAvailableSpaces();
|
||||
@@ -606,26 +609,6 @@ class SpacesContext implements Context {
|
||||
$this->rememberTheAvailableSpaces();
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^user "([^"]*)" lists all available spaces via the GraphApi with query "([^"]*)"$/
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $query
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function theUserListsAllHisAvailableSpacesUsingTheGraphApiWithFilter(string $user, string $query): void {
|
||||
$this->featureContext->setResponse(
|
||||
$this->listMySpacesRequest(
|
||||
$user,
|
||||
$this->featureContext->getPasswordForUser($user),
|
||||
"?" . $query
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^user "([^"]*)" looks up the single space "([^"]*)" via the GraphApi by using its id$/
|
||||
*
|
||||
@@ -966,7 +949,6 @@ class SpacesContext implements Context {
|
||||
|
||||
/**
|
||||
* @Then /^the json responded should contain a space "([^"]*)" (?:|(?:owned by|granted to) "([^"]*)" )(?:|(?:with description file|with space image) "([^"]*)" )with these key and value pairs:$/
|
||||
*
|
||||
* @param string $spaceName
|
||||
* @param string $userName
|
||||
* @param string $fileName
|
||||
@@ -1034,23 +1016,60 @@ class SpacesContext implements Context {
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then /^the json responded should contain a space "([^"]*)" granted to "([^"]*)" with role "([^"]*)"$/
|
||||
* @Then /^the user "([^"]*)" should have a space called "([^"]*)" with these key and value pairs:$/
|
||||
* @Then /^the user "([^"]*)" should have a space called "([^"]*)" (?:owned by|granted to) "([^"]*)" with these key and value pairs:$/
|
||||
* @Then /^the user "([^"]*)" should have a space called "([^"]*)" (?:with description file|with space image) "([^"]*)" with these key and value pairs:$/
|
||||
* @Then /^the user "([^"]*)" should have a space called "([^"]*)" (?:owned by|granted to) "([^"]*)" (?:with description file|with space image) "([^"]*)" with these key and value pairs:$/
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $spaceName
|
||||
* @param string $userName
|
||||
* @param string $grantedUser
|
||||
* @param string $fileName
|
||||
* @param TableNode $table
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception|GuzzleException
|
||||
*/
|
||||
public function userHasSpaceWith(
|
||||
string $user,
|
||||
string $spaceName,
|
||||
string $grantedUser = '',
|
||||
string $fileName = '',
|
||||
TableNode $table
|
||||
): void {
|
||||
$this->theUserListsAllHisAvailableSpacesUsingTheGraphApi($user);
|
||||
$this->featureContext->theHTTPStatusCodeShouldBe(
|
||||
200,
|
||||
"Expected response status code should be 200"
|
||||
);
|
||||
$this->jsonRespondedShouldContain($spaceName, $grantedUser, $fileName, $table);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then /^the user "([^"]*)" should have a space called "([^"]*)" granted to "([^"]*)" with role "([^"]*)"$/
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $spaceName
|
||||
* @param string $grantedUser
|
||||
* @param string $role
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception|GuzzleException
|
||||
*/
|
||||
public function checkPermissionsInResponse(
|
||||
string $user,
|
||||
string $spaceName,
|
||||
string $userName,
|
||||
string $grantedUser,
|
||||
string $role
|
||||
): void {
|
||||
$this->theUserListsAllHisAvailableSpacesUsingTheGraphApi($user);
|
||||
$this->featureContext->theHTTPStatusCodeShouldBe(
|
||||
200,
|
||||
"Expected response status code should be 200"
|
||||
);
|
||||
Assert::assertIsArray($spaceAsArray = $this->getSpaceByNameFromResponse($spaceName), "No space with name $spaceName found");
|
||||
$permissions = $spaceAsArray["root"]["permissions"];
|
||||
$userId = $this->getUserIdByUserName($userName);
|
||||
$userId = $this->getUserIdByUserName($grantedUser);
|
||||
|
||||
$userRole = "";
|
||||
foreach ($permissions as $permission) {
|
||||
@@ -1060,7 +1079,7 @@ class SpacesContext implements Context {
|
||||
}
|
||||
}
|
||||
}
|
||||
Assert::assertEquals($userRole, $role, "the user $userName with the role $role could not be found");
|
||||
Assert::assertEquals($userRole, $role, "the user $grantedUser with the role $role could not be found");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1077,6 +1096,27 @@ class SpacesContext implements Context {
|
||||
Assert::assertEmpty($this->getSpaceByNameFromResponse($spaceName), "space $spaceName should not be available for a user");
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then /^the user "([^"]*)" should not have a space called "([^"]*)"$/
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $spaceName
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
public function usershouldNotHaveSpace(
|
||||
string $user,
|
||||
string $spaceName
|
||||
): void {
|
||||
$this->theUserListsAllHisAvailableSpacesUsingTheGraphApi($user);
|
||||
$this->featureContext->theHTTPStatusCodeShouldBe(
|
||||
200,
|
||||
"Expected response status code should be 200"
|
||||
);
|
||||
$this->jsonRespondedShouldNotContain($spaceName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then /^the json responded should (not|only|)\s?contain spaces of type "([^"]*)"$/
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user