From 25323b9da0ce180530f5adb1e5b4f75c7fe7d365 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 8 May 2024 09:28:38 +0200 Subject: [PATCH] perf: Run only this one test Signed-off-by: Joas Schilling --- .github/workflows/integration-pgsql.yml | 2 +- .../conversation-1/add-participant.feature | 184 -- .../features/conversation-1/avatar.feature | 156 -- .../conversation-1/breakout-rooms.feature | 1788 ++++++++--------- .../bruteforce-protection.feature | 99 - .../conversation-1/delete-room.feature | 61 - .../conversation-1/delete-user.feature | 70 - 7 files changed, 895 insertions(+), 1465 deletions(-) delete mode 100644 tests/integration/features/conversation-1/add-participant.feature delete mode 100644 tests/integration/features/conversation-1/avatar.feature delete mode 100644 tests/integration/features/conversation-1/bruteforce-protection.feature delete mode 100644 tests/integration/features/conversation-1/delete-room.feature delete mode 100644 tests/integration/features/conversation-1/delete-user.feature diff --git a/.github/workflows/integration-pgsql.yml b/.github/workflows/integration-pgsql.yml index 2002858e134e..eabc5fb328c8 100644 --- a/.github/workflows/integration-pgsql.yml +++ b/.github/workflows/integration-pgsql.yml @@ -49,7 +49,7 @@ jobs: strategy: fail-fast: false matrix: - test-suite: ['callapi', 'chat-1', 'chat-2', 'command', 'conversation-1', 'conversation-2', 'conversation-3', 'conversation-4', 'conversation-5', 'federation', 'integration', 'sharing-1', 'sharing-2', 'sharing-3', 'sharing-4'] + test-suite: ['conversation-1'] php-versions: ['8.3'] server-versions: ['master'] guests-versions: ['master'] diff --git a/tests/integration/features/conversation-1/add-participant.feature b/tests/integration/features/conversation-1/add-participant.feature deleted file mode 100644 index 680c493d43a4..000000000000 --- a/tests/integration/features/conversation-1/add-participant.feature +++ /dev/null @@ -1,184 +0,0 @@ -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: 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 diff --git a/tests/integration/features/conversation-1/avatar.feature b/tests/integration/features/conversation-1/avatar.feature deleted file mode 100644 index 4be4c165b861..000000000000 --- a/tests/integration/features/conversation-1/avatar.feature +++ /dev/null @@ -1,156 +0,0 @@ -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"},"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" diff --git a/tests/integration/features/conversation-1/breakout-rooms.feature b/tests/integration/features/conversation-1/breakout-rooms.feature index 05a7aa4d786c..952c66f33dac 100644 --- a/tests/integration/features/conversation-1/breakout-rooms.feature +++ b/tests/integration/features/conversation-1/breakout-rooms.feature @@ -6,98 +6,98 @@ Feature: conversation/breakout-rooms 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 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) @@ -143,805 +143,805 @@ Feature: conversation/breakout-rooms | 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: Create an additional breakout room on the fly - 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" 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 | - 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 | - And user "participant2" 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 nest breakout rooms - Given user "participant1" creates room "Room 3" with 400 (v4) - | roomType | 2 | - | roomName | Room 3 | - | objectType | room | - | objectId | ROOM(Room 2) | - # Can not create room for other object types - Given user "participant1" creates room "Room 3" with 400 (v4) - | roomType | 2 | - | roomName | Room 3 | - | objectType | files | - | objectId | ROOM(class room) | - Given user "participant1" creates room "Room 3" with 201 (v4) - | roomType | 2 | - | roomName | Room 3 | - | objectType | room | - | objectId | ROOM(class room) | - 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 | - | 2 | Room 3 | 1 | 0 | 0 | - And user "participant2" 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 | - | 2 | Room 3 | 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 | - | 2 | Room 3 | 0 | 0 | 0 | - Given user "participant1" creates room "Room 3" with 201 (v4) - | roomType | 2 | - | roomName | Room 4 | - | objectType | room | - | objectId | ROOM(class room) | - 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 | - | 2 | Room 3 | 0 | 0 | 0 | - | 2 | Room 4 | 0 | 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: 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 - Currently 403 because it's not a public room, once they are supported as breakout rooms we need to check for 400 here. - And user "participant1" sets password "Test123!" for room "Room 1" with 403 (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 | +# +# 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: Create an additional breakout room on the fly +# 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" 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 | +# 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 | +# And user "participant2" 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 nest breakout rooms +# Given user "participant1" creates room "Room 3" with 400 (v4) +# | roomType | 2 | +# | roomName | Room 3 | +# | objectType | room | +# | objectId | ROOM(Room 2) | +# # Can not create room for other object types +# Given user "participant1" creates room "Room 3" with 400 (v4) +# | roomType | 2 | +# | roomName | Room 3 | +# | objectType | files | +# | objectId | ROOM(class room) | +# Given user "participant1" creates room "Room 3" with 201 (v4) +# | roomType | 2 | +# | roomName | Room 3 | +# | objectType | room | +# | objectId | ROOM(class room) | +# 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 | +# | 2 | Room 3 | 1 | 0 | 0 | +# And user "participant2" 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 | +# | 2 | Room 3 | 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 | +# | 2 | Room 3 | 0 | 0 | 0 | +# Given user "participant1" creates room "Room 3" with 201 (v4) +# | roomType | 2 | +# | roomName | Room 4 | +# | objectType | room | +# | objectId | ROOM(class room) | +# 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 | +# | 2 | Room 3 | 0 | 0 | 0 | +# | 2 | Room 4 | 0 | 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: 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 - Currently 403 because it's not a public room, once they are supported as breakout rooms we need to check for 400 here. +# And user "participant1" sets password "Test123!" for room "Room 1" with 403 (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 | diff --git a/tests/integration/features/conversation-1/bruteforce-protection.feature b/tests/integration/features/conversation-1/bruteforce-protection.feature deleted file mode 100644 index 7f15ee33c988..000000000000 --- a/tests/integration/features/conversation-1/bruteforce-protection.feature +++ /dev/null @@ -1,99 +0,0 @@ -Feature: conversation/bruteforce-protection - Background: - Given user "participant1" exists - Given user "participant2" exists - Given group "group1" exists - - # Does not log an attempt but shows the password form - Scenario: User opens the call/{token} URL of a password protected public room - Given enable brute force protection - And user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - Then the following brute force attempts are registered - When user "participant2" views call-URL of room "room" with 200 - | This conversation is password-protected. | - Then the following brute force attempts are registered - And disable brute force protection - - Scenario: User opens the call/{token} URL of a private room - Given enable brute force protection - And user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - Then the following brute force attempts are registered - When user "participant2" views call-URL of room "room" with 200 - Then the following brute force attempts are registered - | talkRoomToken | 1 | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant2" views call-URL of room "room" with 200 - Then the following brute force attempts are registered - | talkRoomToken | 1 | - Then user "participant2" joins room "room" with 200 (v4) - Then the following brute force attempts are registered - And disable brute force protection - - Scenario: User opens the call/{token} URL with invalid token - Given enable brute force protection - Then the following brute force attempts are registered - When user "participant2" views call-URL of room "invalid" with 200 - Then the following brute force attempts are registered - | talkRoomToken | 1 | - And disable brute force protection - - Scenario: User joins a password protected public room - Given enable brute force protection - And user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - Then the following brute force attempts are registered - # Joining without password - When user "participant2" joins room "room" with 403 (v4) - Then the following brute force attempts are registered - | talkRoomPassword | 1 | - # Joining with wrong password - Then user "participant2" joins room "room" with 403 (v4) - | password | wrong | - Then the following brute force attempts are registered - | talkRoomPassword | 2 | - Then user "participant2" joins room "room" with 200 (v4) - | password | foobar | - Then the following brute force attempts are registered - And disable brute force protection - - Scenario: User gets blocked after some attempts - Given enable brute force protection - Then the following brute force attempts are registered - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 429 - Then the following brute force attempts are registered - | talkRoomToken | 11 | - And disable brute force protection - - Scenario: Prevent brute forcing on an endpoint that is not meant to handle the password - Given enable brute force protection - And user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - Then the following brute force attempts are registered - And user "participant2" joins room "room" with 403 (v4) - Then the following brute force attempts are registered - | talkRoomPassword | 1 | - When user "participant2" views URL "apps/spreed" with query parameters and status code 200 - | token | room | - | password | foobar | - Then the following brute force attempts are registered - | talkRoomPassword | 1 | - And disable brute force protection diff --git a/tests/integration/features/conversation-1/delete-room.feature b/tests/integration/features/conversation-1/delete-room.feature deleted file mode 100644 index c9b2f8b6543c..000000000000 --- a/tests/integration/features/conversation-1/delete-room.feature +++ /dev/null @@ -1,61 +0,0 @@ -Feature: conversation/delete-room - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: Owner deletes - Given signaling server is started - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 1 | - And user "participant2" is not participant of room "room" (v4) - And user "participant3" is not participant of room "room" (v4) - And reset signaling server requests - When user "participant1" deletes room "room" with 200 (v4) - Then signaling server received the following requests - | token | data | - | room | {"type":"delete","delete":{"userids":["participant1"]}} | - Then user "participant1" is not participant of room "room" (v4) - - Scenario: Moderator deletes - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 2 | - And user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant2" deletes room "room" with 200 (v4) - Then user "participant1" is not participant of room "room" (v4) - And user "participant2" is not participant of room "room" (v4) - - Scenario: User deletes - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - And user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant2" deletes room "room" with 403 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - - Scenario: Stranger deletes - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" is participant of room "room" (v4) - And user "participant2" is not participant of room "room" (v4) - When user "participant2" deletes room "room" with 404 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is not participant of room "room" (v4) diff --git a/tests/integration/features/conversation-1/delete-user.feature b/tests/integration/features/conversation-1/delete-user.feature deleted file mode 100644 index fcc2f3467fe6..000000000000 --- a/tests/integration/features/conversation-1/delete-user.feature +++ /dev/null @@ -1,70 +0,0 @@ -Feature: conversation/delete-user - - Background: - Given user "participant1" exists - Given user "participant2" exists - - # There is no way to check that the room is deleted if the deleted user is the - # last one in a one-to-one or group room. - - Scenario: delete user who is in a one-to-one room - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant2" sends message "Message 1" to room "one-to-one room" with 201 - Then user "participant1" is participant of the following rooms (v4) - | name | type | readOnly | - | participant2 | 1 | 0 | - When user "participant2" is deleted - Then user "participant1" sees the following messages in room "one-to-one room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | one-to-one room | deleted_users | deleted_users | | Message 1 | [] | - Then user "participant1" is participant of the following rooms (v4) - | name | type | readOnly | - | participant2-displayname | 5 | 1 | - - Scenario: delete user who left a one-to-one room - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant2" sends message "Message 1" to room "one-to-one room" with 201 - Then user "participant1" is participant of the following rooms (v4) - | name | type | readOnly | - | participant2 | 1 | 0 | - When user "participant2" leaves room "one-to-one room" with 200 (v4) - When user "participant2" is deleted - Then user "participant1" sees the following messages in room "one-to-one room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | one-to-one room | deleted_users | deleted_users | | Message 1 | [] | - Then user "participant1" is participant of the following rooms (v4) - | name | type | readOnly | - | participant2-displayname | 5 | 1 | - - Scenario: delete user who is in a group room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | group room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "group room" with 201 - When user "participant2" is deleted - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | deleted_users | deleted_users | | Message 1 | [] | - - Scenario: delete user who is in a public room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | public room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "public room" with 201 - When user "participant2" is deleted - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | deleted_users | deleted_users | | Message 1 | [] | - - Scenario: delete user who is the last participant in a public room - Given user "participant2" creates room "public room" (v4) - | roomType | 3 | - | roomName | public room | - When user "participant2" is deleted - Then user "participant1" joins room "public room" with 404 (v4)