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

Источник: https://github.com/nextcloud/spreed/archive/refs/tags/v22.0.12.tar.gz
С этого коммита ветка официального Nextcloud Talk отрезана (решение владельца 2026-07-06).
Все дальнейшие изменения — только наши; версии релизов: 22.0.12-f7.N.
This commit is contained in:
2026-07-06 14:07:50 +00:00
commit 01acfa3b40
1716 changed files with 613013 additions and 0 deletions
@@ -0,0 +1,28 @@
Feature: callapi/group-read-only
Background:
Given user "participant1" exists
And user "participant2" exists
And user "participant3" exists
And group "attendees1" exists
And user "participant2" is member of group "attendees1"
Scenario: User1 invites group attendees1 to a group room and they cant join the call in a locked conversation
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| invite | attendees1 |
Then user "participant1" is participant of room "room" (v4)
And user "participant2" is participant of room "room" (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
When user "participant1" locks room "room" with 200 (v4)
And user "participant1" joins room "room" with 200 (v4)
And user "participant1" joins call "room" with 403 (v4)
And user "participant2" joins room "room" with 200 (v4)
And user "participant2" joins call "room" with 403 (v4)
Then user "participant1" sees 0 peers in call "room" with 403 (v4)
And user "participant2" sees 0 peers in call "room" with 403 (v4)
When user "participant1" unlocks room "room" with 200 (v4)
And user "participant1" joins call "room" with 200 (v4)
And user "participant2" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "participant2" sees 2 peers in call "room" with 200 (v4)
@@ -0,0 +1,107 @@
Feature: callapi/group
Background:
Given user "participant1" exists
And user "participant2" exists
And user "participant3" exists
And group "attendees1" exists
And user "participant2" is member of group "attendees1"
Scenario: User has no rooms
Then user "participant1" is participant of the following rooms (v4)
Then user "participant2" is participant of the following rooms (v4)
Then user "participant3" is participant of the following rooms (v4)
Scenario: User1 invites group attendees1 to a group room and they can do everything
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| invite | attendees1 |
Then user "participant1" is participant of room "room" (v4)
And user "participant2" is participant of room "room" (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
| flags | 1 |
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
Then user "participant1" is participant of the following rooms (v4)
| id | type | callFlag |
| room | 2 | 1 |
Then user "participant2" joins room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
And user "participant2" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "participant2" sees 2 peers in call "room" with 200 (v4)
Then user "participant1" is participant of the following rooms (v4)
| id | type | callFlag |
| room | 2 | 7 |
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
Then user "participant1" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
Then user "participant2" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant2" leaves room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Scenario: User1 invites group attendees1 to a group room and user3 can't do anything
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| invite | attendees1 |
Then user "participant1" is participant of room "room" (v4)
Then user "participant3" is not participant of room "room" (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
And user "participant3" joins room "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
And user "participant3" joins call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant3" leaves call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant3" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Scenario: User1 invites group attendees1 to a group room and guest can't do anything
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| invite | attendees1 |
Then user "participant1" is participant of room "room" (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
And user "guest" joins room "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
And user "guest" joins call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "guest" leaves call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "guest" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
@@ -0,0 +1,44 @@
Feature: callapi/lobby
Background:
Given user "participant1" exists
And user "participant2" exists
Scenario: Participant1 calls without lobby
When 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 room "room" (v4)
And user "participant2" is participant of room "room" (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
| spreed | call | room | A group call has started in room |
Scenario: Participant1 calls while participant2 is blocked by the lobby
When 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 room "room" (v4)
And user "participant2" is participant of room "room" (v4)
When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant2" has the following notifications
Scenario: Participant1 calls while participant2 is moderator
When 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 room "room" (v4)
And user "participant2" is participant of room "room" (v4)
And user "participant1" promotes "participant2" in room "room" with 200 (v4)
When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
| spreed | call | room | A group call has started in room |
@@ -0,0 +1,187 @@
Feature: callapi/notifications
Background:
Given user "participant1" exists
Given user "participant2" exists
Scenario: Normal call notification
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Given user "participant1" joins room "room" with 200 (v4)
Given user "participant2" joins room "room" with 200 (v4)
Then user "participant2" checks call notification for "room" with 201 (v4)
Given user "participant1" joins call "room" with 200 (v4)
Then user "participant2" checks call notification for "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
| spreed | call | room | A group call has started in room |
Given user "participant2" joins call "room" with 200 (v4)
Then user "participant2" checks call notification for "room" with 404 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Scenario: Missed call notification
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Given user "participant1" joins room "room" with 200 (v4)
Given user "participant2" joins room "room" with 200 (v4)
Then user "participant2" checks call notification for "room" with 201 (v4)
Given user "participant1" joins call "room" with 200 (v4)
Then user "participant2" checks call notification for "room" with 200 (v4)
Then user "participant2" sees the following system messages in room "room" with 200
| room | actorType | actorId | systemMessage | message | silent | messageParameters |
| room | users | participant1 | call_started | {actor} started a call | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} |
| room | users | participant1 | user_added | {actor} added you | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"user":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"}} |
| room | users | participant1 | conversation_created | {actor} created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} |
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
| spreed | call | room | A group call has started in room |
Given user "participant1" leaves call "room" with 200 (v4)
Then user "participant2" checks call notification for "room" with 201 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
| spreed | call | room | You missed a group call in room |
Scenario: Silent call does not trigger notifications
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Given user "participant1" joins room "room" with 200 (v4)
Given user "participant2" joins room "room" with 200 (v4)
Given user "participant1" joins call "room" with 200 (v4)
| silent | true |
Then user "participant2" sees the following system messages in room "room" with 200
| room | actorType | actorId | systemMessage | message | silent | messageParameters |
| room | users | participant1 | call_started | {actor} started a silent call | true | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} |
| room | users | participant1 | user_added | {actor} added you | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"},"user":{"type":"user","id":"participant2","name":"participant2-displayname","mention-id":"participant2"}} |
| room | users | participant1 | conversation_created | {actor} created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","mention-id":"participant1"}} |
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Given user "participant1" leaves call "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Scenario: Silent call with dedicated ping does trigger notifications
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Given user "participant1" joins room "room" with 200 (v4)
Given user "participant2" joins room "room" with 200 (v4)
Given user "participant1" loads attendees attendee ids in room "room" (v4)
Given user "participant1" joins call "room" with 200 (v4)
| silent | true |
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Given user "participant1" pings user "participant2" to join call "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
| spreed | call | room | A group call has started in room |
Scenario: Calling an attendee that is in DND throws an error 'status' message with 400
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Given user "participant1" joins room "room" with 200 (v4)
Given user "participant2" joins room "room" with 200 (v4)
Given user "participant1" loads attendees attendee ids in room "room" (v4)
And user "participant2" sets status to "dnd" with 200 (v1)
Given user "participant1" joins call "room" with 200 (v4)
| silent | true |
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Given user "participant1" pings user "participant2" to join call "room" with 400 (v4)
Scenario: Lobby: No call notification sent for users that are blocked by the lobby
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" joins room "room" with 200 (v4)
And user "participant2" joins room "room" with 200 (v4)
And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4)
When user "participant1" joins call "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Scenario: Lobby: Call notification sent to users with ignore lobby permissions
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" joins room "room" with 200 (v4)
And user "participant2" joins room "room" with 200 (v4)
And user "participant1" sets permissions for "participant2" in room "room" to "L" with 200 (v4)
And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4)
When user "participant1" joins call "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
| spreed | call | room | A group call has started in room |
Scenario: Lobby: Call notification sent to moderators
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" joins room "room" with 200 (v4)
And user "participant2" joins room "room" with 200 (v4)
And user "participant1" promotes "participant2" in room "room" with 200 (v4)
And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4)
When user "participant1" joins call "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
| spreed | call | room | A group call has started in room |
Scenario: Lobby: Call notification wiped if lobby enabled afterwards
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" joins room "room" with 200 (v4)
And user "participant2" joins room "room" with 200 (v4)
When user "participant1" joins call "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
| spreed | call | room | A group call has started in room |
And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Scenario: Pinging a user that is removed gives 404
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Given user "participant1" joins room "room" with 200 (v4)
Given user "participant1" loads attendees attendee ids in room "room" (v4)
Given user "participant1" joins call "room" with 200 (v4)
| silent | true |
And user "participant1" removes user "participant2" from room "room" with 200 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Given user "participant1" pings user "participant2" to join call "room" with 404 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Scenario: Pinging a user that is removed gives 404
When user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
When user "participant2" creates room "room2" (v4)
| roomType | 2 |
| roomName | room2 |
Given user "participant1" joins room "room" with 200 (v4)
Given user "participant1" loads attendees attendee ids in room "room" (v4)
Given user "participant1" joins call "room" with 200 (v4)
| silent | true |
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
Given user "participant1" pings user "participant1" attendeeIdPlusOne to join call "room" with 404 (v4)
Then user "participant2" has the following notifications
| app | object_type | object_id | subject |
@@ -0,0 +1,146 @@
Feature: callapi/one-to-one
Background:
Given user "participant1" exists
And user "participant2" exists
And user "participant3" exists
Scenario: User has no rooms
Then user "participant1" is participant of the following rooms (v4)
Then user "participant2" is participant of the following rooms (v4)
Then user "participant3" is participant of the following rooms (v4)
Scenario: User1 invites user2 to a one2one room and they can do everything
When user "participant1" creates room "room" (v4)
| roomType | 1 |
| invite | participant2 |
Then user "participant1" is participant of room "room" (v4)
And user "participant2" is not participant of room "room" (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" is participant of room "room" (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
And user "participant2" joins room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
And user "participant2" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "participant2" sees 2 peers in call "room" with 200 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
Then user "participant1" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
Then user "participant2" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant2" leaves room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Scenario: User1 invites user2 to a one2one room and user3 can't do anything
When user "participant1" creates room "room" (v4)
| roomType | 1 |
| invite | participant2 |
Then user "participant1" is participant of room "room" (v4)
Then user "participant3" is not participant of room "room" (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
And user "participant3" joins room "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
And user "participant3" joins call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant3" leaves call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant3" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Scenario: User1 invites user2 to a one2one room and guest can't do anything
When user "participant1" creates room "room" (v4)
| roomType | 1 |
| invite | participant2 |
Then user "participant1" is participant of room "room" (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
And user "guest" joins room "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
And user "guest" joins call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "guest" leaves call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "guest" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Scenario: Starting a call in a one-to-one re-adds the participants
Given user "participant1" creates room "room" (v4)
| roomType | 1 |
| invite | participant2 |
Given user "participant2" creates room "room" with 200 (v4)
| roomType | 1 |
| invite | participant1 |
And user "participant1" is participant of room "room" (v4)
And user "participant2" is participant of room "room" (v4)
When user "participant1" removes themselves from room "room" with 200 (v4)
Then user "participant1" is not participant of room "room" (v4)
When user "participant2" joins room "room" with 200 (v4)
Then user "participant1" is not participant of room "room" (v4)
Then user "participant1" sees 0 peers in call "room" with 404 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
When user "participant2" joins call "room" with 200 (v4)
Then user "participant1" is participant of room "room" (v4)
And user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
Scenario: Can not join a call in former one-to-one
Given user "participant1" creates room "room" (v4)
| roomType | 1 |
| invite | participant2 |
Given user "participant2" creates room "room" with 200 (v4)
| roomType | 1 |
| invite | participant1 |
And user "participant1" is participant of room "room" (v4)
And user "participant2" is participant of room "room" (v4)
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 1 | 1 |
When user "participant2" is deleted
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 5 | 1 |
When user "participant1" joins room "room" with 200 (v4)
And user "participant1" joins call "room" with 403 (v4)
Then user "participant1" is participant of room "room" (v4)
And user "participant1" sees 0 peers in call "room" with 403 (v4)
@@ -0,0 +1,169 @@
Feature: callapi/password
Background:
Given user "participant1" exists
And user "participant2" exists
And user "participant3" exists
Scenario: User has no rooms
Then user "participant1" is participant of the following rooms (v4)
Then user "participant2" is participant of the following rooms (v4)
Then user "participant3" is participant of the following rooms (v4)
Scenario: User1 invites user2 to a public room and they can do everything
When user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" sets password "foobar" for room "room" with 200 (v4)
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then user "participant1" is participant of room "room" (v4)
And user "participant2" is participant of room "room" (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
And user "participant2" joins room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
And user "participant2" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "participant2" sees 2 peers in call "room" with 200 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
Then user "participant2" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Scenario: User1 invites user2 to a public room and user3 can not join without password
When user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" sets password "foobar" for room "room" with 200 (v4)
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then user "participant1" is participant of room "room" (v4)
Then user "participant3" is not participant of room "room" (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
And user "participant3" joins room "room" with 403 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
And user "participant3" joins call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant3" leaves call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant3" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Scenario: User1 invites user2 to a public room and user3 can join with password
When user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" sets password "foobar" for room "room" with 200 (v4)
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then user "participant1" is participant of room "room" (v4)
Then user "participant3" is not participant of room "room" (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
And user "participant3" joins room "room" with 200 (v4)
| password | foobar |
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 1 peers in call "room" with 200 (v4)
And user "participant3" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "participant3" sees 2 peers in call "room" with 200 (v4)
Then user "participant3" leaves call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 1 peers in call "room" with 200 (v4)
Then user "participant3" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Scenario: User1 invites user2 to a public room and guest can not join without password
When user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" sets password "foobar" for room "room" with 200 (v4)
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then user "participant1" is participant of room "room" (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
And user "guest" joins room "room" with 403 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
And user "guest" joins call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "guest" leaves call "room" with 404 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Scenario: User1 invites user2 to a public room and guest can join with password
When user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" sets password "foobar" for room "room" with 200 (v4)
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
Then user "participant1" is participant of room "room" (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
And user "guest" joins room "room" with 200 (v4)
| password | foobar |
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 1 peers in call "room" with 200 (v4)
And user "guest" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "guest" sees 2 peers in call "room" with 200 (v4)
Then user "guest" leaves call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 1 peers in call "room" with 200 (v4)
Then user "guest" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
@@ -0,0 +1,69 @@
Feature: callapi/public-read-only
Background:
Given user "participant1" exists
And user "participant2" exists
And user "participant3" exists
Scenario: User1 invites user2 to a public room and they cant join the call in a locked conversation
When 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 room "room" (v4)
And user "participant2" is participant of room "room" (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
When user "participant1" locks room "room" with 200 (v4)
And user "participant1" joins room "room" with 200 (v4)
And user "participant1" joins call "room" with 403 (v4)
And user "participant2" joins room "room" with 200 (v4)
And user "participant2" joins call "room" with 403 (v4)
Then user "participant1" sees 0 peers in call "room" with 403 (v4)
And user "participant2" sees 0 peers in call "room" with 403 (v4)
When user "participant1" unlocks room "room" with 200 (v4)
And user "participant1" joins call "room" with 200 (v4)
And user "participant2" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "participant2" sees 2 peers in call "room" with 200 (v4)
Scenario: User1 invites user2 to a public room and user3 cant join the call in a locked conversation
When 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 room "room" (v4)
Then user "participant3" is not participant of room "room" (v4)
When user "participant1" locks room "room" with 200 (v4)
And user "participant1" joins room "room" with 200 (v4)
And user "participant1" joins call "room" with 403 (v4)
And user "participant3" joins room "room" with 200 (v4)
And user "participant3" joins call "room" with 403 (v4)
Then user "participant1" sees 0 peers in call "room" with 403 (v4)
And user "participant3" sees 0 peers in call "room" with 403 (v4)
When user "participant1" unlocks room "room" with 200 (v4)
And user "participant1" joins call "room" with 200 (v4)
And user "participant3" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "participant3" sees 2 peers in call "room" with 200 (v4)
Scenario: User1 invites user2 to a public room and guest cant join the call in a locked conversation
When 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 room "room" (v4)
When user "participant1" locks room "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" joins call "room" with 403 (v4)
Then user "guest" joins room "room" with 200 (v4)
And user "guest" joins call "room" with 403 (v4)
Then user "participant1" sees 0 peers in call "room" with 403 (v4)
And user "guest" sees 0 peers in call "room" with 403 (v4)
When user "participant1" unlocks room "room" with 200 (v4)
And user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
And user "guest" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "guest" sees 2 peers in call "room" with 200 (v4)
@@ -0,0 +1,121 @@
Feature: callapi/public
Background:
Given user "participant1" exists
And user "participant2" exists
And user "participant3" exists
Scenario: User has no rooms
Then user "participant1" is participant of the following rooms (v4)
Then user "participant2" is participant of the following rooms (v4)
Then user "participant3" is participant of the following rooms (v4)
Scenario: User1 invites user2 to a public room and they can do everything
When 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 room "room" (v4)
And user "participant2" is participant of room "room" (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
Then user "participant2" joins room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
And user "participant2" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "participant2" sees 2 peers in call "room" with 200 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
Then user "participant1" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant2" sees 1 peers in call "room" with 200 (v4)
Then user "participant2" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant2" leaves room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Scenario: User1 invites user2 to a public room and user3 can do everything
When 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 room "room" (v4)
Then user "participant3" is not participant of room "room" (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant3" joins room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 1 peers in call "room" with 200 (v4)
And user "participant3" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "participant3" sees 2 peers in call "room" with 200 (v4)
Then user "participant3" leaves call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 1 peers in call "room" with 200 (v4)
Then user "participant3" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant3" sees 0 peers in call "room" with 404 (v4)
Scenario: User1 invites user2 to a public room and guest can do everything
When 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 room "room" (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" joins room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "participant2" sees 0 peers in call "room" with 200 (v4)
Then user "participant1" joins call "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "guest" joins room "room" with 200 (v4) session name "guest1"
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 1 peers in call "room" with 200 (v4)
And user "guest" joins call "room" with 200 (v4)
Then user "participant1" sees 2 peers in call "room" with 200 (v4)
And user "guest" sees 2 peers in call "room" with 200 (v4)
And guest "guest" sets name to "=1+1" in room "room" with 200 (v1)
And invoking occ with "user:setting participant1 settings email participant1@example.tld"
And user "participant2" downloads call participants from "room" as "csv" with 403 (v4)
And user "participant1" downloads call participants from "room" as "csv" with 200 (v4)
| name | email | type | identifier |
| participant1-displayname | participant1@example.tld | users | participant1 |
| '=1+1 | | guests | guest1 |
Then user "guest" leaves call "room" with 200 (v4)
And user "participant1" downloads call participants from "room" as "csv" with 200 (v4)
| name | email | type | identifier |
| participant1-displayname | participant1@example.tld | users | participant1 |
| '=1+1 | | guests | guest1 |
And invoking occ with "user:setting participant1 settings email --delete"
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 1 peers in call "room" with 200 (v4)
Then user "guest" leaves room "room" with 200 (v4)
Then user "participant1" sees 1 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves call "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
Then user "participant1" leaves room "room" with 200 (v4)
Then user "participant1" sees 0 peers in call "room" with 200 (v4)
And user "guest" sees 0 peers in call "room" with 404 (v4)
@@ -0,0 +1,733 @@
Feature: callapi/recording
Background:
Given user "participant1" exists
Given user "participant2" exists
Scenario: Start and stop video recording
Given recording server is started
Given signaling server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
And reset signaling server requests
When user "participant1" starts "video" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
Then signaling server received the following requests
| token | data |
| room1 | {"type":"message","message":{"data":{"type":"recording","recording":{"status":3}}}} |
| room1 | {"type":"update","update":{"userids":["participant1"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":{"date":"ACTIVE_SINCE()","timezone_type":3,"timezone":"UTC"},"sip-enabled":0,"description":""}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 3 |
And recording server sent started request for "video" recording in room "room1" as "participant1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 1 |
And reset signaling server requests
When user "participant1" stops recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} |
Then signaling server received the following requests
# Nothing changes until the recording backend confirms the stop
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 1 |
And reset signaling server requests
And recording server sent stopped request for recording in room "room1" as "participant1" with 200
Then signaling server received the following requests
| token | data |
| room1 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| room1 | {"type":"message","message":{"data":{"type":"recording","recording":{"status":0}}}} |
| room1 | {"type":"update","update":{"userids":["participant1"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":{"date":"ACTIVE_SINCE()","timezone_type":3,"timezone":"UTC"},"sip-enabled":0,"description":""}}} |
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | recording_stopped |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Start and stop audio recording
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
When user "participant1" starts "audio" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":2,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 4 |
And recording server sent started request for "audio" recording in room "room1" as "participant1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | audio_recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 2 |
When user "participant1" stops recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 2 |
And recording server sent stopped request for recording in room "room1" as "participant1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | audio_recording_stopped |
| room1 | users | participant1 | participant1-displayname | audio_recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: No system message should be shown when the call was just ended for everyone
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
When user "participant1" starts "video" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And recording server sent started request for "video" recording in room "room1" as "participant1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" ends call "room1" with 200 (v4)
And recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":[]} |
And recording server sent stopped request for recording in room "room1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | call_ended_everyone |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
Scenario: No system message should be shown when the call was ended by the last one leaving
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
When user "participant1" starts "video" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And recording server sent started request for "video" recording in room "room1" as "participant1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" leaves call "room1" with 200 (v4)
And recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":[]} |
And recording server sent stopped request for recording in room "room1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | call_ended |
| room1 | users | participant1 | participant1-displayname | call_left |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
Scenario: Recording failed to start
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
And user "participant1" starts "video" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 3 |
When recording server sent failed request for recording in room "room1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 5 |
Scenario: Video recording failed
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
And user "participant1" starts "video" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 3 |
And recording server sent started request for "video" recording in room "room1" as "participant1" with 200
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 1 |
When recording server sent failed request for recording in room "room1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | guests | failed-to-get-session | | recording_failed |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 5 |
Scenario: Start and stop recording again after the previous one failed to start
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
And user "participant1" starts "video" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 3 |
And recording server sent failed request for recording in room "room1" with 200
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 5 |
When user "participant1" starts "video" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 3 |
And recording server sent started request for "video" recording in room "room1" as "participant1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 1 |
When user "participant1" stops recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 1 |
And recording server sent stopped request for recording in room "room1" as "participant1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | recording_stopped |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Start and stop recording again after the previous one failed
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
And user "participant1" starts "video" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 3 |
And recording server sent started request for "video" recording in room "room1" as "participant1" with 200
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 1 |
And recording server sent failed request for recording in room "room1" with 200
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 5 |
When user "participant1" starts "video" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 3 |
And recording server sent started request for "video" recording in room "room1" as "participant1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | guests | failed-to-get-session | | recording_failed |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 1 |
When user "participant1" stops recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 1 |
And recording server sent stopped request for recording in room "room1" as "participant1" with 200
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | recording_stopped |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | guests | failed-to-get-session | | recording_failed |
| room1 | users | participant1 | participant1-displayname | recording_started |
| room1 | users | participant1 | participant1-displayname | call_started |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Get error when start|stop recording and already did this
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
When user "participant1" starts "audio" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":2,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And recording server sent started request for "audio" recording in room "room1" as "participant1" with 200
And user "participant1" starts "audio" recording in room "room1" with 400 (v1)
Then the response error matches with "recording"
And recording server received the following requests
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 2 |
When user "participant1" stops recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} |
And user "participant1" stops recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} |
And recording server sent stopped request for recording in room "room1" as "participant1" with 200
And user "participant1" stops recording in room "room1" with 200 (v1)
Then recording server received the following requests
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
When user "participant1" starts "video" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And recording server sent started request for "video" recording in room "room1" as "participant1" with 200
And user "participant1" starts "video" recording in room "room1" with 400 (v1)
Then the response error matches with "recording"
And recording server received the following requests
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 1 |
When user "participant1" stops recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} |
And user "participant1" stops recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} |
And recording server sent stopped request for recording in room "room1" as "participant1" with 200
And user "participant1" stops recording in room "room1" with 200 (v1)
Then recording server received the following requests
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Get error when try to start recording with invalid status
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
When user "participant1" starts "invalid" recording in room "room1" with 400 (v1)
Then the response error matches with "status"
And recording server received the following requests
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Manager try without success to start recording when signaling is internal
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
When user "participant1" starts "video" recording in room "room1" with 400 (v1)
Then the response error matches with "config"
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
When user "participant1" starts "audio" recording in room "room1" with 400 (v1)
Then the response error matches with "config"
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Get error when non moderator/owner try to start recording
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
And user "participant1" adds user "participant2" to room "room1" with 200 (v4)
And user "participant2" joins room "room1" with 200 (v4)
And user "participant2" joins call "room1" with 200 (v4)
When user "participant2" starts "video" recording in room "room1" with 403 (v1)
And user "participant2" starts "audio" recording in room "room1" with 403 (v1)
Then recording server received the following requests
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Get error when try to start recording and no call started
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
When user "participant1" starts "video" recording in room "room1" with 400 (v1)
Then the response error matches with "call"
And recording server received the following requests
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
When user "participant1" starts "audio" recording in room "room1" with 400 (v1)
Then the response error matches with "call"
And recording server received the following requests
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Store recording with success and create transcript
Given Fake summary task provider is enabled
Given the following spreed app config is set
| call_recording_transcription | yes |
| call_recording_summary | yes |
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
When user "participant1" store recording file "/img/join_call.ogg" in room "room1" with 200 (v1)
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call.ogg. |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
And repeating run "OC\TaskProcessing\SynchronousBackgroundJob" background jobs
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Call summary now available | The summary for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call - summary.md. |
| spreed | recording | room1 | Transcript now available | The transcript for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call.md. |
| spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call.ogg. |
When user "participant1" shares file from the last notification to room "room1" with 200 (v1)
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" sees the following messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | messageType | message | messageParameters |
| room1 | users | participant1 | participant1-displayname | record-audio | {file} | "IGNORE" |
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Call summary now available | The summary for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call - summary.md. |
| spreed | recording | room1 | Transcript now available | The transcript for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call.md. |
When user "participant1" shares file from the last notification to room "room1" with 200 (v1)
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Call summary now available | The summary for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call - summary.md. |
When user "participant1" shares file from the first notification to room "room1" with 200 (v1)
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
Then user "participant1" sees the following system messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | systemMessage |
| room1 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" sees the following messages in room "room1" with 200 (v1)
| room | actorType | actorId | actorDisplayName | messageType | message | messageParameters |
| room1 | users | participant1 | participant1-displayname | record-audio | {file} | "IGNORE" |
| room1 | users | participant1 | participant1-displayname | record-audio | {file} | "IGNORE" |
| room1 | users | participant1 | participant1-displayname | record-audio | {file} | "IGNORE" |
Scenario: Store recording with success but fail to transcript
Given Fake summary task provider is enabled
Given the following spreed app config is set
| call_recording_transcription | yes |
| call_recording_summary | yes |
Given the following testing app config is set
| fail-testing-audio2text | yes |
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
When user "participant1" store recording file "/img/leave_call.ogg" in room "room1" with 200 (v1)
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/leave_call.ogg. |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
And repeating run "OC\TaskProcessing\SynchronousBackgroundJob" background jobs
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Failed to transcript call recording | The server failed to transcript the recording at /Talk/Recording/ROOM(room1)/leave_call.ogg for the call in room1. Please reach out to the administration. |
| spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/leave_call.ogg. |
Scenario: Store recording and transcript with success but fail to summarize
Given Fake summary task provider is enabled
Given the following spreed app config is set
| call_recording_transcription | yes |
| call_recording_summary | yes |
Given the following testing app config is set
| fail-testing-text2text-summary | yes |
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
When user "participant1" store recording file "/img/leave_call.ogg" in room "room1" with 200 (v1)
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/leave_call.ogg. |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
And repeating run "OC\TaskProcessing\SynchronousBackgroundJob" background jobs
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Failed to summarize call recording | The server failed to summarize the recording at /Talk/Recording/ROOM(room1)/leave_call.ogg for the call in room1. Please reach out to the administration. |
| spreed | recording | room1 | Transcript now available | The transcript for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/leave_call.md. |
| spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/leave_call.ogg. |
Scenario: Store recording and transcript with success but summarize is off
Given Fake summary task provider is enabled
Given the following spreed app config is set
| call_recording_transcription | yes |
| call_recording_summary | no |
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
When user "participant1" store recording file "/img/leave_call.ogg" in room "room1" with 200 (v1)
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/leave_call.ogg. |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
And repeating run "OC\TaskProcessing\SynchronousBackgroundJob" background jobs
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Transcript now available | The transcript for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/leave_call.md. |
| spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/leave_call.ogg. |
Scenario: Store recording and summarize with success but transcript is off
Given Fake summary task provider is enabled
Given the following spreed app config is set
| call_recording_transcription | no |
| call_recording_summary | yes |
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
When user "participant1" store recording file "/img/join_call.ogg" in room "room1" with 200 (v1)
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call.ogg. |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
And repeating run "OC\TaskProcessing\SynchronousBackgroundJob" background jobs
Then user "participant1" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | recording | room1 | Call summary now available | The summary for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call - summary.md. |
| spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call.ogg. |
Scenario: Store recording with failure exceeding the upload_max_filesize
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
When user "participant1" store recording file "big" in room "room1" with 400 (v1)
Then user "participant1" has the following notifications
| app | object_type | object_id | subject |
| spreed | recording_information | room1 | Failed to upload call recording |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Store recording with failure exceeding the post_max_size
Given recording server is started
Given user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
And user "participant1" starts "audio" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":2,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And recording server sent started request for "audio" recording in room "room1" as "participant1" with 200
When user "participant1" ends call "room1" with 200 (v4)
Then recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":[]} |
And recording server sent stopped request for recording in room "room1" as "participant1" with 200
When user "NULL" store recording file "big" in room "room1" with 400 (v1)
Then user "participant1" has the following notifications
| app | object_type | object_id | subject |
| spreed | recording_information | room1 | Failed to upload call recording |
Scenario: Stop recording automatically when end the call
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
And user "participant1" starts "audio" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":2,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And recording server sent started request for "audio" recording in room "room1" as "participant1" with 200
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 2 |
When user "participant1" ends call "room1" with 200 (v4)
Then recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":[]} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 2 |
And recording server sent stopped request for recording in room "room1" as "participant1" with 200
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Stop recording automatically when the last participant leaves the call
Given recording server is started
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
And user "participant1" starts "audio" recording in room "room1" with 200 (v1)
And recording server received the following requests
| token | data |
| room1 | {"type":"start","start":{"status":2,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} |
And recording server sent started request for "audio" recording in room "room1" as "participant1" with 200
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 2 |
When user "participant1" leaves call "room1" with 200 (v4)
Then recording server received the following requests
| token | data |
| room1 | {"type":"stop","stop":[]} |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 2 |
And recording server sent stopped request for recording in room "room1" with 200
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | callRecording |
| 2 | room1 | 0 |
Scenario: Recording consent required by admin
Given recording server is started
And the following "spreed" app config is set
| recording_consent | 1 |
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 400 (v4)
And user "participant1" joins call "room1" with 400 (v4)
| recordingConsent | 0 |
And user "participant1" joins call "room1" with 200 (v4)
| recordingConsent | 1 |
Scenario: Recording consent optional by admin enabled by moderator
Given recording server is started
And the following "spreed" app config is set
| recording_consent | 2 |
And user "participant1" creates room "room1" (v4)
| roomType | 2 |
| roomName | room1 |
And user "participant1" joins room "room1" with 200 (v4)
And user "participant1" joins call "room1" with 200 (v4)
# Can not enable consent when a call is on-going …
When user "participant1" sets the recording consent to 1 for room "room1" with 400 (v4)
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name | recordingConsent |
| 2 | room1 | 0 |
When user "participant1" leaves call "room1" with 200 (v4)
And user "participant1" sets the recording consent to 1 for room "room1" with 200 (v4)
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name | recordingConsent |
| 2 | room1 | 1 |
And user "participant1" joins call "room1" with 400 (v4)
And user "participant1" joins call "room1" with 200 (v4)
| recordingConsent | 1 |
# … but can disable consent when a call is on-going
When user "participant1" sets the recording consent to 0 for room "room1" with 200 (v4)
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name | recordingConsent |
| 2 | room1 | 0 |
When user "participant1" leaves call "room1" with 200 (v4)
# Invalid value on conversation level
When user "participant1" sets the recording consent to 2 for room "room1" with 400 (v4)
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name | recordingConsent |
| 2 | room1 | 0 |
And the following recording consent is recorded for room "room1"
| token | actorType | actorId |
| room1 | users | participant1 |
And the following recording consent is recorded for user "participant1"
| token | actorType | actorId |
| room1 | users | participant1 |
@@ -0,0 +1,46 @@
Feature: callapi/sip-dialout
Background:
Given user "participant1" exists
Given user "participant2" exists
Given group "group1" exists
Given user "participant1" is member of group "group1"
Scenario: SIP admin uses dial out
Given signaling server is started
And the following "spreed" app config is set
| sip_bridge_dialin_info | +49-1234-567890 |
| sip_bridge_shared_secret | 1234567890abcdef |
| sip_bridge_groups | ["group1"] |
| sip_dialout | yes |
And user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" is participant of the following rooms (v4)
| id | type | participantType | sipEnabled |
| room | 3 | 1 | 0 |
When user "participant1" adds user "participant2" to room "room" with 200 (v4)
When user "participant1" adds phone "+491601231212" to room "room" with 200 (v4)
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| participantType | inCall | actorType | actorId | displayName | phoneNumber | callId |
| 3 | 0 | phones | PHONE(+491601231212) | +49160123 | +491601231212 | |
| 3 | 0 | users | participant2 | participant2-displayname | | |
| 1 | 0 | users | participant1 | participant1-displayname | | |
When user "participant1" joins room "room" with 200 (v4)
And user "participant1" joins call "room" with 200 (v4)
And reset signaling server requests
And signaling server will respond with
| response | {"type": "dialout","dialout": {"callid": "the-call-id"}} |
And user "participant1" dials out to "+491601231212" from call in room "room" with 201 (v4)
Then signaling server received the following requests
| token | data |
| room | {"type":"dialout","dialout":{"number":"+491601231212","options":{"attendeeId":PHONEATTENDEE(+491601231212),"actorType":"phones","actorId":"PHONE(+491601231212)"}}} |
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| participantType | inCall | actorType | actorId | displayName | phoneNumber | callId |
| 3 | 0 | phones | PHONE(+491601231212) | +49160123 | +491601231212 | the-call-id |
| 3 | 0 | users | participant2 | participant2-displayname | | |
| 1 | 7 | users | participant1 | participant1-displayname | | |
Then user "participant2" sees the following attendees in room "room" with 200 (v4)
| participantType | inCall | actorType | actorId | displayName | phoneNumber | callId |
| 3 | 0 | phones | PHONE(+491601231212) | +49160123 | | |
| 3 | 0 | users | participant2 | participant2-displayname | | |
| 1 | 7 | users | participant1 | participant1-displayname | | |
@@ -0,0 +1,282 @@
Feature: callapi/update-call-flags
Background:
Given user "owner" exists
And user "moderator" exists
And user "invited user" exists
And user "not invited but joined user" exists
Scenario: all participants can update their call flags when in a call
Given signaling server is started
Given user "owner" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
And user "owner" adds user "moderator" to room "public room" with 200 (v4)
And user "owner" promotes "moderator" in room "public room" with 200 (v4)
And user "owner" adds user "invited user" to room "public room" with 200 (v4)
And user "not invited but joined user" joins room "public room" with 200 (v4)
And user "guest moderator" joins room "public room" with 200 (v4)
And user "owner" promotes "guest moderator" in room "public room" with 200 (v4)
And user "guest" joins room "public room" with 200 (v4)
And user "owner" joins room "public room" with 200 (v4)
And user "moderator" joins room "public room" with 200 (v4)
And user "invited user" joins room "public room" with 200 (v4)
And user "not invited but joined user" joins room "public room" with 200 (v4)
And reset signaling server requests
And user "owner" joins call "public room" with 200 (v4)
Then signaling server received the following requests
| token | data |
| public room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| public room | {"type":"incall","incall":{"incall":7,"changed":[{"inCall":7,"lastPing":LAST_PING(),"sessionId":"SESSION(owner)","nextcloudSessionId":"SESSION(owner)","participantType":1,"participantPermissions":254,"actorType":"users","actorId":"owner","userId":"owner"}],"users":[{"inCall":7,"lastPing":LAST_PING(),"sessionId":"SESSION(owner)","nextcloudSessionId":"SESSION(owner)","participantType":1,"participantPermissions":254,"actorType":"users","actorId":"owner","userId":"owner"}]}} |
And reset signaling server requests
When user "owner" updates call flags in room "public room" to "1" with 200 (v4)
Then signaling server received the following requests
| token | data |
| public room | {"type":"incall","incall":{"incall":1,"changed":[{"inCall":1,"lastPing":LAST_PING(),"sessionId":"SESSION(owner)","nextcloudSessionId":"SESSION(owner)","participantType":1,"participantPermissions":254,"actorType":"users","actorId":"owner","userId":"owner"}],"users":[{"inCall":1,"lastPing":LAST_PING(),"sessionId":"SESSION(owner)","nextcloudSessionId":"SESSION(owner)","participantType":1,"participantPermissions":254,"actorType":"users","actorId":"owner","userId":"owner"}]}} |
And user "moderator" joins call "public room" with 200 (v4)
And user "invited user" joins call "public room" with 200 (v4)
And user "not invited but joined user" joins call "public room" with 200 (v4)
And user "guest moderator" joins call "public room" with 200 (v4)
And user "guest" joins call "public room" with 200 (v4)
And user "moderator" updates call flags in room "public room" to "1" with 200 (v4)
And user "invited user" updates call flags in room "public room" to "1" with 200 (v4)
And user "not invited but joined user" updates call flags in room "public room" to "1" with 200 (v4)
And user "guest moderator" updates call flags in room "public room" to "1" with 200 (v4)
And user "guest" updates call flags in room "public room" to "1" with 200 (v4)
Then user "owner" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 1 |
| users | moderator | 1 |
| users | invited user | 1 |
| users | not invited but joined user | 1 |
| guests | "guest moderator" | 1 |
| guests | "guest" | 1 |
And user "moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 1 |
| users | moderator | 1 |
| users | invited user | 1 |
| users | not invited but joined user | 1 |
| guests | "guest moderator" | 1 |
| guests | "guest" | 1 |
And user "invited user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 1 |
| users | moderator | 1 |
| users | invited user | 1 |
| users | not invited but joined user | 1 |
| guests | "guest moderator" | 1 |
| guests | "guest" | 1 |
And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 1 |
| users | moderator | 1 |
| users | invited user | 1 |
| users | not invited but joined user | 1 |
| guests | "guest moderator" | 1 |
| guests | "guest" | 1 |
And user "guest moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 1 |
| users | moderator | 1 |
| users | invited user | 1 |
| users | not invited but joined user | 1 |
| guests | "guest moderator" | 1 |
| guests | "guest" | 1 |
Scenario: update call flags with in call does not join the call
Given user "owner" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
And user "owner" adds user "moderator" to room "public room" with 200 (v4)
And user "owner" promotes "moderator" in room "public room" with 200 (v4)
And user "owner" adds user "invited user" to room "public room" with 200 (v4)
And user "not invited but joined user" joins room "public room" with 200 (v4)
And user "guest moderator" joins room "public room" with 200 (v4)
And user "owner" promotes "guest moderator" in room "public room" with 200 (v4)
And user "guest" joins room "public room" with 200 (v4)
And user "owner" joins room "public room" with 200 (v4)
And user "moderator" joins room "public room" with 200 (v4)
And user "invited user" joins room "public room" with 200 (v4)
And user "not invited but joined user" joins room "public room" with 200 (v4)
When user "owner" updates call flags in room "public room" to "1" with 400 (v4)
And user "moderator" updates call flags in room "public room" to "1" with 400 (v4)
And user "invited user" updates call flags in room "public room" to "1" with 400 (v4)
And user "not invited but joined user" updates call flags in room "public room" to "1" with 400 (v4)
And user "guest moderator" updates call flags in room "public room" to "1" with 400 (v4)
And user "guest" updates call flags in room "public room" to "1" with 400 (v4)
Then user "owner" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 0 |
| users | moderator | 0 |
| users | invited user | 0 |
| users | not invited but joined user | 0 |
| guests | "guest moderator" | 0 |
| guests | "guest" | 0 |
And user "moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 0 |
| users | moderator | 0 |
| users | invited user | 0 |
| users | not invited but joined user | 0 |
| guests | "guest moderator" | 0 |
| guests | "guest" | 0 |
And user "invited user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 0 |
| users | moderator | 0 |
| users | invited user | 0 |
| users | not invited but joined user | 0 |
| guests | "guest moderator" | 0 |
| guests | "guest" | 0 |
And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 0 |
| users | moderator | 0 |
| users | invited user | 0 |
| users | not invited but joined user | 0 |
| guests | "guest moderator" | 0 |
| guests | "guest" | 0 |
And user "guest moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 0 |
| users | moderator | 0 |
| users | invited user | 0 |
| users | not invited but joined user | 0 |
| guests | "guest moderator" | 0 |
| guests | "guest" | 0 |
Scenario: update call flags with disconnected does not leave the call
Given user "owner" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
And user "owner" adds user "moderator" to room "public room" with 200 (v4)
And user "owner" promotes "moderator" in room "public room" with 200 (v4)
And user "owner" adds user "invited user" to room "public room" with 200 (v4)
And user "not invited but joined user" joins room "public room" with 200 (v4)
And user "guest moderator" joins room "public room" with 200 (v4)
And user "owner" promotes "guest moderator" in room "public room" with 200 (v4)
And user "guest" joins room "public room" with 200 (v4)
And user "owner" joins room "public room" with 200 (v4)
And user "moderator" joins room "public room" with 200 (v4)
And user "invited user" joins room "public room" with 200 (v4)
And user "not invited but joined user" joins room "public room" with 200 (v4)
And user "owner" joins call "public room" with 200 (v4)
And user "moderator" joins call "public room" with 200 (v4)
And user "invited user" joins call "public room" with 200 (v4)
And user "not invited but joined user" joins call "public room" with 200 (v4)
And user "guest moderator" joins call "public room" with 200 (v4)
And user "guest" joins call "public room" with 200 (v4)
When user "owner" updates call flags in room "public room" to "0" with 400 (v4)
And user "moderator" updates call flags in room "public room" to "0" with 400 (v4)
And user "invited user" updates call flags in room "public room" to "0" with 400 (v4)
And user "not invited but joined user" updates call flags in room "public room" to "0" with 400 (v4)
And user "guest moderator" updates call flags in room "public room" to "0" with 400 (v4)
And user "guest" updates call flags in room "public room" to "0" with 400 (v4)
Then user "owner" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 7 |
| users | moderator | 7 |
| users | invited user | 7 |
| users | not invited but joined user | 7 |
| guests | "guest moderator" | 7 |
| guests | "guest" | 7 |
And user "moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 7 |
| users | moderator | 7 |
| users | invited user | 7 |
| users | not invited but joined user | 7 |
| guests | "guest moderator" | 7 |
| guests | "guest" | 7 |
And user "invited user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 7 |
| users | moderator | 7 |
| users | invited user | 7 |
| users | not invited but joined user | 7 |
| guests | "guest moderator" | 7 |
| guests | "guest" | 7 |
And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 7 |
| users | moderator | 7 |
| users | invited user | 7 |
| users | not invited but joined user | 7 |
| guests | "guest moderator" | 7 |
| guests | "guest" | 7 |
And user "guest moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 7 |
| users | moderator | 7 |
| users | invited user | 7 |
| users | not invited but joined user | 7 |
| guests | "guest moderator" | 7 |
| guests | "guest" | 7 |
Scenario: update call flags requires in call flag to be set
Given user "owner" creates room "public room" (v4)
| roomType | 3 |
| roomName | room |
And user "owner" adds user "moderator" to room "public room" with 200 (v4)
And user "owner" promotes "moderator" in room "public room" with 200 (v4)
And user "owner" adds user "invited user" to room "public room" with 200 (v4)
And user "not invited but joined user" joins room "public room" with 200 (v4)
And user "guest moderator" joins room "public room" with 200 (v4)
And user "owner" promotes "guest moderator" in room "public room" with 200 (v4)
And user "guest" joins room "public room" with 200 (v4)
And user "owner" joins room "public room" with 200 (v4)
And user "moderator" joins room "public room" with 200 (v4)
And user "invited user" joins room "public room" with 200 (v4)
And user "not invited but joined user" joins room "public room" with 200 (v4)
And user "owner" joins call "public room" with 200 (v4)
And user "moderator" joins call "public room" with 200 (v4)
And user "invited user" joins call "public room" with 200 (v4)
And user "not invited but joined user" joins call "public room" with 200 (v4)
And user "guest moderator" joins call "public room" with 200 (v4)
And user "guest" joins call "public room" with 200 (v4)
When user "owner" updates call flags in room "public room" to "2" with 400 (v4)
And user "moderator" updates call flags in room "public room" to "2" with 400 (v4)
And user "invited user" updates call flags in room "public room" to "2" with 400 (v4)
And user "not invited but joined user" updates call flags in room "public room" to "2" with 400 (v4)
And user "guest moderator" updates call flags in room "public room" to "2" with 400 (v4)
And user "guest" updates call flags in room "public room" to "2" with 400 (v4)
Then user "owner" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 7 |
| users | moderator | 7 |
| users | invited user | 7 |
| users | not invited but joined user | 7 |
| guests | "guest moderator" | 7 |
| guests | "guest" | 7 |
And user "moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 7 |
| users | moderator | 7 |
| users | invited user | 7 |
| users | not invited but joined user | 7 |
| guests | "guest moderator" | 7 |
| guests | "guest" | 7 |
And user "invited user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 7 |
| users | moderator | 7 |
| users | invited user | 7 |
| users | not invited but joined user | 7 |
| guests | "guest moderator" | 7 |
| guests | "guest" | 7 |
And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 7 |
| users | moderator | 7 |
| users | invited user | 7 |
| users | not invited but joined user | 7 |
| guests | "guest moderator" | 7 |
| guests | "guest" | 7 |
And user "guest moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | inCall |
| users | owner | 7 |
| users | moderator | 7 |
| users | invited user | 7 |
| users | not invited but joined user | 7 |
| guests | "guest moderator" | 7 |
| guests | "guest" | 7 |