[tests-only] [full-ci] Refactor scenario related to checking json response (#6034)

* Separate positive and negative testing in different scenario

* Remove duplicate scenario

* Refactor json step graamer

* Remove unnecessary steps

* Add step to check space disable state
This commit is contained in:
Amrita
2023-05-04 14:55:11 +02:00
committed by GitHub
parent 5c3c7278dc
commit 517a177057
11 changed files with 131 additions and 851 deletions
@@ -16,7 +16,7 @@ Feature: Change data of space
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" with settings:
| shareWith | Brian |
| shareWith | Brian |
| role | editor |
And user "Alice" has shared a space "Project Jupiter" with settings:
| shareWith | Bob |
@@ -24,10 +24,10 @@ Feature: Change data of space
And using spaces DAV path
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 "<expectedName>"
Then the HTTP status code should be "<code>"
And for user "<user>" the JSON response should contain space called "<expectedName>" and match
Scenario: user with space manager role can change the name of a space via the Graph API
When user "Alice" changes the name of the "Project Jupiter" space to "Project Death Star"
Then the HTTP status code should be "200"
And the JSON data of the response should match
"""
{
"type": "object",
@@ -38,7 +38,7 @@ Feature: Change data of space
"properties": {
"name": {
"type": "string",
"enum": ["<expectedName>"]
"enum": ["Project Death Star"]
},
"driveType": {
"type": "string",
@@ -47,17 +47,21 @@ Feature: Change data of space
}
}
"""
Scenario Outline: user other than space manager role can't change the name of a Space via the Graph API
When user "<user>" changes the name of the "Project Jupiter" space to "Project Jupiter"
Then the HTTP status code should be "403"
Examples:
| user | code | expectedName |
| Alice | 200 | Project Death Star |
| Brian | 403 | Project Jupiter |
| Bob | 403 | Project Jupiter |
| user |
| Brian |
| Bob |
Scenario: only space admin user can change the description(subtitle) of a space via the Graph API
Scenario: user with space manager role 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 JSON response should contain space called "Project Jupiter" and match
And the JSON data of the response should match
"""
{
"type": "object",
@@ -86,58 +90,26 @@ Feature: Change data of 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>"
Then the HTTP status code should be "403"
Examples:
| user | code |
| Brian | 403 |
| Bob | 403 |
| user |
| Brian |
| Bob |
Scenario Outline: user tries to increase the quota of a Space via the Graph API
Scenario Outline: user with normal space permission can't 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 for user "<user>" the JSON response should contain space called "Project Jupiter" and match
"""
{
"type": "object",
"required": [
"name",
"quota"
],
"properties": {
"name": {
"type": "string",
"enum": ["Project Jupiter"]
},
"quota": {
"type": "object",
"required": [
"total"
],
"properties": {
"total" : {
"type": "number",
"enum": [<expectedQuotaValue>]
}
}
}
}
}
"""
Then the HTTP status code should be "403"
Examples:
| user | code | expectedQuotaValue |
| Alice | 200 | 100 |
| Brian | 403 | 20 |
| Bob | 403 | 20 |
| user |
| Brian |
| Bob |
Scenario Outline: 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" 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"
And for user "Alice" the JSON response should contain space called "Project Jupiter" and match
And the JSON data of the response should match
"""
{
"type": "object",
@@ -159,7 +131,7 @@ Feature: Change data of space
"properties": {
"used" : {
"type": "number",
"enum": [12]
"enum": [0]
},
"total" : {
"type": "number",
@@ -181,7 +153,7 @@ Feature: Change data of space
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 for user "Alice" the JSON response should contain space called "Project Jupiter" owned by "Alice" with description file ".space/readme.md" and match
And the JSON response should contain space called "Project Jupiter" owned by "Alice" with description file ".space/readme.md" and match
"""
{
"type": "object",
@@ -264,85 +236,13 @@ Feature: Change data of space
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 for user "Alice" the JSON response should contain space called "Project Jupiter" owned by "Alice" with description file ".space/readme.md" and match
"""
{
"type": "object",
"required": [
"name",
"special"
],
"properties": {
"name": {
"type": "string",
"enum": ["Project Jupiter"]
},
"special": {
"type": "array",
"items": [
{
"type": "object",
"required": [
"size",
"name",
"specialFolder",
"file",
"id",
"eTag"
],
"properties": {
"size": {
"type": "number",
"enum": [<size>]
},
"name": {
"type": "string",
"enum": ["readme.md"]
},
"specialFolder": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"enum": ["readme"]
}
}
},
"file": {
"type": "object",
"required": [
"mimeType"
],
"properties": {
"type": "string",
"enum": ["text/markdown"]
}
},
"id": {
"type": "string",
"enum": ["%file_id%"]
},
"tag": {
"type": "string",
"enum": ["%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 |
| user | code | content |
| Brian | 204 | new description |
| Bob | 403 | space description |
Scenario Outline: user space admin and editor set image file as space image of the space via the Graph API
@@ -350,7 +250,7 @@ Feature: Change data of space
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 for user "Alice" the JSON response should contain space called "Project Jupiter" owned by "Alice" with description file ".space/<fileName>" and match
And the JSON response should contain space called "Project Jupiter" owned by "Alice" with description file ".space/<fileName>" and match
"""
{
"type": "object",
@@ -444,7 +344,7 @@ Feature: Change data of 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 for user "<user>" the JSON response should contain space called "Project Jupiter" owned by "Alice" with description file ".space/readme.md" and match
And the JSON response should contain space called "Project Jupiter" owned by "Alice" with description file ".space/readme.md" and match
"""
{
"type": "object",
@@ -530,7 +430,7 @@ Feature: Change data of 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 for user "<user>" the JSON response should contain space called "Project Jupiter" owned by "Alice" with description file ".space/newSpaceImage.png" and match
And the JSON response should contain space called "Project Jupiter" owned by "Alice" with description file ".space/newSpaceImage.png" and match
"""
{
"type": "object",
@@ -608,63 +508,47 @@ Feature: Change data of space
| Brian |
Scenario Outline: admin user set own quota of a personal space via the Graph API
Scenario Outline: user can't upload resource greater than set quota
Given the administrator has given "Alice" the role "<userRole>" using the settings api
And user "Admin" has changed the quota of the personal space of "Alice Hansen" space to "15"
When user "Alice" uploads a file inside space "Alice Hansen" with content "file is more than 15 bytes" to "file.txt" using the WebDAV API
Then the HTTP status code should be "507"
And for user "Alice" the space "Personal" should not contain these entries:
| file.txt |
Examples:
| userRole |
| Admin |
| Space Admin |
| User |
| Guest |
Scenario Outline: admin user set own quota of a personal space via the Graph API and upload resource
When user "Admin" changes the quota of the "Admin" space to "<quotaValue>"
Then the HTTP status code should be "200"
When user "Admin" uploads a file inside space "Admin" with content "file is more than 15 bytes" to "file.txt" using the WebDAV API
Then the HTTP status code should be <code>
And for user "Admin" the space "Personal" should contain these entries:
| file.txt |
Examples:
| quotaValue | code |
| 15 | "507" |
| 10000 | between "201" and "204" |
| 0 | between "201" and "204" |
| -1 | between "201" and "204" |
Scenario Outline: admin user set an user personal space quota of via the Graph API
Scenario Outline: admin user set an user personal space quota of via the Graph API and upload resource
When user "Admin" changes the quota of the "Brian Murphy" space to "<quotaValue>"
Then the HTTP status code should be "200"
When user "Brian" uploads a file inside space "Brian Murphy" with content "file is more than 15 bytes" to "file.txt" using the WebDAV API
Then the HTTP status code should be <code>
And for user "Brian" the JSON response should contain space called "Brian Murphy" and match
"""
{
"type": "object",
"required": [
"name",
"quota"
],
"properties": {
"name": {
"type": "string",
"enum": ["Brian Murphy"]
},
"quota": {
"type": "object",
"required": [
"used",
"total"
],
"properties": {
"used" : {
"type": "number",
"enum": [<used>]
},
"total" : {
"type": "number",
"enum": [<total>]
}
}
}
}
}
"""
And for user "Brian" the space "Personal" should contain these entries:
| file.txt |
Examples:
| quotaValue | code | total | used |
| 15 | "507" | 15 | 0 |
| 10000 | between "201" and "204" | 10000 | 26 |
| 0 | between "201" and "204" | 0 | 26 |
| -1 | between "201" and "204" | 0 | 26 |
| quotaValue | code |
| 10000 | between "201" and "204" |
| 0 | between "201" and "204" |
| -1 | between "201" and "204" |
Scenario: user sends invalid space uuid via the graph API