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,200 @@
Feature: conversation/add-participant
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
Scenario: Owner invites a user
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 1 |
And user "participant2" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 3 |
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
| spreed | room | room | participant1-displayname invited you to a group conversation: room |
And user "participant3" is not participant of room "room" (v4)
And user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
Scenario: User invites a user
Given signaling server is started
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And reset signaling server requests
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then signaling server received the following requests
| token | data |
| room | {"type":"invite","invite":{"userids":["participant2"],"alluserids":["participant1","participant2"],"properties":{"name":"Private conversation","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"participant-list":"refresh"}}} |
| room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
And user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 1 |
And user "participant2" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 3 |
And user "participant3" is not participant of room "room" (v4)
When user "participant2" adds user "participant3" to room "room" with 403 (v4)
Then user "participant3" has the following notifications
| app | object_type | object_id | subject |
And user "participant3" is not participant of room "room" (v4)
And user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
Scenario: Moderator invites a user
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
When user "participant1" promotes "participant2" in room "room" with 200 (v4)
And user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 1 |
And user "participant2" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 2 |
And user "participant3" is not participant of room "room" (v4)
When user "participant2" adds user "participant3" to room "room" with 200 (v4)
Then user "participant3" has the following notifications
| app | object_type | object_id | subject |
| spreed | room | room | participant2-displayname invited you to a group conversation: room |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 1 |
And user "participant2" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 2 |
And user "participant3" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 3 |
And user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 2 |
| users | participant3 | 3 |
Scenario: Moderator invites a user who self-joined
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" joins room "room" with 200 (v4)
And user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 5 |
When user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Then user "participant2" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 3 |
And user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
Scenario: Moderator invites a group containing a self-joined user
Given group "group1" exists
And user "participant2" is member of group "group1"
And user "participant3" is member of group "group1"
And user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" joins room "room" with 200 (v4)
# participant3 already present, so it will be skipped
And user "participant1" adds user "participant3" to room "room" with 200 (v4)
When user "participant1" adds group "group1" to room "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Then user "participant2" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 3 |
And user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| groups | group1 | 3 |
| users | participant3 | 3 |
And user "participant3" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 3 |
Scenario: Stranger invites a user
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant3" adds user "participant2" to room "room" with 404 (v4)
And user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
And user "participant2" is not participant of room "room" (v4)
And user "participant3" is not participant of room "room" (v4)
Scenario: Getting participant suggestions in a private room
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" gets the following collaborator suggestions in room "room" for "particip" with 200
| source | id | label |
| users | participant2 | participant2-displayname |
| users | participant3 | participant3-displayname |
And user "participant1" gets the following collaborator suggestions in room "room" for "participant2" with 200
| source | id | label |
| users | participant2 | participant2-displayname |
And user "participant3" gets the following collaborator suggestions in room "room" for "participant2" with 200
| source | id | label |
| users | participant2 | participant2-displayname |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" gets the following collaborator suggestions in room "room" for "participant2" with 200
And user "participant3" gets the following collaborator suggestions in room "room" for "participant2" with 200
| source | id | label |
| users | participant2 | participant2-displayname |
Scenario: Filter out already added entries
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And group "Filtered group" exists
And team "Filtered team" exists
And add user "participant1" to team "Filtered team"
When user "participant1" gets the following collaborator suggestions in room "room" for "Filtered" with 200
| source | id | label |
| circles | TEAM_ID(Filtered team) | Filtered team |
| groups | Filtered group | Filtered group |
And user "participant1" adds group "Filtered group" to room "room" with 200 (v4)
And user "participant1" adds team "Filtered team" to room "room" with 200 (v4)
When user "participant1" gets the following collaborator suggestions in room "room" for "Filtered" with 200
| source | id | label |
Scenario: Getting participant suggestions in a public room
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" gets the following collaborator suggestions in room "room" for "particip" with 200
| source | id | label |
| users | participant2 | participant2-displayname |
| users | participant3 | participant3-displayname |
And user "participant1" gets the following collaborator suggestions in room "room" for "participant2" with 200
| source | id | label |
| users | participant2 | participant2-displayname |
And user "participant3" gets the following collaborator suggestions in room "room" for "participant2" with 200
| source | id | label |
| users | participant2 | participant2-displayname |
And user "guest" joins room "room" with 200 (v4)
And user "guest" gets the following collaborator suggestions in room "room" for "participant2" with 401
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" gets the following collaborator suggestions in room "room" for "participant2" with 200
And user "participant3" gets the following collaborator suggestions in room "room" for "participant2" with 200
| source | id | label |
| users | participant2 | participant2-displayname |
And user "guest" gets the following collaborator suggestions in room "room" for "participant2" with 401
@@ -0,0 +1,28 @@
Feature: conversation-1/archive
Background:
Given user "participant1" exists
Given user "participant2" exists
Scenario: Archiving and unarchiving
Given user "participant1" creates room "group room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" creates room "one-to-one room" (v4)
| roomType | 1 |
| invite | participant2 |
And user "participant1" is participant of the following unordered rooms (v4)
| id | name | isArchived |
| group room | room | 0 |
| one-to-one room | participant2 | 0 |
And user "participant1" archives room "one-to-one room" with 200 (v4)
And user "participant1" archives room "group room" with 200 (v4)
And user "participant1" is participant of the following unordered rooms (v4)
| id | name | isArchived |
| group room | room | 1 |
| one-to-one room | participant2 | 1 |
And user "participant1" unarchives room "one-to-one room" with 200 (v4)
And user "participant1" unarchives room "group room" with 200 (v4)
And user "participant1" is participant of the following unordered rooms (v4)
| id | name | isArchived |
| group room | room | 0 |
| one-to-one room | participant2 | 0 |
@@ -0,0 +1,156 @@
Feature: conversation/avatar
Background:
Given user "participant1" exists
Given user "participant2" exists
And guest accounts can be created
And user "user-guest@example.com" is a guest account user
Scenario: Misteps
Given user "participant1" creates room "room1" (v4)
| roomType | 3 |
| roomName | room1 |
Then user "participant1" uploads file "invalid" as avatar of room "room1" with 400
And user "participant2" uploads file "/img/favicon.png" as avatar of room "room1" with 404
And user "participant2" delete the avatar of room "room1" with 404
Scenario: Define an image as avatar with success
Given user "participant1" creates room "room2" (v4)
| roomType | 3 |
| roomName | room2 |
When user "participant1" uploads file "/img/favicon.png" as avatar of room "room2" with 200
Then user "participant1" gets room "room2" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 1 |
And the room "room2" has not an svg as avatar with 200
And user "participant1" sees the following system messages in room "room2" with 200
| room | actorType | actorId | systemMessage | message |
| room2 | users | participant1 | avatar_set | You set the conversation picture |
| room2 | users | participant1 | conversation_created | You created the conversation |
When user "participant1" delete the avatar of room "room2" with 200
Then user "participant1" sees the following system messages in room "room2" with 200
| room | actorType | actorId | systemMessage | message |
| room2 | users | participant1 | avatar_removed | You removed the conversation picture |
| room2 | users | participant1 | avatar_set | You set the conversation picture |
| room2 | users | participant1 | conversation_created | You created the conversation |
And user "participant1" gets room "room2" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 0 |
Then the room "room2" has an avatar with 200
Scenario: Get avatar of conversation without custom avatar (fallback)
Given user "participant1" creates room "room3" (v4)
| roomType | 3 |
| roomName | room3 |
Then the room "room3" has an avatar with 200
And user "participant1" gets room "room3" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 0 |
Scenario: Get avatar of conversation without being a participant
Given user "participant1" creates room "room3" (v4)
| roomType | 3 |
| roomName | room3 |
Then the room "room3" has an avatar with 200
And user "participant1" gets room "room3" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 0 |
And as user "participant2"
And the room "room3" has an avatar with 404
And as user "user-guest@example.com"
And the room "room3" has an avatar with 404
And as user "guest"
And the room "room3" has an avatar with 404
When user "participant1" allows listing room "room3" for "users" with 200 (v4)
And as user "participant2"
And the room "room3" has an avatar with 200
And as user "user-guest@example.com"
And the room "room3" has an avatar with 404
And as user "guest"
And the room "room3" has an avatar with 404
When user "participant1" allows listing room "room3" for "all" with 200 (v4)
And as user "participant2"
And the room "room3" has an avatar with 200
And as user "user-guest@example.com"
And the room "room3" has an avatar with 200
And as user "guest"
And the room "room3" has an avatar with 404
Scenario: Get avatar of one2one without custom avatar (fallback)
When user "participant1" creates room "one2one" (v4)
| roomType | 1 |
| invite | participant2 |
Then the room "one2one" has an avatar with 200
And user "participant1" gets room "one2one" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 0 |
Scenario: Try to change avatar of one2one without success
When user "participant1" creates room "one2one" (v4)
| roomType | 1 |
| invite | participant2 |
Then user "participant1" uploads file "/img/favicon.png" as avatar of room "one2one" with 400
And user "participant1" gets room "one2one" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 0 |
Then user "participant1" sets emoji "👋" with color "123456" as avatar of room "one2one" with 400 (v1)
And user "participant1" gets room "one2one" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 0 |
Scenario: Conversation that the name start with emoji dont need to have custom avatar
Given user "participant1" creates room "room1" (v4)
| roomType | 3 |
| roomName | room1 |
And the room "room1" has an svg as avatar with 200
And user "participant1" gets room "room1" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 0 |
| displayName | room1 |
And user "participant1" renames room "room1" to "💙room2" with 200 (v4)
Then user "participant1" gets room "room1" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 0 |
| displayName | 💙room2 |
And the room "room1" has an svg as avatar with 200
And the avatar svg of room "room1" contains the string "💙"
When user "participant1" renames room "room1" to "room1" with 200 (v4)
Then user "participant1" gets room "room1" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 0 |
| displayName | room1 |
And the room "room1" has an svg as avatar with 200
Scenario: User should receive the room avatar when see a rich object at media tab
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | public room |
And user "participant1" uploads file "/img/favicon.png" as avatar of 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}"}} |
Scenario: User sets emoji as avatar
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | public room |
Then user "participant1" sets emoji "👋🚀" with color "123456" as avatar of room "room" with 400 (v1)
And user "participant1" sets emoji "👋" with color "1234567" as avatar of room "room" with 400 (v1)
And user "participant1" sets emoji "👋" with color "GGGGGG" as avatar of room "room" with 400 (v1)
And user "participant1" gets room "room" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 0 |
Then user "participant1" sets emoji "👩🏽🚀" with color "123456" as avatar of room "room" with 200 (v1)
And user "participant1" gets room "room" with 200 (v4)
| avatarVersion | NOT_EMPTY |
| isCustomAvatar | 1 |
And the room "room" has an svg as avatar with 200
And the avatar svg of room "room" contains the string "👩🏽🚀"
And the avatar svg of room "room" contains the string "123456"
Then user "participant1" sets emoji "🍏" with color "null" as avatar of room "room" with 200 (v1)
And the avatar svg of room "room" contains the string "🍏"
And the avatar svg of room "room" contains the string "6B6B6B"
And the avatar svg of room "room" not contains the string "3B3B3B"
And the dark avatar svg of room "room" contains the string "🍏"
And the dark avatar svg of room "room" not contains the string "6B6B6B"
And the dark avatar svg of room "room" contains the string "3B3B3B"
@@ -0,0 +1,224 @@
Feature: conversation/ban
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
Given group "group1" exists
Scenario: Moderator banning and unbanning multiple users
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" joins room "room" with 200 (v4)
And user "participant3" joins room "room" with 200 (v4)
And user "participant1" bans user "participant2" from room "room" with 200 (v1)
| internalNote | BannedP2 |
And user "participant1" bans user "participant3" from room "room" with 200 (v1)
| internalNote | BannedP3 |
And user "participant1" sees the following bans in room "room" with 200 (v1)
| moderatorActorType | moderatorActorId | moderatorDisplayName | bannedActorType | bannedActorId | bannedDisplayName | internalNote |
| users | participant1 | participant1-displayname | users | participant2 | participant2-displayname | BannedP2 |
| users | participant1 | participant1-displayname | users | participant3 | participant3-displayname | BannedP3 |
And user "participant2" joins room "room" with 403 (v4)
And user "participant3" joins room "room" with 403 (v4)
And user "participant1" removes "participant2" from room "room" with 404 (v4)
And user "participant1" removes "participant3" from room "room" with 404 (v4)
And user "participant1" unbans user "participant2" from room "room" with 200 (v1)
And user "participant1" unbans user "participant3" from room "room" with 200 (v1)
And user "participant2" joins room "room" with 200 (v4)
And user "participant3" joins room "room" with 200 (v4)
Scenario: Users trying to ban moderator
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" joins room "room" with 200 (v4)
And user "participant3" joins room "room" with 200 (v4)
And user "participant2" bans user "participant1" from room "room" with 403 (v1)
| internalNote | BannedP1 |
And user "participant3" bans user "participant1" from room "room" with 403 (v1)
| internalNote | BannedP1 |
Scenario: Users trying to ban other users
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" joins room "room" with 200 (v4)
And user "participant3" joins room "room" with 200 (v4)
And user "participant2" bans user "participant3" from room "room" with 403 (v1)
| internalNote | BannedP3 |
And user "participant3" bans user "participant2" from room "room" with 403 (v1)
| internalNote | BannedP2 |
Scenario: User trying to ban themselves
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" joins room "room" with 200 (v4)
And user "participant2" joins room "room" with 200 (v4)
And user "participant2" bans user "participant2" from room "room" with 403 (v1)
| internalNote | BannedP2 |
Scenario: Moderator trying to ban an invalid user
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" joins room "room" with 200 (v4)
And user "participant1" bans user "participant3" from room "room" with 200 (v1)
| internalNote | BannedInvalid |
Scenario: Moderator trying to ban themselves
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" joins room "room" with 200 (v4)
And user "participant1" bans user "participant1" from room "room" with 400 (v1)
| internalNote | BannedP1 |
| error | self |
Scenario: Moderator trying to ban moderator
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" joins room "room" with 200 (v4)
And user "participant2" joins room "room" with 200 (v4)
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" promotes "participant2" in room "room" with 200 (v4)
And user "participant1" bans user "participant2" from room "room" with 400 (v1)
| internalNote | BannedP2 |
| error | moderator |
And user "participant1" demotes "participant2" in room "room" with 200 (v4)
And user "participant1" bans user "participant2" from room "room" with 200 (v1)
| internalNote | BannedP2 |
And user "participant1" sees the following bans in room "room" with 200 (v1)
| moderatorActorType | moderatorActorId | moderatorDisplayName | bannedActorType | bannedActorId | bannedDisplayName | internalNote |
| users | participant1 | participant1-displayname | users | participant2 | participant2-displayname | BannedP2 |
Scenario: Banned user can not join conversation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant2" joins room "room" with 200 (v4)
Then user "participant2" leaves room "room" with 200 (v4)
When user "participant1" bans user "participant2" from room "room" with 200 (v1)
| internalNote | BannedP2 |
Then user "participant2" joins room "room" with 403 (v4)
Scenario: Banned user can not send reactions or messages
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" joins room "room" with 200 (v4)
And user "participant2" sends message "Message 1" to room "room" with 201
When user "participant1" bans user "participant2" from room "room" with 200 (v1)
| internalNote | BannedP2 |
And user "participant2" sends message "Message 2" to room "room" with 404
And user "participant2" react with "👍" on message "Message 1" to room "room" with 404
Scenario: Banning a guest bans their IP as well
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "guest" joins room "room" with 200 (v4) session name "guest1"
And user "participant1" bans guest "guest1" from room "room" with 200 (v1)
| internalNote | Banned guest |
And user "guest" joins room "room" with 403 (v4) session name "guest2"
And user "participant1" sees the following bans in room "room" with 200 (v1)
| moderatorActorType | moderatorActorId | moderatorDisplayName | bannedActorType | bannedActorId | bannedDisplayName | internalNote |
| users | participant1 | participant1-displayname | guests | SESSION(guest1) | SESSION(guest1) | Banned guest |
| users | participant1 | participant1-displayname | ip | LOCAL_IP | LOCAL_IP | Banned guest |
Scenario: Banned user cannot be added to the room
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" bans user "participant2" from room "room" with 200 (v1)
| internalNote | BannedP2 |
And user "participant1" sees the following bans in room "room" with 200 (v1)
| moderatorActorType | moderatorActorId | moderatorDisplayName | bannedActorType | bannedActorId | bannedDisplayName | internalNote |
| users | participant1 | participant1-displayname | users | participant2 | participant2-displayname | BannedP2 |
And user "participant1" adds user "participant2" to room "room" with 400 (v4)
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId |
| users | participant1 |
And user "participant1" unbans user "participant2" from room "room" with 200 (v1)
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId |
| users | participant1 |
| users | participant2 |
Scenario: Banned user is not added when adding a group they are a member of
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" is member of group "group1"
And user "participant1" bans user "participant2" from room "room" with 200 (v1)
| internalNote | BannedP2 |
And user "participant1" sees the following bans in room "room" with 200 (v1)
| moderatorActorType | moderatorActorId | moderatorDisplayName | bannedActorType | bannedActorId | bannedDisplayName | internalNote |
| users | participant1 | participant1-displayname | users | participant2 | participant2-displayname | BannedP2 |
And user "participant1" adds group "group1" to room "room" with 200 (v4)
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId |
| users | participant1 |
| groups | group1 |
Scenario: Banned user is not added when adding them to a group that is member in a room they are banned in
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" bans user "participant2" from room "room" with 200 (v1)
| internalNote | BannedP2 |
And user "participant1" sees the following bans in room "room" with 200 (v1)
| moderatorActorType | moderatorActorId | moderatorDisplayName | bannedActorType | bannedActorId | bannedDisplayName | internalNote |
| users | participant1 | participant1-displayname | users | participant2 | participant2-displayname | BannedP2 |
And user "participant1" adds group "group1" to room "room" with 200 (v4)
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId |
| users | participant1 |
| groups | group1 |
And user "participant2" is member of group "group1"
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId |
| users | participant1 |
| groups | group1 |
Scenario: Can not ban in one-to-one conversations
Given user "participant1" creates room "one-to-one room" (v4)
| roomType | 1 |
| invite | participant2 |
And user "participant1" bans user "participant2" from room "one-to-one room" with 400 (v1)
| error | room |
Scenario: Invalid banned actor type
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" bans range "participant2" from room "room" with 400 (v1)
| error | bannedActor |
Scenario: Invalid IP address
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" bans ip "participant2" from room "room" with 400 (v1)
| error | bannedActor |
Scenario: Invalid IP address range
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" bans ip "127.0.0.1/64" from room "room" with 400 (v1)
| error | bannedActor |
Scenario: Test valid IP bans
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" bans ip "127.0.0.1" from room "room" with 200 (v1)
And user "participant1" bans ip "127.0.0.1/24" from room "room" with 200 (v1)
And user "participant1" bans ip "127.0.0.1/32" from room "room" with 200 (v1)
And user "participant1" bans ip "::1" from room "room" with 200 (v1)
And user "participant1" bans ip "::1/32" from room "room" with 200 (v1)
And user "participant1" bans ip "::1/64" from room "room" with 200 (v1)
@@ -0,0 +1,877 @@
Feature: conversation/breakout-rooms
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
Given user "participant4" exists
Given group "group1" exists
Scenario: Teacher creates manual breakout rooms
Given signaling server is started
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" adds user "participant3" to room "class room" with 200 (v4)
And user "participant1" adds user "participant4" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| users | participant3 | 3 |
| users | participant4 | 3 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
| users::participant3 | 1 |
| users::participant4 | 2 |
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
Then user "participant3" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 2 |
Then user "participant4" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 3 |
And user "participant1" sees the following attendees in breakout rooms for room "class room" with 200 (v4)
| roomToken | actorType | actorId | participantType |
| class room | users | participant1 | 1 |
| class room | users | participant2 | 3 |
| class room | users | participant3 | 3 |
| class room | users | participant4 | 3 |
| Room 1 | users | participant1 | 1 |
| Room 1 | users | participant2 | 3 |
| Room 2 | users | participant1 | 1 |
| Room 2 | users | participant3 | 3 |
| Room 3 | users | participant1 | 1 |
| Room 3 | users | participant4 | 3 |
And user "participant2" sees the following attendees in breakout rooms for room "class room" with 400 (v4)
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
And user "participant2" sees the following attendees in breakout rooms for room "class room" with 200 (v4)
| roomToken | actorType | actorId | participantType |
| class room | users | participant1 | 1 |
| class room | users | participant2 | 3 |
| class room | users | participant3 | 3 |
| class room | users | participant4 | 3 |
| Room 1 | users | participant1 | 1 |
| Room 1 | users | participant2 | 3 |
And user "participant2" joins room "class room" with 200 (v4)
And user "participant3" joins room "class room" with 200 (v4)
And user "participant4" joins room "class room" with 200 (v4)
And reset signaling server requests
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
Then signaling server received the following requests
| token | data |
| Room 1 | {"type":"update","update":{"userids":["participant1","participant2"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| Room 2 | {"type":"update","update":{"userids":["participant1","participant3"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| Room 3 | {"type":"update","update":{"userids":["participant1","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| class room | {"type":"switchto","switchto":{"roomid":"ROOM(Room 1)","sessions":["SESSION(participant2)"]}} |
| class room | {"type":"switchto","switchto":{"roomid":"ROOM(Room 2)","sessions":["SESSION(participant3)"]}} |
| class room | {"type":"switchto","switchto":{"roomid":"ROOM(Room 3)","sessions":["SESSION(participant4)"]}} |
| class room | {"type":"update","update":{"userids":["participant1","participant2","participant3","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
And user "participant2" leaves room "class room" with 200 (v4)
And user "participant3" leaves room "class room" with 200 (v4)
And user "participant4" leaves room "class room" with 200 (v4)
And user "participant2" joins room "Room 1" with 200 (v4)
And user "participant3" joins room "Room 2" with 200 (v4)
And user "participant4" joins room "Room 3" with 200 (v4)
And reset signaling server requests
And user "participant1" stops breakout rooms in room "class room" with 200 (v1)
Then signaling server received the following requests
| token | data |
| Room 1 | {"type":"switchto","switchto":{"roomid":"ROOM(class room)","sessions":["SESSION(participant2)"]}} |
| Room 2 | {"type":"switchto","switchto":{"roomid":"ROOM(class room)","sessions":["SESSION(participant3)"]}} |
| Room 3 | {"type":"switchto","switchto":{"roomid":"ROOM(class room)","sessions":["SESSION(participant4)"]}} |
| class room | {"type":"update","update":{"userids":["participant1","participant2","participant3","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| Room 1 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| Room 1 | {"type":"update","update":{"userids":["participant1","participant2"],"properties":{"name":"Private conversation","type":2,"lobby-state":1,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| Room 2 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| Room 2 | {"type":"update","update":{"userids":["participant1","participant3"],"properties":{"name":"Private conversation","type":2,"lobby-state":1,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| Room 3 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| Room 3 | {"type":"update","update":{"userids":["participant1","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":1,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
Scenario: Teacher creates automatic breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" adds user "participant3" to room "class room" with 200 (v4)
And user "participant1" adds user "participant4" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| users | participant3 | 3 |
| users | participant4 | 3 |
When user "participant1" creates 3 automatic breakout rooms for "class room" with 200 (v1)
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant1" sees the following attendees in room "Room 1" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | /^participant\d$/ | 3 |
And user "participant1" sees the following attendees in room "Room 2" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | /^participant\d$/ | 3 |
And user "participant1" sees the following attendees in room "Room 3" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | /^participant\d$/ | 3 |
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | /^Room \d$/ |
Then user "participant3" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | /^Room \d$/ |
Then user "participant4" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | /^Room \d$/ |
Scenario: Co-teachers are promoted and removed in all breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
When user "participant1" promotes "participant2" in room "class room" with 200 (v4)
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant1" sees the following attendees in room "Room 1" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 2 |
And user "participant1" sees the following attendees in room "Room 2" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 2 |
And user "participant1" sees the following attendees in room "Room 3" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 2 |
When user "participant1" demotes "participant2" in room "class room" with 200 (v4)
Then user "participant2" is participant of the following rooms (v4)
| type | name |
| 2 | class room |
And user "participant1" sees the following attendees in room "Room 1" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
And user "participant1" sees the following attendees in room "Room 2" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
And user "participant1" sees the following attendees in room "Room 3" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
Scenario: Can not nest breakout rooms
When user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant1" creates 3 manual breakout rooms for "Room 1" with 400 (v1)
Scenario: Can not create breakout rooms in one-to-one
When user "participant1" creates room "one-to-one room" (v4)
| roomType | 1 |
| invite | participant2 |
And user "participant1" creates 3 manual breakout rooms for "one-to-one room" with 400 (v1)
Scenario: Can not create more than 20 breakout rooms
When user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 21 manual breakout rooms for "class room" with 400 (v1)
Scenario: Can not create less than 1 breakout rooms
When user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 0 manual breakout rooms for "class room" with 400 (v1)
Scenario: Invalid breakout room number in attendee map (low)
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 400 (v1)
| users::participant2 | -1 |
Scenario: Invalid breakout room number in attendee map (high)
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 400 (v1)
| users::participant2 | 4 |
Scenario: Breakout rooms are disabled
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And the following "spreed" app config is set
| breakout_rooms | no |
When user "participant1" creates 3 manual breakout rooms for "class room" with 400 (v1)
| users::participant2 | 1 |
Scenario: Broadcast chat message to all breakout room
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant1" broadcasts message "Hello rooms 1-3" to room "class room" with 201 (v1)
Then user "participant1" sees the following messages in room "Room 1" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| Room 1 | users | participant1 | participant1-displayname | Hello rooms 1-3 | [] |
Then user "participant1" sees the following messages in room "Room 2" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| Room 2 | users | participant1 | participant1-displayname | Hello rooms 1-3 | [] |
Then user "participant1" sees the following messages in room "Room 3" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| Room 3 | users | participant1 | participant1-displayname | Hello rooms 1-3 | [] |
Scenario: Can not broadcast chat message in a non-breakout room
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" broadcasts message "Does not work" to room "room" with 400 (v1)
Scenario: Can not start in a non-breakout room
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" starts breakout rooms in room "room" with 400 (v1)
And user "participant1" stops breakout rooms in room "room" with 400 (v1)
Scenario: Moderator starts and stops breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
| 2 | Room 3 | 1 | 0 | 0 |
Then user "participant1" sees the following system messages in room "Room 1" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 1 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 2" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 2 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 3" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 3 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 1 |
| 2 | Room 1 | 0 | 0 | 0 |
| 2 | Room 2 | 0 | 0 | 0 |
| 2 | Room 3 | 0 | 0 | 0 |
Then user "participant1" sees the following system messages in room "Room 1" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 1 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 1 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 2" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 2 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 2 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 3" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 3 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 3 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" stops breakout rooms in room "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
| 2 | Room 3 | 1 | 0 | 0 |
Then user "participant1" sees the following system messages in room "Room 1" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 1 | users | participant1 | participant1-displayname | breakout_rooms_stopped |
| Room 1 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 1 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 2" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 2 | users | participant1 | participant1-displayname | breakout_rooms_stopped |
| Room 2 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 2 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 3" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 3 | users | participant1 | participant1-displayname | breakout_rooms_stopped |
| Room 3 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 3 | users | participant1 | participant1-displayname | conversation_created |
Scenario: Request assistance and cancel it
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
When user "participant1" creates 1 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
And user "participant2" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 0 |
And user "participant2" requests assistance in room "Room 1" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 2 |
And user "participant2" cancels request for assistance in room "Room 1" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 0 |
And user "participant2" requests assistance in room "Room 1" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 2 |
And user "participant1" cancels request for assistance in room "Room 1" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 0 |
Scenario: Teacher creates free breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 2 free breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 3 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
Then user "participant2" sees the following breakout rooms for room "class room" with 404 (v4)
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
Then user "participant2" sees the following breakout rooms for room "class room" with 400 (v4)
Then user "participant1" sees the following breakout rooms for room "class room" with 200 (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
Then user "participant2" sees the following breakout rooms for room "class room" with 200 (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | Room 1 | 0 | 0 | 0 |
| 2 | Room 2 | 0 | 0 | 0 |
Scenario: Student can only get their own breakout room when non-free
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
Then user "participant1" sees the following breakout rooms for room "class room" with 200 (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
| 2 | Room 3 | 1 | 0 | 0 |
Then user "participant2" sees the following breakout rooms for room "class room" with 400 (v4)
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
Then user "participant2" sees the following breakout rooms for room "class room" with 200 (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | Room 1 | 0 | 0 | 0 |
Scenario: Teachers can not "switch" breakout rooms as they are in all of them
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 2 free breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 3 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
When user "participant1" switches in room "class room" to breakout room "Room 1" with 400 (v1)
Scenario: Student switching breakout room in free selection
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 2 free breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 3 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
Then user "participant2" is participant of the following rooms (v4)
| type | name |
| 2 | class room |
When user "participant2" switches in room "class room" to breakout room "Room 1" with 400 (v1)
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
When user "participant2" switches in room "class room" to breakout room "Room 1" with 200 (v1)
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
When user "participant2" switches in room "class room" to breakout room "Room 2" with 200 (v1)
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 2 |
Scenario: Student can not switch on manual breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" creates 2 manual breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
When user "participant2" switches in room "class room" to breakout room "Room 1" with 400 (v1)
Scenario: Student can not switch on automatic breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
When user "participant2" switches in room "class room" to breakout room "Room 1" with 400 (v1)
Scenario: Deleting the parent also deletes all breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
When user "participant1" deletes room "class room" with 200 (v4)
And user "participant1" is participant of the following rooms (v4)
And user "participant2" is participant of the following rooms (v4)
Scenario: Removing breakout rooms also stops them on the parent
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 0 | 0 |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 0 |
| 2 | Room 2 | 0 | 0 | 0 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
When user "participant1" removes breakout rooms from "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 0 | 0 |
Scenario: Deleting a single breakout room unassigned the students from the mapping
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" adds user "participant3" to room "class room" with 200 (v4)
And user "participant1" adds user "participant4" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| users | participant3 | 3 |
| users | participant4 | 3 |
And user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
| users::participant3 | 1 |
| users::participant4 | 2 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
And user "participant3" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 2 |
And user "participant4" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 3 |
When user "participant1" deletes room "Room 2" with 200 (v4)
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 3 |
And user "participant3" is participant of the following rooms (v4)
| type | name |
| 2 | class room |
Scenario: Adding a user directly to a breakout room adds them to the parent as well
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
When user "participant1" adds user "participant2" to room "Room 2" with 200 (v4)
Then user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" sees the following attendees in room "Room 2" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
Scenario: Adding a user directly to a breakout room adds them to the parent as well
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
When user "participant1" adds user "participant2" to room "Room 2" with 200 (v4)
Then user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" sees the following attendees in room "Room 2" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
Scenario: Removing a user from the parent also removes them from the breakout room
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
When user "participant1" adds user "participant2" to room "class room" with 200 (v4)
When user "participant1" adds user "participant3" to room "class room" with 200 (v4)
When user "participant1" adds user "participant4" to room "class room" with 200 (v4)
Then user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| users | participant3 | 3 |
| users | participant4 | 3 |
And user "participant1" promotes "participant2" in room "class room" with 200 (v4)
When user "participant1" creates 2 manual breakout rooms for "class room" with 200 (v1)
| users::participant3 | 0 |
| users::participant4 | 1 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant3" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
And user "participant4" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
When user "participant1" removes user "participant2" from room "class room" with 200 (v4)
And user "participant1" removes user "participant3" from room "class room" with 200 (v4)
And user "participant4" removes themselves from room "class room" with 200 (v4)
Then user "participant2" is participant of the following rooms (v4)
And user "participant3" is participant of the following rooms (v4)
And user "participant4" is participant of the following rooms (v4)
Scenario: Only users with normal level can be moved between breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
When user "participant1" adds user "participant2" to room "class room" with 200 (v4)
Then user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" promotes "participant2" in room "class room" with 200 (v4)
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
# Can not "move" moderators
When user "participant1" adds user "participant2" to room "Room 2" with 400 (v4)
# Can not "add" groups
When user "participant1" adds group "group1" to room "Room 2" with 400 (v4)
Scenario: Teacher applies a new attendee map
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" adds user "participant3" to room "class room" with 200 (v4)
And user "participant1" adds user "participant4" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| users | participant3 | 3 |
| users | participant4 | 3 |
And user "participant1" promotes "participant2" in room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 2 |
| users | participant3 | 3 |
| users | participant4 | 3 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
| users::participant3 | 0 |
| users::participant4 | 1 |
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
| 2 | Room 3 | 1 | 0 | 0 |
Then user "participant3" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
Then user "participant4" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 2 |
When user "participant1" moves participants into different breakout rooms for "class room" with 400 (v1)
| users::participant2 | 0 |
| users::participant3 | 2 |
| users::participant4 | 1 |
When user "participant1" moves participants into different breakout rooms for "class room" with 400 (v1)
| users::participant3 | -2 |
| users::participant4 | 1 |
When user "participant1" moves participants into different breakout rooms for "class room" with 400 (v1)
| users::participant3 | 3 |
| users::participant4 | 1 |
When user "participant1" moves participants into different breakout rooms for "class room" with 200 (v1)
| users::participant3 | 2 |
| users::participant4 | 1 |
Then user "participant3" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 3 |
Then user "participant4" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 2 |
Scenario: Can not change various settings in breakout rooms directly
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
# Can not disable lobby
Then user "participant1" sets lobby state for room "Room 1" to "no lobby" with 400 (v4)
# Can not enable listing
And user "participant1" allows listing room "Room 1" for "all" with 400 (v4)
# Can not allow guests
And user "participant1" makes room "Room 1" public with 400 (v4)
# Can not set password
And user "participant1" sets password "Test123!" for room "Room 1" with 400 (v4)
# Can not set message expiration
And user "participant1" set the message expiration to 3600 of room "Room 1" with 400 (v4)
# Can enable recording consent
Given recording server is started
And the following "spreed" app config is set
| recording_consent | 2 |
Then user "participant1" sets the recording consent to 1 for room "Room 1" with 400 (v4)
Scenario: Handle recording consent for all breakout rooms on the parent
Given recording server is started
And the following "spreed" app config is set
| recording_consent | 2 |
And user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | recordingConsent |
| 2 | class room | 0 | 1 | 0 | 0 |
| 2 | Room 1 | 1 | 0 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 | 0 |
# Enabling recording consent on the parent is not allowed with breakout rooms running
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
Then user "participant1" sets the recording consent to 1 for room "class room" with 400 (v4)
And user "participant1" stops breakout rooms in room "class room" with 200 (v1)
# Enabling recording consent on the parent updates all breakout rooms
Then user "participant1" sets the recording consent to 1 for room "class room" with 200 (v4)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | recordingConsent |
| 2 | class room | 0 | 1 | 0 | 1 |
| 2 | Room 1 | 1 | 0 | 0 | 1 |
| 2 | Room 2 | 1 | 0 | 0 | 1 |
@@ -0,0 +1,183 @@
Feature: conversation-1/create
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
Scenario: Set password during creation
Given user "participant1" creates room "room1" (v4)
| roomType | 3 |
| roomName | room1 |
| password | P4$$w0rd |
Given user "participant1" creates room "room2" (v4)
| roomType | 2 |
| roomName | room2 |
| password | P4$$w0rd |
Then user "participant1" is participant of the following unordered rooms (v4)
| id | name | type | participantType | hasPassword |
| room1 | room1 | 3 | 1 | 1 |
| room2 | room2 | 2 | 1 | |
Scenario: Read only during creation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| readOnly | 1 |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | readOnly |
| room | 3 | 1 | 1 |
Scenario: Listable during creation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| listable | 1 |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | listable |
| room | 3 | 1 | 1 |
Scenario: Set message expiration during creation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| messageExpiration | 3600 |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | messageExpiration |
| room | 3 | 1 | 3600 |
Scenario: Set lobby during creation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| lobbyState | 1 |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | lobbyState | lobbyTimer |
| room | 3 | 1 | 1 | 0 |
Scenario: Set lobby with timer during creation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| lobbyState | 1 |
| lobbyTimer | OFFSET(3600) |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | lobbyState | lobbyTimer |
| room | 3 | 1 | 1 | GREATER_THAN_ZERO |
Scenario: Enable SIP during creation
Given the following "spreed" app config is set
| sip_bridge_dialin_info | +49-1234-567890 |
| sip_bridge_shared_secret | 1234567890abcdef |
| sip_bridge_groups | ["group1"] |
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| sipEnabled | 1 |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | sipEnabled |
| room | 3 | 1 | 1 |
Scenario: Set permissions during creation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| permissions | AV |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | defaultPermissions |
| room | 3 | 1 | CAV |
Scenario: Set recording consent during creation
Given recording server is started
Given signaling server is started
And the following "spreed" app config is set
| recording_consent | 2 |
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| recordingConsent | 1 |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | recordingConsent |
| room | 3 | 1 | 1 |
Scenario: Set mention permissions during creation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| mentionPermissions | 1 |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | mentionPermissions |
| room | 3 | 1 | 1 |
Scenario: Set description during creation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| description | Lorem ipsum |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | description |
| room | 3 | 1 | Lorem ipsum |
Scenario: Create extended conversation
Given user "participant1" creates room "room1" (v4)
| roomType | 3 |
| roomName | Your Group |
Given user "participant2" creates room "room2" (v4)
| roomType | 3 |
| roomName | Not Your Public |
Given user "participant2" creates room "room3" (v4)
| roomType | 2 |
| roomName | Not Your Group |
Given user "participant2" creates room "room4" (v4)
| roomType | 2 |
| roomName | Not Your Open |
| listable | 1 |
Given user "participant1" creates room "room5" (v4)
| roomType | 1 |
| invite | participant2 |
Given user "participant2" creates room "room6" (v4)
| roomType | 1 |
| invite | participant3 |
Then user "participant1" is participant of the following unordered rooms (v4)
| id | name | type | participantType |
| room1 | Your Group | 3 | 1 |
| room5 | participant2 | 1 | 1 |
Given user "participant1" creates room "room1-1" with 400 (v4)
| roomType | 3 |
| roomName | Own group conversation |
| objectType | extended_conversation |
| objectId | ROOM(room1) |
Given user "participant1" creates room "room2-1" with 400 (v4)
| roomType | 3 |
| roomName | Not own Public |
| objectType | extended_conversation |
| objectId | ROOM(room2) |
Given user "participant1" creates room "room3-1" with 400 (v4)
| roomType | 3 |
| roomName | Not okay Group |
| objectType | extended_conversation |
| objectId | ROOM(room3) |
Given user "participant1" creates room "room4-1" with 400 (v4)
| roomType | 3 |
| roomName | Not okay Open |
| objectType | extended_conversation |
| objectId | ROOM(room4) |
Given user "participant1" creates room "room5-1" (v4)
| roomType | 3 |
| roomName | Okay: Own one-to-one |
| objectType | extended_conversation |
| objectId | ROOM(room5) |
Given user "participant1" creates room "room6-1" with 400 (v4)
| roomType | 3 |
| roomName | Not okay one-to-one |
| objectType | extended_conversation |
| objectId | ROOM(room6) |
Given user "participant1" creates room "room7-1" with 400 (v4)
| roomType | 3 |
| roomName | Not okay Invalid |
| objectType | extended_conversation |
| objectId | in/valid |
Then user "participant1" is participant of the following unordered rooms (v4)
| id | name | type | participantType |
| room1 | Your Group | 3 | 1 |
| room5 | participant2 | 1 | 1 |
| room5-1 | Okay: Own one-to-one | 3 | 1 |