UPSTREAM BASELINE: nextcloud/spreed v22.0.12 (без изменений)
Type checking / changes (push) Has been cancelled
Type checking / test (push) Has been cancelled
Type checking / typescript-summary (push) Has been cancelled
Node tests / changes (push) Has been cancelled
Node tests / test (push) Has been cancelled
Node tests / test-summary (push) Has been cancelled

Источник: https://github.com/nextcloud/spreed/archive/refs/tags/v22.0.12.tar.gz
С этого коммита ветка официального Nextcloud Talk отрезана (решение владельца 2026-07-06).
Все дальнейшие изменения — только наши; версии релизов: 22.0.12-f7.N.
This commit is contained in:
2026-07-06 14:07:50 +00:00
commit 01acfa3b40
1716 changed files with 613013 additions and 0 deletions
@@ -0,0 +1,14 @@
Feature: sharing-4/settings
Background:
Given user "participant1" exists
Given user "participant2" exists
Scenario: Do not allow setting a shared folder as attachment_folder
Given user "participant1" creates folder "/test"
When user "participant1" sets setting "attachment_folder" to "/test" with 200 (v1)
Then user "participant1" has capability "spreed=>config=>attachments=>folder" set to "/test"
Given user "participant2" creates folder "/test-participant2"
Given user "participant2" shares "/test-participant2" with user "participant1" with OCS 100
When user "participant1" sets setting "attachment_folder" to "/test-participant2" with 400 (v1)
Then user "participant1" has capability "spreed=>config=>attachments=>folder" set to "/test"
@@ -0,0 +1,278 @@
Feature: sharees
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
And group "attendees1" exists
And user "participant2" is member of group "attendees1"
Scenario: search empty name
Given user "participant1" creates room "unnamed own group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" creates room "own group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "own group room" to "Group room" with 200 (v4)
And user "participant1" creates room "own one-to-one room" (v4)
| roomType | 1 |
| invite | participant2 |
When user "participant1" gets sharees for
| search | |
Then "exact rooms" sharees returned is empty
And "rooms" sharees returned is empty
Scenario: search one-to-one room
Given user "participant1" creates room "one-to-one room" (v4)
| roomType | 1 |
| invite | participant2 |
When user "participant1" gets sharees for
| search | participant2 |
Then "exact rooms" sharees returned is empty
And "rooms" sharees returned are
| participant2-displayname | one-to-one room |
Scenario: search own group room with no matches
Given user "participant1" creates room "own group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "own group room" to "Group room" with 200 (v4)
When user "participant1" gets sharees for
| search | unmatched search term |
Then "exact rooms" sharees returned is empty
And "rooms" sharees returned is empty
Scenario: search own group room with single match
Given user "participant1" creates room "own group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "own group room" to "Group room" with 200 (v4)
When user "participant1" gets sharees for
| search | room |
Then "exact rooms" sharees returned is empty
And "rooms" sharees returned are
| Group room | own group room |
Scenario: search own group room with single exact match
Given user "participant1" creates room "own group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "own group room" to "Group room" with 200 (v4)
When user "participant1" gets sharees for
| search | group room |
Then "exact rooms" sharees returned are
| Group room | own group room |
And "rooms" sharees returned is empty
Scenario: search own group room with several matches
Given user "participant1" creates room "own group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "own group room" to "Group room" with 200 (v4)
And user "participant1" creates room "another own group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "another own group room" to "Another group room" with 200 (v4)
When user "participant1" gets sharees for
| search | group room |
Then "exact rooms" sharees returned are
| Group room | own group room |
And "rooms" sharees returned are
| Another group room | another own group room |
Scenario: search group room not invited to
Given user "participant1" creates room "group room not invited to" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "group room not invited to" to "Group room" with 200 (v4)
And user "participant2" creates room "another group room not invited to" (v4)
| roomType | 2 |
| roomName | room |
And user "participant2" renames room "another group room not invited to" to "Another group room" with 200 (v4)
When user "participant3" gets sharees for
| search | group room |
Then "exact rooms" sharees returned is empty
And "rooms" sharees returned is empty
Scenario: search group room invited to with single match
Given user "participant1" creates room "group room invited to" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "group room invited to" to "Group room" with 200 (v4)
And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4)
When user "participant2" gets sharees for
| search | room |
Then "exact rooms" sharees returned is empty
And "rooms" sharees returned are
| Group room | group room invited to |
Scenario: search group room invited to with single exact match
Given user "participant1" creates room "group room invited to" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "group room invited to" to "Group room" with 200 (v4)
And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4)
When user "participant2" gets sharees for
| search | group room |
Then "exact rooms" sharees returned are
| Group room | group room invited to |
And "rooms" sharees returned is empty
Scenario: search group room invited to with several matches
Given user "participant1" creates room "group room invited to" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "group room invited to" to "Group room" with 200 (v4)
And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4)
And user "participant1" creates room "another group room invited to" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "another group room invited to" to "Another group room" with 200 (v4)
And user "participant1" adds user "participant2" to room "another group room invited to" with 200 (v4)
When user "participant2" gets sharees for
| search | group room |
Then "exact rooms" sharees returned are
| Group room | group room invited to |
And "rooms" sharees returned are
| Another group room | another group room invited to |
Scenario: search group room invited to as member of a group with single match
Given user "participant1" creates room "group room invited to as member of a group" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" renames room "group room invited to as member of a group" to "Group room" with 200 (v4)
When user "participant2" gets sharees for
| search | room |
Then "exact rooms" sharees returned is empty
And "rooms" sharees returned are
| Group room | group room invited to as member of a group |
Scenario: search group room invited to as member of a group with single exact match
Given user "participant1" creates room "group room invited to as member of a group" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" renames room "group room invited to as member of a group" to "Group room" with 200 (v4)
When user "participant2" gets sharees for
| search | group room |
Then "exact rooms" sharees returned are
| Group room | group room invited to as member of a group |
And "rooms" sharees returned is empty
Scenario: search group room invited to as member of a group with several matches
Given user "participant1" creates room "group room invited to as member of a group" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" renames room "group room invited to as member of a group" to "Group room" with 200 (v4)
And user "participant1" creates room "another group room invited to as member of a group" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" renames room "another group room invited to as member of a group" to "Another group room" with 200 (v4)
When user "participant2" gets sharees for
| search | group room |
Then "exact rooms" sharees returned are
| Group room | group room invited to as member of a group |
And "rooms" sharees returned are
| Another group room | another group room invited to as member of a group |
Scenario: search public room not joined to
Given user "participant1" creates room "public room not joined to" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" renames room "public room not joined to" to "Public room" with 200 (v4)
And user "participant2" creates room "another public room not joined to" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" renames room "another public room not joined to" to "Another public room" with 200 (v4)
When user "participant3" gets sharees for
| search | public room |
Then "exact rooms" sharees returned is empty
And "rooms" sharees returned is empty
Scenario: search public room self joined to with single match
Given user "participant1" creates room "public room self joined to" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" renames room "public room self joined to" to "Public room" with 200 (v4)
And user "participant2" joins room "public room self joined to" with 200 (v4)
When user "participant2" gets sharees for
| search | room |
Then "exact rooms" sharees returned is empty
And "rooms" sharees returned are
| Public room | public room self joined to |
Scenario: search public room self joined to with single exact match
Given user "participant1" creates room "public room self joined to" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" renames room "public room self joined to" to "Public room" with 200 (v4)
And user "participant2" joins room "public room self joined to" with 200 (v4)
When user "participant2" gets sharees for
| search | public room |
Then "exact rooms" sharees returned are
| Public room | public room self joined to |
And "rooms" sharees returned is empty
Scenario: search public room self joined to with several matches
Given user "participant1" creates room "public room self joined to" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" renames room "public room self joined to" to "Public room" with 200 (v4)
And user "participant2" joins room "public room self joined to" with 200 (v4)
And user "participant1" creates room "another public room self joined to" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" renames room "another public room self joined to" to "Another public room" with 200 (v4)
And user "participant2" joins room "another public room self joined to" with 200 (v4)
When user "participant2" gets sharees for
| search | public room |
Then "exact rooms" sharees returned are
| Public room | public room self joined to |
And "rooms" sharees returned are
| Another public room | another public room self joined to |
Scenario: search room with several matches
Given user "participant1" creates room "group room invited to as member of a group" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" renames room "group room invited to as member of a group" to "Room" with 200 (v4)
And user "participant1" creates room "group room invited to" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "group room invited to" to "Group room" with 200 (v4)
And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4)
And user "participant1" creates room "group room not invited to" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "group room not invited to" to "Group room not invited to" with 200 (v4)
And user "participant2" creates room "case insensitive match" (v4)
| roomType | 2 |
| roomName | room |
And user "participant2" creates room "own group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant2" renames room "own group room" to "Own group room" with 200 (v4)
And user "participant1" creates room "one-to-one room invited to" (v4)
| roomType | 1 |
| invite | participant2 |
And user "participant2" creates room "own public room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" renames room "own public room" to "Own public room" with 200 (v4)
When user "participant2" gets sharees for
| search | room |
Then "exact rooms" sharees returned are
| Room | group room invited to as member of a group |
| room | case insensitive match |
And "rooms" sharees returned are
| Group room | group room invited to |
| Own group room | own group room |
| Own public room | own public room |
@@ -0,0 +1,144 @@
Feature: transfer-ownership
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
Scenario: transfer ownership of a file shared with a room to a user in the room
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "group room" to "Group room" with 200 (v4)
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
And user "participant1" adds user "participant3" to room "group room" with 200 (v4)
And user "participant1" shares "welcome.txt" with room "group room" with OCS 100
When transfering ownership from "participant1" to "participant2"
Then user "participant1" gets last share
And share is returned with
| uid_owner | participant2 |
| displayname_owner | participant2-displayname |
| path | /Talk/welcome.txt |
| item_type | file |
| mimetype | text/plain |
| storage_id | shared::/Talk/welcome.txt |
| file_target | /Talk/welcome.txt |
| share_with | group room |
| share_with_displayname | Group room |
And user "participant2" gets last share
And share is returned with
| uid_owner | participant2 |
| displayname_owner | participant2-displayname |
| path | REGEXP /\/Transferred from participant1-displayname on .*\/welcome.txt/ |
| item_type | file |
| mimetype | text/plain |
| storage_id | home::participant2 |
| file_target | /Talk/welcome.txt |
| share_with | group room |
| share_with_displayname | Group room |
And user "participant3" gets last share
And share is returned with
| uid_owner | participant2 |
| displayname_owner | participant2-displayname |
| path | /Talk/welcome.txt |
| item_type | file |
| mimetype | text/plain |
| storage_id | shared::/Talk/welcome.txt |
| file_target | /Talk/welcome.txt |
| share_with | group room |
| share_with_displayname | Group room |
Scenario: transfer ownership of a file reshared with a room to a user in the room
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "group room" to "Group room" with 200 (v4)
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
And user "participant1" adds user "participant3" to room "group room" with 200 (v4)
And user "participant3" shares "welcome.txt" with user "participant1" with OCS 100
And user "participant1" accepts last share
And user "participant1" shares "welcome (2).txt" with room "group room" with OCS 100
When transfering ownership from "participant1" to "participant2"
Then user "participant1" gets last share
And share is returned with
| uid_owner | participant2 |
| displayname_owner | participant2-displayname |
| uid_file_owner | participant3 |
| displayname_file_owner | participant3-displayname |
| path | /Talk/welcome (2).txt |
| item_type | file |
| mimetype | text/plain |
| storage_id | shared::/Talk/welcome (2).txt |
| file_target | /Talk/welcome (2).txt |
| share_with | group room |
| share_with_displayname | Group room |
And user "participant2" gets last share
And share is returned with
| uid_owner | participant2 |
| displayname_owner | participant2-displayname |
| uid_file_owner | participant3 |
| displayname_file_owner | participant3-displayname |
| path | /Transferred from participant1-displayname on {{DATE AND TIME}}/welcome (2).txt |
| item_type | file |
| mimetype | text/plain |
| storage_id | shared::/Transferred from participant1-displayname on {{DATE AND TIME}}/welcome (2).txt |
| file_target | /Talk/welcome (2).txt |
| share_with | group room |
| share_with_displayname | Group room |
And user "participant3" gets last share
And share is returned with
| uid_owner | participant2 |
| displayname_owner | participant2-displayname |
| uid_file_owner | participant3 |
| displayname_file_owner | participant3-displayname |
| path | /welcome.txt |
| item_type | file |
| mimetype | text/plain |
| storage_id | home::participant3 |
| file_target | /{TALK_PLACEHOLDER}/welcome (2).txt |
| share_with | group room |
| share_with_displayname | Group room |
# This is a special case in which even if the (now) sharer is not in a room
# the room share is valid and other participants can access that share.
Scenario: transfer ownership of a file shared with a room to a user not in the room
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" renames room "group room" to "Group room" with 200 (v4)
And user "participant1" adds user "participant3" to room "group room" with 200 (v4)
And user "participant1" shares "welcome.txt" with room "group room" with OCS 100
When transfering ownership from "participant1" to "participant2"
Then user "participant1" gets last share
And share is returned with
| uid_owner | participant2 |
| displayname_owner | participant2-displayname |
| path | /Talk/welcome.txt |
| item_type | file |
| mimetype | text/plain |
| storage_id | shared::/Talk/welcome.txt |
| file_target | /Talk/welcome.txt |
| share_with | group room |
| share_with_displayname | Group room |
And user "participant2" gets last share
And share is returned with
| uid_owner | participant2 |
| displayname_owner | participant2-displayname |
| path | REGEXP /\/Transferred from participant1-displayname on .*\/welcome.txt/ |
| item_type | file |
| mimetype | text/plain |
| storage_id | home::participant2 |
| file_target | /{TALK_PLACEHOLDER}/welcome.txt |
| share_with | private_conversation |
| share_with_displayname | Private conversation |
And user "participant3" gets last share
And share is returned with
| uid_owner | participant2 |
| displayname_owner | participant2-displayname |
| path | /Talk/welcome.txt |
| item_type | file |
| mimetype | text/plain |
| storage_id | shared::/Talk/welcome.txt |
| file_target | /Talk/welcome.txt |
| share_with | group room |
| share_with_displayname | Group room |
File diff suppressed because it is too large Load Diff