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
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:
@@ -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 |
|
||||
Reference in New Issue
Block a user