Merge pull request #10737 from owncloud/tests/update-issue-tag

[tests-only] update issue tags
This commit is contained in:
Sawjan Gurung
2024-12-10 09:31:25 +05:45
committed by GitHub
5 changed files with 509 additions and 175 deletions
+8 -1
View File
@@ -126,7 +126,14 @@ class GraphHelper {
* @return string
*/
public static function getFederatedUserRegex(): string {
return '^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$';
return '(?=(.{4})*$)[A-Za-z0-9+/]*={0,2}$';
}
/**
* @return string
*/
public static function getFederatedFileIdRegex(): string {
return self::getSpaceIdRegex() . '!(?=(.{4})*$)[A-Za-z0-9+/]*={0,2}';
}
/**
@@ -2339,6 +2339,14 @@ class FeatureContext extends BehatVariablesContext {
],
"parameter" => []
],
[
"code" => "%federated_file_id_pattern%",
"function" => [
__NAMESPACE__ . '\TestHelpers\GraphHelper',
"getFederatedFileIdRegex"
],
"parameter" => []
],
[
"code" => "%group_id_pattern%",
"function" => [
@@ -12,7 +12,7 @@ Feature: search federation users
And using server "REMOTE"
And user "Brian" has been created with default attributes
@issue-9813
Scenario: users search for federation users by display name
Given using server "LOCAL"
And "Alice" has created the federation share invitation
@@ -142,7 +142,7 @@ Feature: search federation users
}
"""
@issue-9813
Scenario: user search for federation users by email
Given using server "LOCAL"
And "Alice" has created the federation share invitation
+489 -170
View File
@@ -9,20 +9,19 @@ Feature: an user shares resources using ScienceMesh application
And user "Brian" has been created with default attributes
@issue-9534
Scenario Outline: local user shares resources to federation user
Scenario: local user shares a folder to federation user
Given using server "LOCAL"
And "Alice" has created the federation share invitation
And using server "REMOTE"
And "Brian" has accepted invitation
And using server "LOCAL"
And user "Alice" has created folder "folderToShare"
And user "Alice" has uploaded file with content "ocm test" to "/textfile.txt"
When user "Alice" sends the following resource share invitation to federated user using the Graph API:
| resource | <resource> |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
| resource | folderToShare |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
Then the HTTP status code should be "200"
When using server "REMOTE"
And user "Brian" lists the shares shared with him without retry using the Graph API
@@ -31,9 +30,7 @@ Feature: an user shares resources using ScienceMesh application
"""
{
"type": "object",
"required": [
"value"
],
"required": ["value"],
"properties": {
"value": {
"type": "array",
@@ -45,48 +42,326 @@ Feature: an user shares resources using ScienceMesh application
"@UI.Hidden",
"@client.synchronize",
"createdBy",
"name"
"eTag",
"folder",
"id",
"lastModifiedDateTime",
"name",
"parentReference",
"remoteItem"
],
"properties": {
"@UI.Hidden": {
"type": "boolean",
"enum": [
false
]
},
"@client.synchronize": {
"type": "boolean",
"enum": [
false
]
},
"@UI.Hidden": { "const": false },
"@client.synchronize": { "const": false },
"createdBy": {
"type": "object",
"required": [
"user"
],
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": [
"displayName",
"id"
],
"required": ["displayName", "id", "@libre.graph.userType"],
"properties": {
"displayName": {
"type": "string",
"const": "Alice Hansen"
},
"id": {
"type": "string",
"pattern": "^%federated_user_id_pattern%$"
}
"displayName": { "const": "Alice Hansen" },
"id": { "pattern": "^%federated_user_id_pattern%$" },
"@libre.graph.userType": { "const": "Federated" }
}
}
}
},
"name": {
"const": "<resource>"
"eTag": { "pattern": "%etag_pattern%" },
"folder": { "const": {} },
"id": { "pattern": "^%file_id_pattern%$" },
"name": { "const": "folderToShare" },
"parentReference": {
"type": "object",
"required": ["driveId", "driveType", "id"],
"properties": {
"driveId": { "pattern": "^%space_id_pattern%$" },
"driveType": { "const": "virtual" },
"id": { "pattern": "^%file_id_pattern%$" }
}
},
"remoteItem": {
"type": "object",
"required": [
"createdBy",
"eTag",
"folder",
"id",
"lastModifiedDateTime",
"name",
"permissions"
],
"properties": {
"createdBy": {
"type": "object",
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": ["id", "displayName", "@libre.graph.userType"],
"properties": {
"id": { "pattern": "^%federated_user_id_pattern%$" },
"displayName": { "const": "Alice Hansen" },
"@libre.graph.userType": { "const": "Federated" }
}
}
}
},
"eTag": { "pattern": "%etag_pattern%" },
"folder": { "const": {} },
"id": { "pattern": "^%federated_file_id_pattern%$" },
"name": { "const": "folderToShare" },
"permissions": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "object",
"required": [
"createdDateTime",
"grantedToV2",
"id",
"invitation",
"roles"
],
"properties": {
"grantedToV2": {
"type": "object",
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": ["displayName", "id", "@libre.graph.userType"],
"properties": {
"displayName": { "const": "Brian Murphy" },
"id": { "pattern": "^%user_id_pattern%$" },
"@libre.graph.userType": { "const": "Member" }
}
}
}
},
"id": { "pattern": "^%uuidv4_pattern%$" },
"invitation": {
"type": "object",
"required": ["invitedBy"],
"properties": {
"invitedBy": {
"type": "object",
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": ["displayName", "id", "@libre.graph.userType"],
"properties": {
"displayName": { "const": "Alice Hansen" },
"id": { "pattern": "^%federated_user_id_pattern%$" },
"@libre.graph.userType": { "const": "Federated" }
}
}
}
}
}
},
"roles": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"pattern": "^%role_id_pattern%$"
}
}
}
}
}
}
}
}
}
}
}
}
"""
@issue-9534
Scenario: local user shares a file to federation user
Given using server "LOCAL"
And "Alice" has created the federation share invitation
And using server "REMOTE"
And "Brian" has accepted invitation
And using server "LOCAL"
And user "Alice" has uploaded file with content "ocm test" to "textfile.txt"
When user "Alice" sends the following resource share invitation to federated user using the Graph API:
| resource | textfile.txt |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
Then the HTTP status code should be "200"
When using server "REMOTE"
And user "Brian" lists the shares shared with him without retry using the Graph API
Then the HTTP status code should be "200"
And the JSON data of the response should match
"""
{
"type": "object",
"required": ["value"],
"properties": {
"value": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "object",
"required": [
"@UI.Hidden",
"@client.synchronize",
"createdBy",
"eTag",
"file",
"id",
"lastModifiedDateTime",
"name",
"parentReference",
"remoteItem"
],
"properties": {
"@UI.Hidden": { "const": false },
"@client.synchronize": { "const": false },
"createdBy": {
"type": "object",
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": ["displayName", "id", "@libre.graph.userType"],
"properties": {
"displayName": { "const": "Alice Hansen" },
"id": { "pattern": "^%federated_user_id_pattern%$" },
"@libre.graph.userType": { "const": "Federated" }
}
}
}
},
"eTag": { "pattern": "%etag_pattern%" },
"file": {
"type": "object",
"required": ["mimeType"],
"properties": {
"mimeType": { "const": "text/plain" }
}
},
"id": { "pattern": "^%file_id_pattern%$" },
"name": { "const": "textfile.txt" },
"parentReference": {
"type": "object",
"required": ["driveId", "driveType", "id"],
"properties": {
"driveId": { "pattern": "^%space_id_pattern%$" },
"driveType": { "const": "virtual" },
"id": { "pattern": "^%file_id_pattern%$" }
}
},
"remoteItem": {
"type": "object",
"required": [
"createdBy",
"eTag",
"file",
"id",
"lastModifiedDateTime",
"name",
"permissions"
],
"properties": {
"createdBy": {
"type": "object",
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": ["id", "displayName", "@libre.graph.userType"],
"properties": {
"id": { "pattern": "^%federated_user_id_pattern%$" },
"displayName": { "const": "Alice Hansen" },
"@libre.graph.userType": { "const": "Federated" }
}
}
}
},
"eTag": { "pattern": "%etag_pattern%" },
"file": {
"type": "object",
"required": ["mimeType"],
"properties": {
"mimeType": { "const": "text/plain" }
}
},
"id": { "pattern": "^%federated_file_id_pattern%$" },
"name": { "const": "textfile.txt" },
"permissions": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "object",
"required": [
"createdDateTime",
"grantedToV2",
"id",
"invitation",
"roles"
],
"properties": {
"grantedToV2": {
"type": "object",
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": ["displayName", "id", "@libre.graph.userType"],
"properties": {
"displayName": { "const": "Brian Murphy" },
"id": { "pattern": "^%user_id_pattern%$" },
"@libre.graph.userType": { "const": "Member" }
}
}
}
},
"id": { "pattern": "^%uuidv4_pattern%$" },
"invitation": {
"type": "object",
"required": ["invitedBy"],
"properties": {
"invitedBy": {
"type": "object",
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": ["displayName", "id", "@libre.graph.userType"],
"properties": {
"displayName": { "const": "Alice Hansen" },
"id": { "pattern": "^%federated_user_id_pattern%$" },
"@libre.graph.userType": { "const": "Federated" }
}
}
}
}
}
},
"roles": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"pattern": "^%role_id_pattern%$"
}
}
}
}
}
}
}
}
}
@@ -94,13 +369,9 @@ Feature: an user shares resources using ScienceMesh application
}
}
"""
Examples:
| resource |
| folderToShare |
| textfile.txt |
Scenario: local user shares resources from project space to federation user
Scenario: local user shares a folder from project space to federation user
Given using server "LOCAL"
And "Alice" has created the federation share invitation
And using server "REMOTE"
@@ -124,7 +395,7 @@ Feature: an user shares resources using ScienceMesh application
"""
{
"type": "object",
"required": [ "value" ],
"required": ["value"],
"properties": {
"value": {
"type": "array",
@@ -136,121 +407,139 @@ Feature: an user shares resources using ScienceMesh application
"@UI.Hidden",
"@client.synchronize",
"createdBy",
"name"
"eTag",
"folder",
"id",
"lastModifiedDateTime",
"name",
"parentReference",
"remoteItem"
],
"properties": {
"@UI.Hidden": {
"const": false
},
"@client.synchronize": {
"const": false
},
"@UI.Hidden": { "const": false },
"@client.synchronize": { "const": false },
"createdBy": {
"type": "object",
"required": [ "user" ],
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": [ "displayName", "id" ],
"required": ["displayName", "id", "@libre.graph.userType"],
"properties": {
"displayName": {
"const": "Alice Hansen"
},
"id": {
"type": "string",
"pattern": "^%federated_user_id_pattern%$"
}
"displayName": { "const": "Alice Hansen" },
"id": { "pattern": "^%federated_user_id_pattern%$" },
"@libre.graph.userType": { "const": "Federated" }
}
}
}
},
"name": {
"const": "folderToShare"
}
}
}
}
}
}
"""
@issue-9534
Scenario Outline: federation user shares resource to local user after accepting invitation
Given using server "LOCAL"
And "Alice" has created the federation share invitation
And using server "REMOTE"
And "Brian" has accepted invitation
And user "Brian" has created folder "folderToShare"
And user "Brian" has uploaded file with content "ocm test" to "/textfile.txt"
When user "Brian" sends the following resource share invitation to federated user using the Graph API:
| resource | <resource> |
| space | Personal |
| sharee | Alice |
| shareType | user |
| permissionsRole | Viewer |
Then the HTTP status code should be "200"
When using server "LOCAL"
And user "Alice" lists the shares shared with her without retry using the Graph API
Then the HTTP status code should be "200"
And the JSON data of the response should match
"""
{
"type": "object",
"required": [
"value"
],
"properties": {
"value": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "object",
"required": [
"@UI.Hidden",
"@client.synchronize",
"createdBy",
"name"
],
"properties": {
"@UI.Hidden": {
"type": "boolean",
"enum": [
false
]
"eTag": { "pattern": "%etag_pattern%" },
"folder": { "const": {} },
"id": { "pattern": "^%file_id_pattern%$" },
"name": { "const": "folderToShare" },
"parentReference": {
"type": "object",
"required": ["driveId", "driveType", "id"],
"properties": {
"driveId": { "pattern": "^%space_id_pattern%$" },
"driveType": { "const": "virtual" },
"id": { "pattern": "^%file_id_pattern%$" }
}
},
"@client.synchronize": {
"type": "boolean",
"enum": [
false
]
},
"createdBy": {
"remoteItem": {
"type": "object",
"required": [
"user"
"createdBy",
"eTag",
"folder",
"id",
"lastModifiedDateTime",
"name",
"permissions"
],
"properties": {
"user": {
"createdBy": {
"type": "object",
"required": [
"displayName",
"id"
],
"required": ["user"],
"properties": {
"displayName": {
"const": "Brian Murphy"
},
"id": {
"type": "string",
"pattern": "^%federated_user_id_pattern%$"
"user": {
"type": "object",
"required": ["id", "displayName", "@libre.graph.userType"],
"properties": {
"id": { "pattern": "^%federated_user_id_pattern%$" },
"displayName": { "const": "Alice Hansen" },
"@libre.graph.userType": { "const": "Federated" }
}
}
}
},
"eTag": { "pattern": "%etag_pattern%" },
"folder": { "const": {} },
"id": { "pattern": "^%federated_file_id_pattern%$" },
"name": { "const": "folderToShare" },
"permissions": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "object",
"required": [
"createdDateTime",
"grantedToV2",
"id",
"invitation",
"roles"
],
"properties": {
"grantedToV2": {
"type": "object",
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": ["displayName", "id", "@libre.graph.userType"],
"properties": {
"displayName": { "const": "Brian Murphy" },
"id": { "pattern": "^%user_id_pattern%$" },
"@libre.graph.userType": { "const": "Member" }
}
}
}
},
"id": { "pattern": "^%uuidv4_pattern%$" },
"invitation": {
"type": "object",
"required": ["invitedBy"],
"properties": {
"invitedBy": {
"type": "object",
"required": ["user"],
"properties": {
"user": {
"type": "object",
"required": ["displayName", "id", "@libre.graph.userType"],
"properties": {
"displayName": { "const": "Alice Hansen" },
"id": { "pattern": "^%federated_user_id_pattern%$" },
"@libre.graph.userType": { "const": "Federated" }
}
}
}
}
}
},
"roles": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"pattern": "^%role_id_pattern%$"
}
}
}
}
}
}
},
"name": {
"const": "<resource>"
}
}
}
@@ -258,10 +547,6 @@ Feature: an user shares resources using ScienceMesh application
}
}
"""
Examples:
| resource |
| folderToShare |
| textfile.txt |
@issue-10051
Scenario Outline: try to add federated user as a member of a project space (permissions endpoint)
@@ -399,6 +684,8 @@ Feature: an user shares resources using ScienceMesh application
"parentReference",
"permissions",
"name",
"eTag",
"file",
"size"
],
"properties": {
@@ -489,6 +776,19 @@ Feature: an user shares resources using ScienceMesh application
"name": {
"const": "textfile.txt"
},
"eTag": {
"type": "string",
"pattern": "%etag_pattern%"
},
"file": {
"type": "object",
"required": ["mimeType"],
"properties": {
"mimeType": {
"const": "text/plain"
}
}
},
"size": {
"const": 8
}
@@ -691,9 +991,7 @@ Feature: an user shares resources using ScienceMesh application
},
"file": {
"type": "object",
"required": [
"mimeType"
],
"required": ["mimeType"],
"properties": {
"mimeType": {
"const": "image/jpeg"
@@ -715,9 +1013,7 @@ Feature: an user shares resources using ScienceMesh application
"properties": {
"file": {
"type": "object",
"required": [
"mimeType"
],
"required": ["mimeType"],
"properties": {
"mimeType": {
"const": "image/jpeg"
@@ -816,25 +1112,25 @@ Feature: an user shares resources using ScienceMesh application
And for user "Alice" the content of the file "textfile.txt" of the space "Personal" should be "this is a new content"
@issue-10488
Scenario Outline: local user shares a folder copied from an already shared folder to federation user
Scenario: local user shares a folder copied from an already shared folder to federation user
Given using server "REMOTE"
And "Brian" has created the federation share invitation
And using server "LOCAL"
And "Alice" has accepted invitation
And user "Alice" has created folder "folderToShare"
And user "Alice" has sent the following resource share invitation to federated user:
| resource | folderToShare |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | <permissions-role-1> |
| resource | folderToShare |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Editor |
And user "Alice" has copied folder "folderToShare" to "folderToShareCopy"
And user "Alice" has sent the following resource share invitation to federated user:
| resource | folderToShareCopy |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | <permissions-role-2> |
| resource | folderToShareCopy |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
And using server "REMOTE"
When user "Brian" lists the shares shared with him using the Graph API
Then the HTTP status code should be "200"
@@ -870,6 +1166,21 @@ Feature: an user shares resources using ScienceMesh application
"properties": {
"name": {
"const": "folderToShare"
},
"remoteItem": {
"type": "object",
"required": ["permissions"],
"properties": {
"permissions": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "object",
"required": ["@libre.graph.permissions.actions"]
}
}
}
}
}
},
@@ -890,6 +1201,25 @@ Feature: an user shares resources using ScienceMesh application
"properties": {
"name": {
"const": "folderToShareCopy"
},
"remoteItem": {
"type": "object",
"required": ["permissions"],
"properties": {
"permissions": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "object",
"properties": {
"@libre.graph.permissions.actions": {
"type": "null"
}
}
}
}
}
}
}
}
@@ -899,14 +1229,3 @@ Feature: an user shares resources using ScienceMesh application
}
}
"""
Examples:
| permissions-role-1 | permissions-role-2 |
| Editor | Viewer |
| Editor | Uploader |
| Editor | Editor |
| Uploader | Editor |
| Uploader | Viewer |
| Uploader | Uploader |
| Viewer | Uploader |
| Viewer | Editor |
| Viewer | Viewer |
@@ -165,7 +165,7 @@ Feature: create files and folder
| spaces | "'single'.txt" |
| spaces | '"double".txt' |
@issue-10339
@issue-10339 @issue-9568
Scenario Outline: try to create file with '.', '..' and 'empty'
Given using <dav-path-version> DAV path
When user "Alice" uploads file with content "some text" to "<file-name>" using the WebDAV API
@@ -185,7 +185,7 @@ Feature: create files and folder
| spaces | /../lorem | 400 |
| spaces | | 400 |
@issue-10339
@issue-10339 @issue-9568
Scenario Outline: try to create folder with '.', '..' and 'empty'
Given using <dav-path-version> DAV path
When user "Alice" creates folder "<folder-name>" using the WebDAV API