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,220 @@
Feature: chat-2/reply
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: user can reply to own message
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" sends message "Message 1" to room "group room" with 201
When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201
Then user "participant1" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
And user "participant2" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
Scenario: user can reply to other's messages
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" sends message "Message 1" to room "group room" with 201
When user "participant2" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201
Then user "participant1" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
And user "participant2" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
Scenario: several users can reply to the same message several times
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" sends message "Message 1" to room "group room" with 201
When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201
And user "participant2" sends reply "Message 1-2" on message "Message 1" to room "group room" with 201
And user "participant1" sends reply "Message 1-3" on message "Message 1" to room "group room" with 201
And user "participant2" sends reply "Message 1-4" on message "Message 1" to room "group room" with 201
Then user "participant1" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant2 | participant2-displayname | Message 1-4 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1-3 | [] | Message 1 |
| group room | users | participant2 | participant2-displayname | Message 1-2 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
And user "participant2" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant2 | participant2-displayname | Message 1-4 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1-3 | [] | Message 1 |
| group room | users | participant2 | participant2-displayname | Message 1-2 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
Scenario: user can reply to shared file messages
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" shares "welcome.txt" with room "group room"
# The messages need to be got so the file message is added to the list of
# known messages to reply to.
# The file message parameters are not relevant for this test and are quite
# large, so they are simply ignored.
And user "participant1" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant1 | participant1-displayname | {file} | "IGNORE" | |
And user "participant2" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant1 | participant1-displayname | {file} | "IGNORE" | |
When user "participant1" sends reply "Message X-1" on message "{file}" to room "group room" with 201
And user "participant2" sends reply "Message X-2" on message "{file}" to room "group room" with 201
Then user "participant1" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant2 | participant2-displayname | Message X-2 | [] | {file} |
| group room | users | participant1 | participant1-displayname | Message X-1 | [] | {file} |
| group room | users | participant1 | participant1-displayname | {file} | "IGNORE" | |
And user "participant2" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant2 | participant2-displayname | Message X-2 | [] | {file} |
| group room | users | participant1 | participant1-displayname | Message X-1 | [] | {file} |
| group room | users | participant1 | participant1-displayname | {file} | "IGNORE" | |
Scenario: user can not reply to system messages
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| invite | attendees1 |
# The system messages need to be got so they are added to the list of known
# messages to reply to.
And user "participant1" sees the following system messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| group room | users | participant1 | participant1-displayname | user_added |
| group room | users | participant1 | participant1-displayname | group_added |
| group room | users | participant1 | participant1-displayname | conversation_created |
When user "participant1" sends reply "Message X-1" on message "conversation_created" to room "group room" with 400
Then user "participant1" sees the following messages in room "group room" with 200
And user "participant2" sees the following messages in room "group room" with 200
Scenario: user can reply to own replies
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201
When user "participant1" sends reply "Message 1-1-1" on message "Message 1-1" to room "group room" with 201
Then user "participant1" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 |
| group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
And user "participant2" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 |
| group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
Scenario: user can reply to other's replies
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant2" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201
When user "participant1" sends reply "Message 1-1-1" on message "Message 1-1" to room "group room" with 201
And user "participant2" sends reply "Message 1-1-1-1" on message "Message 1-1-1" to room "group room" with 201
Then user "participant1" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant2 | participant2-displayname | Message 1-1-1-1 | [] | Message 1-1-1 |
| group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 |
| group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
And user "participant2" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant2 | participant2-displayname | Message 1-1-1-1 | [] | Message 1-1-1 |
| group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 |
| group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
Scenario: several users can reply to the same reply several times
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant2" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201
When user "participant1" sends reply "Message 1-1-1" on message "Message 1-1" to room "group room" with 201
And user "participant2" sends reply "Message 1-1-2" on message "Message 1-1" to room "group room" with 201
And user "participant1" sends reply "Message 1-1-3" on message "Message 1-1" to room "group room" with 201
And user "participant2" sends reply "Message 1-1-4" on message "Message 1-1" to room "group room" with 201
Then user "participant1" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant2 | participant2-displayname | Message 1-1-4 | [] | Message 1-1 |
| group room | users | participant1 | participant1-displayname | Message 1-1-3 | [] | Message 1-1 |
| group room | users | participant2 | participant2-displayname | Message 1-1-2 | [] | Message 1-1 |
| group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 |
| group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
And user "participant2" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant2 | participant2-displayname | Message 1-1-4 | [] | Message 1-1 |
| group room | users | participant1 | participant1-displayname | Message 1-1-3 | [] | Message 1-1 |
| group room | users | participant2 | participant2-displayname | Message 1-1-2 | [] | Message 1-1 |
| group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 |
| group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
Scenario: getting parent and quote works
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant1" sends message "Message 2" to room "group room" with 201
And user "participant2" sends reply "Message 2-1" on message "Message 2" to room "group room" with 201
Then user "participant1" sees the following messages in room "group room" starting with "Message 1" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
| group room | users | participant1 | participant1-displayname | Message 2 | [] | |
| group room | users | participant2 | participant2-displayname | Message 2-1 | [] | Message 2 |
Then user "participant1" sees the following messages in room "group room" starting with "Message 2" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant1 | participant1-displayname | Message 2 | [] | |
| group room | users | participant2 | participant2-displayname | Message 2-1 | [] | Message 2 |
Scenario: user can not reply when not in the room
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" sends message "Message 1" to room "group room" with 201
When user "participant3" sends reply "Message 1-1" on message "Message 1" to room "group room" with 404
Then user "participant1" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| group room | users | participant1 | participant1-displayname | Message 1 | [] | |
And user "participant3" sees the following messages in room "group room" with 404
Scenario: user can not reply to a message from another room
Given user "participant1" creates room "group room1" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" creates room "group room2" (v4)
| roomType | 2 |
| invite | attendees1 |
And user "participant1" sends message "Message 1" to room "group room1" with 201
When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room2" with 400
Then user "participant1" sees the following messages in room "group room1" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| group room1 | users | participant1 | participant1-displayname | Message 1 | [] |
And user "participant1" sees the following messages in room "group room2" with 200
@@ -0,0 +1,62 @@
Feature: chat-2/rich-messages
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
Given user "participant3a" exists
Scenario: message without enrichable references has empty parameters
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" sends message "Message without enrichable references" to room "public room" with 201
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant1 | participant1-displayname | Message without enrichable references | [] |
Scenario: message with mention to valid user has mention parameter
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" sends message "Mention to @participant2" to room "public room" with 201
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant1 | participant1-displayname | Mention to {mention-user1} | {"mention-user1":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"}} |
Scenario: message with mention to invalid user has mention parameter
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" sends message "Mention to @unknownUser" to room "public room" with 201
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant1 | participant1-displayname | Mention to @unknownUser | [] |
Scenario: message with duplicated mention has single mention parameter
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" sends message "Mention to @participant2 and @participant2 again" to room "public room" with 201
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant1 | participant1-displayname | Mention to {mention-user1} and {mention-user1} again | {"mention-user1":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"}} |
Scenario: message with mentions to several users has mention parameters
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" sends message "Mention to @participant2, @unknownUser, @participant2 again and @participant3" to room "public room" with 201
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant1 | participant1-displayname | Mention to {mention-user1}, @unknownUser, {mention-user1} again and {mention-user2} | {"mention-user1":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"},"mention-user2":{"type":"user","id":"participant3","name":"participant3-displayname","mention-id":"participant3"}} |
Scenario: message with mentions of subname users (uid1 is fully part of uid2)
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" sends message "Mention to @participant3 and @participant3a" to room "public room" with 201
When user "participant1" sends message "Mention to @participant3a and @participant3" to room "public room" with 201
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant1 | participant1-displayname | Mention to {mention-user1} and {mention-user2} | {"mention-user1":{"type":"user","id":"participant3a","name":"participant3a-displayname","mention-id":"participant3a"},"mention-user2":{"type":"user","id":"participant3","name":"participant3-displayname","mention-id":"participant3"}} |
| public room | users | participant1 | participant1-displayname | Mention to {mention-user2} and {mention-user1} | {"mention-user1":{"type":"user","id":"participant3a","name":"participant3a-displayname","mention-id":"participant3a"},"mention-user2":{"type":"user","id":"participant3","name":"participant3-displayname","mention-id":"participant3"}} |
@@ -0,0 +1,79 @@
Feature: chat-2/rich-object-share
Background:
Given user "participant1" exists
Given user "participant2" exists
Scenario: Share a rich object to a chat
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 201 (v1)
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant1 | participant1-displayname | {object} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"object":{"name":"Another room","call-type":"group","type":"call","id":"R4nd0mT0k3n","icon-url":"{VALIDATE_ICON_URL_PATTERN}"}} |
Scenario: Can not share without chat permission
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" adds user "participant2" to room "public room" with 200 (v4)
# Removing chat permission only
Then user "participant1" sets permissions for "participant2" in room "public room" to "CSJLAVP" with 200 (v4)
When user "participant2" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 403 (v1)
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
Scenario: Delete a rich object from a chat
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 201 (v1)
And user "participant1" deletes message "shared::call::R4nd0mT0k3n" from room "public room" with 200
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| public room | users | participant1 | participant1-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} | |
Scenario: Can not delete without chat permission
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" adds user "participant2" to room "public room" with 200 (v4)
When user "participant2" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 201 (v1)
# Removing chat permission only
Then user "participant1" sets permissions for "participant2" in room "public room" to "CSJLAVP" with 200 (v4)
And user "participant2" deletes message "shared::call::R4nd0mT0k3n" from room "public room" with 403
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant2 | participant2-displayname | {object} | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"},"object":{"name":"Another room","call-type":"group","type":"call","id":"R4nd0mT0k3n","icon-url":"{VALIDATE_ICON_URL_PATTERN}"}} |
Scenario: Share an invalid rich object to a chat
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"MISSINGname":"Another room","call-type":"group"}' to room "public room" with 400 (v1)
Then user "participant1" sees the following messages in room "public room" with 200
Scenario: Share an invalid location to a chat
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" shares rich-object "geo-location" "https://nextcloud.com/" '{"name":"Location name"}' to room "public room" with 400 (v1)
Then user "participant1" sees the following messages in room "public room" with 200
Scenario: Get rich object and file shares for media tab
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
Then user "participant1" sees the following shared summarized overview in room "public room" with 200
When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 201 (v1)
Then user "participant1" sees the following shared other in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant1 | participant1-displayname | {object} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"object":{"name":"Another room","call-type":"group","type":"call","id":"R4nd0mT0k3n","icon-url":"{VALIDATE_ICON_URL_PATTERN}"}} |
When user "participant1" shares "welcome.txt" with room "public room" with OCS 100
Then user "participant1" sees the following shared file in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant1 | participant1-displayname | {file} | "IGNORE" |
And user "guest" joins room "public room" with 200 (v4)
Then user "guest" sees the following shared file in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | users | participant1 | participant1-displayname | {file} | "IGNORE" |
@@ -0,0 +1,63 @@
Feature: chat-2/search
Background:
Given user "participant1" exists
Given user "participant2" exists
Scenario: Can not search when not a participant
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" sends message "Message 1" to room "room" with 201
When user "participant2" searches for messages with "essa" in room "room" with 200
Scenario: Search for message when being a participant
Given user "participant1" creates room "room1" (v4)
| roomType | 3 |
| roomName | room1 |
Given user "participant1" creates room "room2" (v4)
| roomType | 3 |
| roomName | room2 |
And user "participant1" adds user "participant2" to room "room1" with 200 (v4)
And user "participant1" adds user "participant2" to room "room2" with 200 (v4)
And user "participant1" sends message "Message 1" to room "room1" with 201
And user "participant1" sends message "Message 2" to room "room2" with 201
And user "participant1" sends thread "Thread 1" with message "Thread 1" to room "room1" with 201
And user "participant2" sends reply "Thread 1-1" on thread "Thread 1" to room "room1" with 201
When user "participant1" shares "welcome.txt" with room "room1"
| talkMetaData | {"caption":"Message 3"} |
Then user "participant1" sees the following messages in room "room1" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| room1 | users | participant1 | participant1-displayname | Message 3 | "IGNORE" | |
| room1 | users | participant2 | participant2-displayname | Thread 1-1 | [] | Thread 1 |
| room1 | users | participant1 | participant1-displayname | Thread 1 | [] | |
| room1 | users | participant1 | participant1-displayname | Message 1 | [] | |
When user "participant2" searches for messages with "essa" in room "room1" with 200
| title | subline | attributes.conversation | attributes.messageId |
| participant1-displayname | Message 3 | room1 | Message 3 |
| participant1-displayname | Message 1 | room1 | Message 1 |
When user "participant2" searches for messages with "essa" in room "room2" with 200
| title | subline | attributes.conversation | attributes.messageId |
| participant1-displayname | Message 2 | room2 | Message 2 |
When user "participant2" searches for messages with "conversation:ROOM(room1) essa" in room "room1" with 200
| title | subline | attributes.conversation | attributes.messageId |
| participant1-displayname | Message 3 | room1 | Message 3 |
| participant1-displayname | Message 1 | room1 | Message 1 |
When user "participant2" searches for messages in other rooms with "conversation:ROOM(room1) essa" in room "room1" with 200
When user "participant2" searches for messages with "conversation:ROOM(room1) essa" in room "room2" with 200
When user "participant2" searches for messages in other rooms with "conversation:ROOM(room1) essa" in room "room2" with 200
| title | subline | attributes.conversation | attributes.messageId |
| participant1-displayname | Message 3 | room1 | Message 3 |
| participant1-displayname | Message 1 | room1 | Message 1 |
When user "participant2" searches for messages with "read" in room "room1" with 200
| title | subline | attributes.conversation | attributes.threadId | attributes.messageId |
| participant2-displayname | Thread 1-1 | room1 | Thread 1 | Thread 1-1 |
| participant1-displayname | Thread 1 | room1 | Thread 1 | Thread 1 |
Scenario: Can not search when being blocked by the lobby
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" sends message "Message 1" to room "room" with 201
And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4)
When user "participant2" searches for messages with "essa" in room "room" with 200
@@ -0,0 +1,23 @@
Feature: chat-4/summary
Background:
Given user "participant1" exists
Given user "participant2" exists
Scenario: Request a chat summary
Given Fake summary task provider is enabled
And the following spreed app config is set
| ai_unread_summary_batch_size | 3 |
And user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
When user "participant1" sends message "Message 1" to room "room" with 201
And user "participant1" sends message "Message 2" to room "room" with 201
And user "participant1" sends message "Message 3" to room "room" with 201
And user "participant1" sends message "Message 4" to room "room" with 201
And user "participant2" requests summary for "room" starting from "Message 1" with 201
| nextOffset | Message 3 |
And repeating run "OC\TaskProcessing\SynchronousBackgroundJob" background jobs
Then user "participant2" receives summary for "room" with 200
| contains | This is a fake summary |
And user "participant2" requests summary for "room" starting from "Message 3" with 201
@@ -0,0 +1,297 @@
Feature: chat-2/system-messages
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"
And user "participant3" is member of group "attendees1"
Scenario: Creating an empty room
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Rename a room
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
When user "participant1" renames room "room" to "system test" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | conversation_renamed |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Set a description
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
When user "participant1" sets description for room "room" to "New description" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | description_set |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Removes a description
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" sets description for room "room" to "New description" with 200 (v4)
When user "participant1" sets description for room "room" to "" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | description_removed |
| room | users | participant1 | participant1-displayname | description_set |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Toggle guests
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
When user "participant1" makes room "room" public with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | guests_allowed |
| room | users | participant1 | participant1-displayname | conversation_created |
When user "participant1" makes room "room" private with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | guests_disallowed |
| room | users | participant1 | participant1-displayname | guests_allowed |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Toggle password
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" sets password "123456" for room "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | password_set |
| room | users | participant1 | participant1-displayname | conversation_created |
When user "participant1" sets password "" for room "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | password_removed |
| room | users | participant1 | participant1-displayname | password_set |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Creating a group room
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| invite | attendees1 |
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | group_added |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Creating a one2one room
When user "participant1" creates room "room" (v4)
| roomType | 1 |
| invite | participant2 |
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Adding participant to room
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
When user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
And user "participant2" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Joining public room
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" joins room "room" with 200 (v4)
And user "participant2" joins room "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | conversation_created |
And user "participant2" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Joining room for file
Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100
And user "participant2" accepts last share
And user "participant1" gets the room for path "welcome.txt" with 200 (v1)
When user "participant1" joins room "file welcome.txt room" with 200 (v4)
And user "participant2" joins room "file welcome.txt room" with 200 (v4)
Then user "participant1" sees the following system messages in room "file welcome.txt room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| file welcome.txt room | users | participant2 | participant2-displayname | user_added |
| file welcome.txt room | users | participant1 | participant1-displayname | user_added |
| file welcome.txt room | users | participant1 | participant1-displayname | conversation_created |
And user "participant2" sees the following system messages in room "file welcome.txt room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| file welcome.txt room | users | participant2 | participant2-displayname | user_added |
| file welcome.txt room | users | participant1 | participant1-displayname | user_added |
| file welcome.txt room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Joining room for link share
Given user "participant1" shares "welcome.txt" by link with OCS 100
And user "participant1" gets the room for last share with 200 (v1)
# Users without access to a file shared by link need to log in (so further
# requests keep the same session) and get the room (so the share token is
# stored in the session) to be able to join it.
And user "participant2" logs in
And user "participant2" gets the room for last share with 200 (v1)
When user "participant1" joins room "file last share room" with 200 (v4)
And user "participant2" joins room "file last share room" with 200 (v4)
Then user "participant1" sees the following system messages in room "file last share room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| file last share room | users | participant1 | participant1-displayname | user_added |
| file last share room | users | participant1 | participant1-displayname | conversation_created |
And user "participant2" sees the following system messages in room "file last share room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| file last share room | users | participant1 | participant1-displayname | user_added |
| file last share room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Joining listed room
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" allows listing room "room" for "all" with 200 (v4)
When user "participant2" joins room "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant2 | participant2-displayname | user_added |
| room | users | participant1 | participant1-displayname | listable_all |
| room | users | participant1 | participant1-displayname | conversation_created |
And user "participant2" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant2 | participant2-displayname | user_added |
| room | users | participant1 | participant1-displayname | listable_all |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Ending call for all
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" adds user "participant3" to room "room" with 200 (v4)
And user "participant1" joins room "room" with 200 (v4)
And user "participant2" joins room "room" with 200 (v4)
And user "participant3" joins room "room" with 200 (v4)
And user "participant1" joins call "room" with 200 (v4)
And user "participant2" joins call "room" with 200 (v4)
And user "participant3" joins call "room" with 200 (v4)
When user "participant1" ends call "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | call_ended_everyone |
| room | users | participant3 | participant3-displayname | call_joined |
| room | users | participant2 | participant2-displayname | call_joined |
| room | users | participant1 | participant1-displayname | call_started |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
And user "participant2" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | call_ended_everyone |
| room | users | participant3 | participant3-displayname | call_joined |
| room | users | participant2 | participant2-displayname | call_joined |
| room | users | participant1 | participant1-displayname | call_started |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
And user "participant3" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | call_ended_everyone |
| room | users | participant3 | participant3-displayname | call_joined |
| room | users | participant2 | participant2-displayname | call_joined |
| room | users | participant1 | participant1-displayname | call_started |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Participant escalation
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | conversation_created |
When user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
When user "participant1" promotes "participant2" in room "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | moderator_promoted |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
When user "participant1" demotes "participant2" in room "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | moderator_demoted |
| room | users | participant1 | participant1-displayname | moderator_promoted |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
When user "participant1" removes "participant2" from room "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | user_removed |
| room | users | participant1 | participant1-displayname | moderator_demoted |
| room | users | participant1 | participant1-displayname | moderator_promoted |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Changing listable scope of room
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
When user "participant1" allows listing room "room" for "all" with 200 (v4)
And user "participant1" allows listing room "room" for "users" with 200 (v4)
And user "participant1" allows listing room "room" for "none" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | listable_none |
| room | users | participant1 | participant1-displayname | listable_users |
| room | users | participant1 | participant1-displayname | listable_all |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
And user "participant2" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | listable_none |
| room | users | participant1 | participant1-displayname | listable_users |
| room | users | participant1 | participant1-displayname | listable_all |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
Scenario: Locking a room
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
When user "participant1" locks room "room" with 200 (v4)
And user "participant1" unlocks room "room" with 200 (v4)
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | read_only_off |
| room | users | participant1 | participant1-displayname | read_only |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
And user "participant2" sees the following system messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| room | users | participant1 | participant1-displayname | read_only_off |
| room | users | participant1 | participant1-displayname | read_only |
| room | users | participant1 | participant1-displayname | user_added |
| room | users | participant1 | participant1-displayname | conversation_created |
@@ -0,0 +1,327 @@
Feature: chat-4/threads
Background:
Given user "participant1" exists
Given user "participant2" exists
Scenario: Create a thread
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room" with 201
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Thread 1 | 0 | 0 | 0 | Message 1 | NULL |
Scenario: Create thread and reply
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room" with 201
And user "participant2" sends reply "Message 1-1" on message "Message 1" to room "room" with 201
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Thread 1 | 1 | Message 1-1 | 0 | Message 1 | Message 1-1 |
Then user "participant1" sees the following messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | threadTitle | threadReplies |
| room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 | Thread 1 | 1 |
| room | users | participant1 | participant1-displayname | Message 1 | [] | | Thread 1 | 1 |
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | systemMessage | message | silent | messageParameters |
| room | users | participant1 | thread_created | You created thread {title} | true | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"title":{"type":"highlight","id":THREAD_ID(Thread 1),"name":"Thread 1"}} |
| room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"user":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"}} |
| room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} |
And user "participant1" renames thread "Thread 1" to "Thredited 1" in room "room" with 200
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Thredited 1 | 1 | Message 1-1 | 0 | Message 1 | Message 1-1 |
Then user "participant1" sees the following messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 |
| room | users | participant1 | participant1-displayname | Message 1 | [] | |
Then user "participant2" sees the following system messages in room "room" with 200
| room | actorType | actorId | systemMessage | message | silent | messageParameters |
| room | users | participant1 | thread_renamed | {actor} renamed thread {title} | true | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"title":{"type":"highlight","id":THREAD_ID(Thread 1),"name":"Thredited 1"}} |
| room | users | participant1 | thread_created | {actor} created thread {title} | true | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"title":{"type":"highlight","id":THREAD_ID(Thread 1),"name":"Thread 1"}} |
| room | users | participant1 | user_added | {actor} added you | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"user":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"}} |
| room | users | participant1 | conversation_created | {actor} created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} |
Scenario: Non moderators can only rename their own threads
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room" with 201
And user "participant2" sends thread "Thread 2" with message "Message 2" to room "room" with 201
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 2 | Thread 2 | 0 | 0 | 0 | Message 2 | NULL |
| Message 1 | Thread 1 | 0 | 0 | 0 | Message 1 | NULL |
And user "participant2" renames thread "Thread 1" to "No permissions" in room "room" with 403
And user "participant2" renames thread "Thread 2" to "My own thread" in room "room" with 200
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 2 | My own thread | 0 | 0 | 0 | Message 2 | NULL |
| Message 1 | Thread 1 | 0 | 0 | 0 | Message 1 | NULL |
And user "participant1" renames thread "Thread 1" to "Moderator thread" in room "room" with 200
And user "participant1" renames thread "Thread 2" to "User thread" in room "room" with 200
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 2 | User thread | 0 | 0 | 0 | Message 2 | NULL |
| Message 1 | Moderator thread | 0 | 0 | 0 | Message 1 | NULL |
Scenario: Notification levels
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room" with 201
And user "participant2" sends reply "Message 1-1" on thread "Thread 1" to room "room" with 201
And user "participant1" has the following notifications
| app | object_type | object_id | subject |
And user "participant2" sends reply "Message 1-2" on message "Message 1" to room "room" with 201
And user "participant1" has the following notifications
| app | object_type | object_id | subject |
| spreed | chat | room/Message 1-2/Thread 1 | participant2-displayname replied to your message in conversation room |
And user "participant1" subscribes to thread "Message 1" in room "room" with notification level 1 with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Thread 1 | 2 | Message 1-2 | 1 | Message 1 | Message 1-2 |
And user "participant2" sends reply "Message 1-3" on thread "Thread 1" to room "room" with 201
And user "participant1" has the following notifications
| app | object_type | object_id | subject |
| spreed | chat | room/Message 1-3/Thread 1 | participant2-displayname sent a message in conversation room |
| spreed | chat | room/Message 1-2/Thread 1 | participant2-displayname replied to your message in conversation room |
When user "participant2" sends reply "@participant1" on thread "Thread 1" to room "room" with 201
Then user "participant1" has the following notifications
| app | object_type | object_id | subject |
| spreed | chat | room/@participant1/Thread 1 | participant2-displayname mentioned you in conversation room |
| spreed | chat | room/Message 1-3/Thread 1 | participant2-displayname sent a message in conversation room |
| spreed | chat | room/Message 1-2/Thread 1 | participant2-displayname replied to your message in conversation room |
Scenario: Thread titles are trimmed
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" sends thread "More than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789" with message "Message 1" to room "room" with 201
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | More than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 | 0 | 0 | 0 | Message 1 | NULL |
Then user "participant1" sees the following system messages in room "room" with 200
| room | actorType | actorId | systemMessage | message | silent | messageParameters |
| room | users | participant1 | thread_created | You created thread {title} | true | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"title":{"type":"highlight","id":THREAD_ID(More than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789),"name":"More than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 \u2026"}} |
| room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"user":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"}} |
| room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} |
And user "participant1" renames thread "More than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789" to "Still more than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789" in room "room" with 200
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Still more than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 1234 | 0 | 0 | 0 | Message 1 | NULL |
Then user "participant2" sees the following system messages in room "room" with 200
| room | actorType | actorId | systemMessage | message | silent | messageParameters |
| room | users | participant1 | thread_renamed | {actor} renamed thread {title} | true | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"title":{"type":"highlight","id":THREAD_ID(More than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789),"name":"Still more than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 1234\u2026"}} |
| room | users | participant1 | thread_created | {actor} created thread {title} | true | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"title":{"type":"highlight","id":THREAD_ID(More than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789),"name":"More than 200 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 \u2026"}} |
| room | users | participant1 | user_added | {actor} added you | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"user":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"}} |
| room | users | participant1 | conversation_created | {actor} created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} |
Scenario: Recent threads are sorted by last activity
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room" with 201
And user "participant1" sends thread "Thread 2" with message "Message 2" to room "room" with 201
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 2 | Thread 2 | 0 | 0 | 0 | Message 2 | NULL |
| Message 1 | Thread 1 | 0 | 0 | 0 | Message 1 | NULL |
When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "room" with 201
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Thread 1 | 1 | Message 1-1 | 0 | Message 1 | Message 1-1 |
| Message 2 | Thread 2 | 0 | 0 | 0 | Message 2 | NULL |
Scenario: Change notification setting for thread
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room" with 201
Then user "participant1" sees the following recent threads in room "room" with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Thread 1 | 0 | 0 | 0 | Message 1 | NULL |
And user "participant1" subscribes to thread "Message 1" in room "room" with notification level 1 with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Thread 1 | 0 | 0 | 1 | Message 1 | NULL |
And user "participant1" subscribes to thread "Message 1" in room "room" with notification level 2 with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Thread 1 | 0 | 0 | 2 | Message 1 | NULL |
And user "participant1" subscribes to thread "Message 1" in room "room" with notification level 3 with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Thread 1 | 0 | 0 | 3 | Message 1 | NULL |
And user "participant1" subscribes to thread "Message 1" in room "room" with notification level 4 with 400
And user "participant1" subscribes to thread "Message 1" in room "room" with notification level 0 with 200
| t.id | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | Thread 1 | 0 | 0 | 0 | Message 1 | NULL |
Scenario: List of subscribed threads
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" adds user "participant2" to room "room1" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room1" with 201
Given user "participant2" creates room "room2" (v4)
| roomType | 2 |
| roomName | room2 |
And user "participant2" adds user "participant1" to room "room2" with 200 (v4)
And user "participant2" sends thread "Thread 2" with message "Message 2" to room "room2" with 201
And user "participant2" sends thread "Thread 3" with message "Message 3" to room "room2" with 201
Then user "participant1" sees the following subscribed threads
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 0 | 0 | 0 | Message 1 | NULL |
And user "participant1" subscribes to thread "Message 3" in room "room2" with notification level 1 with 200
Then user "participant1" sees the following subscribed threads
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 3 | room2 | Thread 3 | 0 | 0 | 1 | Message 3 | NULL |
| Message 1 | room1 | Thread 1 | 0 | 0 | 0 | Message 1 | NULL |
When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "room1" with 201
Then user "participant1" sees the following subscribed threads
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 1 | Message 1-1 | 0 | Message 1 | Message 1-1 |
| Message 3 | room2 | Thread 3 | 0 | 0 | 1 | Message 3 | NULL |
When user "participant1" sends reply "Message 2-1" on message "Message 2" to room "room2" with 201
Then user "participant1" sees the following subscribed threads
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 2 | room2 | Thread 2 | 1 | Message 2-1 | 0 | Message 2 | Message 2-1 |
| Message 1 | room1 | Thread 1 | 1 | Message 1-1 | 0 | Message 1 | Message 1-1 |
| Message 3 | room2 | Thread 3 | 0 | 0 | 1 | Message 3 | NULL |
Then user "participant1" sees 1 number of subscribed threads with 0 offset
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 2 | room2 | Thread 2 | 1 | Message 2-1 | 0 | Message 2 | Message 2-1 |
Then user "participant1" sees 1 number of subscribed threads with 1 offset
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 1 | Message 1-1 | 0 | Message 1 | Message 1-1 |
Scenario: Reply with an attachment
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" adds user "participant2" to room "room1" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room1" with 201
When user "participant2" shares "welcome.txt" with room "room1"
| talkMetaData.caption | Message 2 |
| talkMetaData.replyTo | Message 1 |
Then user "participant1" sees the following messages in room "room1" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| room1 | users | participant2 | participant2-displayname | Message 2 | "IGNORE" | Message 1 |
| room1 | users | participant1 | participant1-displayname | Message 1 | [] | |
Then user "participant1" sees the following recent threads in room "room1" with 200
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 1 | Message 2 | 0 | Message 1 | Message 2 |
And user "participant1" has the following notifications
| app | object_type | object_id | subject |
| spreed | chat | room1/Message 2/Thread 1 | participant2-displayname replied to your message in conversation room1 |
Then user "participant2" sees the following subscribed threads
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 1 | Message 2 | 0 | Message 1 | Message 2 |
Scenario: Post a message with an attachment (not replying)
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
Given user "participant1" creates room "room2" (v4)
| roomType | 2 |
| roomName | room2 |
And user "participant1" adds user "participant2" to room "room1" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room1" with 201
And user "participant1" sends thread "Thread 2" with message "Message 2" to room "room2" with 201
When user "participant2" shares "welcome.txt" with room "room1"
| talkMetaData.caption | Message 3 |
| talkMetaData.threadId | Message 1 |
When user "participant2" shares "welcome.txt" with room "room1"
| talkMetaData.caption | Message 4 |
| talkMetaData.threadId | Message 2 |
Then user "participant1" sees the following messages in room "room1" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| room1 | users | participant2 | participant2-displayname | Message 4 | "IGNORE" | |
| room1 | users | participant2 | participant2-displayname | Message 3 | "IGNORE" | Message 1 |
| room1 | users | participant1 | participant1-displayname | Message 1 | [] | |
Then user "participant1" sees the following recent threads in room "room1" with 200
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 1 | Message 3 | 0 | Message 1 | Message 3 |
Then user "participant1" sees the following recent threads in room "room2" with 200
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 2 | room2 | Thread 2 | 0 | 0 | 0 | Message 2 | NULL |
And user "participant1" has the following notifications
| app | object_type | object_id | subject |
Then user "participant2" sees the following subscribed threads
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 1 | Message 3 | 0 | Message 1 | Message 3 |
Scenario: Post a location to a thread
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
Given user "participant1" creates room "room2" (v4)
| roomType | 2 |
| roomName | room2 |
And user "participant1" adds user "participant2" to room "room1" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room1" with 201
And user "participant1" sends thread "Thread 2" with message "Message 2" to room "room2" with 201
When user "participant2" shares rich-object "geo-location" "geo:52.5450511,13.3741463" '{"name":"Location name","latitude":"52.5450511","longitude":"13.3741463"}' to room "room1" in thread "Message 1" with 201 (v1)
When user "participant2" shares rich-object "geo-location" "geo:52.5450511,13.3741463" '{"name":"Location name","latitude":"52.5450511","longitude":"13.3741463"}' to room "room1" in thread "Message 2" with 201 (v1)
Then user "participant1" sees the following messages in room "room1" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| room1 | users | participant2 | participant2-displayname | {object} | "IGNORE" | |
| room1 | users | participant2 | participant2-displayname | {object} | "IGNORE" | Message 1 |
| room1 | users | participant1 | participant1-displayname | Message 1 | [] | |
Then user "participant1" sees the following recent threads in room "room1" with 200
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 1 | {object} | 0 | Message 1 | {object} |
Then user "participant1" sees the following recent threads in room "room2" with 200
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 2 | room2 | Thread 2 | 0 | 0 | 0 | Message 2 | NULL |
And user "participant1" has the following notifications
| app | object_type | object_id | subject |
Then user "participant2" sees the following subscribed threads
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 1 | {object} | 0 | Message 1 | {object} |
Scenario: Post a location to a thread
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
Given user "participant1" creates room "room2" (v4)
| roomType | 2 |
| roomName | room2 |
And user "participant1" adds user "participant2" to room "room1" with 200 (v4)
And user "participant1" sends thread "Thread 1" with message "Message 1" to room "room1" with 201
And user "participant1" sends thread "Thread 2" with message "Message 2" to room "room2" with 201
When user "participant2" creates a poll in room "room1" with 201
| question | What is the question?1 |
| options | ["Where are you?","How much is the fish?"] |
| resultMode | public |
| maxVotes | unlimited |
| threadId | Thread 1 |
When user "participant1" creates a poll in room "room1" with 201
| question | What is the question?2 |
| options | ["Where are you?","How much is the fish?"] |
| resultMode | public |
| maxVotes | unlimited |
| threadId | Thread 2 |
Then user "participant1" sees the following messages in room "room1" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage |
| room1 | users | participant1 | participant1-displayname | {object} | "IGNORE" | |
| room1 | users | participant2 | participant2-displayname | {object} | "IGNORE" | Message 1 |
| room1 | users | participant1 | participant1-displayname | Message 1 | [] | |
Then user "participant1" sees the following recent threads in room "room1" with 200
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 1 | {object} | 0 | Message 1 | {object} |
Then user "participant1" sees the following recent threads in room "room2" with 200
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 2 | room2 | Thread 2 | 0 | 0 | 0 | Message 2 | NULL |
And user "participant1" has the following notifications
| app | object_type | object_id | subject |
Then user "participant2" sees the following subscribed threads
| t.id | t.token | t.title | t.numReplies | t.lastMessage | a.notificationLevel | firstMessage | lastMessage |
| Message 1 | room1 | Thread 1 | 1 | {object} | 0 | Message 1 | {object} |
@@ -0,0 +1,11 @@
Feature: chat-2/typing-privacy
Background:
Given user "participant1" exists
Scenario: User toggles the typing privacy
# Private
When user "participant1" sets setting "typing_privacy" to 1 with 200 (v1)
Then user "participant1" has capability "spreed=>config=>chat=>typing-privacy" set to 1
# Public
When user "participant1" sets setting "typing_privacy" to 0 with 200 (v1)
Then user "participant1" has capability "spreed=>config=>chat=>typing-privacy" set to 0
@@ -0,0 +1,256 @@
Feature: chat-2/unread-messages
Background:
Given user "participant1" exists
Given user "participant2" exists
Scenario: sending a message clears unread counter for sender
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
When user "participant1" sends message "Message 1" to room "group room" with 201
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 0 |
And user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
Scenario: sending several messages clears unread counter for sender
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
When user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant1" sends message "Message 2" to room "group room" with 201
And user "participant1" sends message "Message 3" to room "group room" with 201
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 0 |
And user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 3 |
Scenario: sending a message with previously unread messages clears unread counter for sender
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
And user "participant2" sends message "Message 1" to room "group room" with 201
And user "participant2" sends message "Message 2" to room "group room" with 201
When user "participant1" sends message "Message 3" to room "group room" with 201
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 0 |
And user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
Scenario: reading all messages clears unread counter for reader
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant1" sends message "Message 2" to room "group room" with 201
And user "participant1" sends message "Message 3" to room "group room" with 201
When user "participant2" reads message "Message 3" in room "group room" with 200
Then user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 0 |
Scenario: reading some messages reduces unread counter for reader
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant1" sends message "Message 2" to room "group room" with 201
And user "participant1" sends message "Message 3" to room "group room" with 201
When user "participant2" reads message "Message 2" in room "group room" with 200
Then user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
When user "participant2" reads message "NULL" in room "group room" with 200
Then user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 0 |
Scenario: replies are taken into account in unread counter
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
And user "participant1" sends message "Message 1" to room "group room" with 201
When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 0 |
And user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 2 |
Scenario: rich object messages are taken into account in unread counter
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "group room" with 201 (v1)
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 0 |
And user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
Scenario: shared file messages are taken into account in unread counter
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
When user "participant1" shares "welcome.txt" with room "group room"
# Unread counter for sender is cleared in this case, as it is not
# possible to know whether the file was shared from Talk, which could clear
# the counter, or from the Files app, which should not clear it.
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 0 |
And user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
Scenario: system messages are not taken into account in unread counter
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
When user "participant1" makes room "group room" private with 200 (v4)
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 0 |
And user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 0 |
Scenario: marking conversation as unread marks last message as unread
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant1" sends message "Message 2" to room "group room" with 201
And user "participant1" sends message "Message 3" to room "group room" with 201
Then user "participant2" is participant of the following rooms (v4)
| id | unreadMessages |
| group room | 3 |
And wait for 2 seconds
Then user "participant2" is participant of the following modified-since rooms (v4)
And user "participant2" reads message "Message 3" in room "group room" with 200
And wait for 2 seconds
Then user "participant2" is participant of the following modified-since rooms (v4)
| id | unreadMessages |
| group room | 0 |
Then user "participant2" is participant of the following modified-since rooms (v4)
When user "participant1" marks room "group room" as unread with 200
And user "participant2" marks room "group room" as unread with 200
And wait for 2 seconds
Then user "participant2" is participant of the following modified-since rooms (v4)
| id | unreadMessages |
| group room | 1 |
Then user "participant2" is participant of the following modified-since rooms (v4)
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
And user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
Scenario: marking conversation as unread marks last message as unread ignoring system messages
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant1" sends message "Message 2" to room "group room" with 201
And user "participant1" sends message "Message 3" to room "group room" with 201
And user "participant1" makes room "group room" public with 200 (v4)
And user "participant1" makes room "group room" private with 200 (v4)
And user "participant1" makes room "group room" public with 200 (v4)
When user "participant1" marks room "group room" as unread with 200
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
Scenario: marking conversation as unread marks last message as unread even if there are other unread messages
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant1" sends message "Message 2" to room "group room" with 201
And user "participant1" sends message "Message 3" to room "group room" with 201
And user "participant1" sends message "Message 4" to room "group room" with 201
And user "participant2" reads message "Message 1" in room "group room" with 200
When user "participant2" marks room "group room" as unread with 200
Then user "participant2" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
Scenario: marking conversation as unread marks last message as unread considering shared file
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant1" sends message "Message 2" to room "group room" with 201
And user "participant1" shares "welcome.txt" with room "group room"
When user "participant1" marks room "group room" as unread with 200
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
When user "participant1" sends message "Message 3" to room "group room" with 201
And user "participant1" marks room "group room" as unread with 200
Then user "participant1" is participant of room "group room" (v4)
| unreadMessages |
| 1 |
Scenario: marking first message as unread falls back to system message
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" sends message "Message 1" to room "room" with 201
And user "participant1" sees the following system messages in room "room" with 200 (v1)
| room | actorType | actorId | systemMessage | message | silent | messageParameters |
| room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"user":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"}} |
| room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} |
Then user "participant2" is participant of the following rooms (v4)
| id | unreadMessages | lastReadMessage |
| room | 1 | conversation_created |
And wait for 1 seconds
And user "participant2" marks room "room" as unread with 200
Then user "participant2" is participant of room "room" (v4)
| unreadMessages | lastReadMessage |
| 1 | user_added |
Scenario: marking first message as unread falls back to FIRST_MESSAGE_UNREAD
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" sees the following system messages in room "room" with 200 (v1)
| room | actorType | actorId | systemMessage | message | silent | messageParameters |
| room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} |
Then user "participant1" is participant of the following rooms (v4)
| id | unreadMessages | lastReadMessage |
| room | 0 | conversation_created |
And wait for 1 seconds
And user "participant1" marks room "room" as unread with 200
Then user "participant1" is participant of room "room" (v4)
| unreadMessages | lastReadMessage |
| 1 | FIRST_MESSAGE_UNREAD |