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,99 @@
Feature: conversation/bruteforce-protection
Background:
Given user "participant1" exists
Given user "participant2" exists
Given group "group1" exists
# Does not log an attempt but shows the password form
Scenario: User opens the call/{token} URL of a password protected public room
Given enable brute force protection
And user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" sets password "foobar" for room "room" with 200 (v4)
Then the following brute force attempts are registered
When user "participant2" views call-URL of room "room" with 200
| This conversation is password-protected. |
Then the following brute force attempts are registered
And disable brute force protection
Scenario: User opens the call/{token} URL of a private room
Given enable brute force protection
And user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
Then the following brute force attempts are registered
When user "participant2" views call-URL of room "room" with 200
Then the following brute force attempts are registered
| talkRoomToken | 1 |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
When user "participant2" views call-URL of room "room" with 200
Then the following brute force attempts are registered
| talkRoomToken | 1 |
Then user "participant2" joins room "room" with 200 (v4)
Then the following brute force attempts are registered
And disable brute force protection
Scenario: User opens the call/{token} URL with invalid token
Given enable brute force protection
Then the following brute force attempts are registered
When user "participant2" views call-URL of room "invalid" with 200
Then the following brute force attempts are registered
| talkRoomToken | 1 |
And disable brute force protection
Scenario: User joins a password protected public room
Given enable brute force protection
And user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" sets password "foobar" for room "room" with 200 (v4)
Then the following brute force attempts are registered
# Joining without password
When user "participant2" joins room "room" with 403 (v4)
Then the following brute force attempts are registered
| talkRoomPassword | 1 |
# Joining with wrong password
Then user "participant2" joins room "room" with 403 (v4)
| password | wrong |
Then the following brute force attempts are registered
| talkRoomPassword | 2 |
Then user "participant2" joins room "room" with 200 (v4)
| password | foobar |
Then the following brute force attempts are registered
And disable brute force protection
Scenario: User gets blocked after some attempts
Given enable brute force protection
Then the following brute force attempts are registered
When user "participant2" views call-URL of room "invalid" with 200
When user "participant2" views call-URL of room "invalid" with 200
When user "participant2" views call-URL of room "invalid" with 200
When user "participant2" views call-URL of room "invalid" with 200
When user "participant2" views call-URL of room "invalid" with 200
When user "participant2" views call-URL of room "invalid" with 200
When user "participant2" views call-URL of room "invalid" with 200
When user "participant2" views call-URL of room "invalid" with 200
When user "participant2" views call-URL of room "invalid" with 200
When user "participant2" views call-URL of room "invalid" with 200
When user "participant2" views call-URL of room "invalid" with 429
Then the following brute force attempts are registered
| talkRoomToken | 11 |
And disable brute force protection
Scenario: Prevent brute forcing on an endpoint that is not meant to handle the password
Given enable brute force protection
And user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" sets password "foobar" for room "room" with 200 (v4)
Then the following brute force attempts are registered
And user "participant2" joins room "room" with 403 (v4)
Then the following brute force attempts are registered
| talkRoomPassword | 1 |
When user "participant2" views URL "apps/spreed" with query parameters and status code 200
| token | room |
| password | foobar |
Then the following brute force attempts are registered
| talkRoomPassword | 1 |
And disable brute force protection
@@ -0,0 +1,98 @@
Feature: conversation/delete-room
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
Scenario: Owner deletes
Given signaling server is started
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 1 |
And user "participant2" is not participant of room "room" (v4)
And user "participant3" is not participant of room "room" (v4)
And reset signaling server requests
When user "participant1" deletes room "room" with 200 (v4)
Then signaling server received the following requests
| token | data |
| room | {"type":"delete","delete":{"userids":["participant1"]}} |
Then user "participant1" is not participant of room "room" (v4)
Scenario: Moderator deletes
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" promotes "participant2" in room "room" with 200 (v4)
And user "participant2" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 2 |
And user "participant1" is participant of room "room" (v4)
And user "participant2" is participant of room "room" (v4)
When user "participant2" deletes room "room" with 200 (v4)
Then user "participant1" is not participant of room "room" (v4)
And user "participant2" is not participant of room "room" (v4)
Scenario: User deletes
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant2" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 3 |
And user "participant1" is participant of room "room" (v4)
And user "participant2" is participant of room "room" (v4)
When user "participant2" deletes room "room" with 403 (v4)
Then user "participant1" is participant of room "room" (v4)
And user "participant2" is participant of room "room" (v4)
Scenario: Stranger deletes
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" is participant of room "room" (v4)
And user "participant2" is not participant of room "room" (v4)
When user "participant2" deletes room "room" with 404 (v4)
Then user "participant1" is participant of room "room" (v4)
And user "participant2" is not participant of room "room" (v4)
Scenario: Automatic retention of a past event conversation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| objectType | event |
# 100 days in the past
| objectId | -8640000#-8643600 |
And user "participant1" is participant of room "room" (v4)
# Room is new
When force run "OCA\Talk\BackgroundJob\ExpireObjectRooms" background jobs
And user "participant1" is participant of room "room" (v4)
# Room is old but has a new message
And age room "room" 32 days
And user "participant1" sends message "Message 1" to room "room" with 201
When force run "OCA\Talk\BackgroundJob\ExpireObjectRooms" background jobs
And user "participant1" is participant of room "room" (v4)
# Room is old and last message is old
And age room "room" 32 days
When force run "OCA\Talk\BackgroundJob\ExpireObjectRooms" background jobs
Then user "participant1" is not participant of room "room" (v4)
Scenario: No retention of a future event conversation
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
| objectType | event |
# 100 days in the future
| objectId | 8640000#8643600 |
And user "participant1" is participant of room "room" (v4)
# Room is new
When force run "OCA\Talk\BackgroundJob\ExpireObjectRooms" background jobs
And user "participant1" is participant of room "room" (v4)
# Still aging to put the last activity into the past
And age room "room" 32 days
When force run "OCA\Talk\BackgroundJob\ExpireObjectRooms" background jobs
Then user "participant1" is participant of room "room" (v4)
@@ -0,0 +1,76 @@
Feature: conversation/delete-user
Background:
Given user "participant1" exists
Given user "participant2" exists
# There is no way to check that the room is deleted if the deleted user is the
# last one in a one-to-one or group room.
Scenario: delete user who is in a one-to-one room
Given user "participant1" creates room "one-to-one room" (v4)
| roomType | 1 |
| invite | participant2 |
Given user "participant2" creates room "one-to-one room" with 200 (v4)
| roomType | 1 |
| invite | participant1 |
And user "participant2" sends message "Message 1" to room "one-to-one room" with 201
Then user "participant1" is participant of the following rooms (v4)
| name | type | readOnly |
| participant2 | 1 | 0 |
When user "participant2" is deleted
Then user "participant1" sees the following messages in room "one-to-one room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| one-to-one room | deleted_users | deleted_users | | Message 1 | [] |
Then user "participant1" is participant of the following rooms (v4)
| name | type | readOnly |
| participant2-displayname | 5 | 1 |
Scenario: delete user who left a one-to-one room
Given user "participant1" creates room "one-to-one room" (v4)
| roomType | 1 |
| invite | participant2 |
Given user "participant2" creates room "one-to-one room" with 200 (v4)
| roomType | 1 |
| invite | participant1 |
And user "participant2" sends message "Message 1" to room "one-to-one room" with 201
Then user "participant1" is participant of the following rooms (v4)
| name | type | readOnly |
| participant2 | 1 | 0 |
When user "participant2" leaves room "one-to-one room" with 200 (v4)
When user "participant2" is deleted
Then user "participant1" sees the following messages in room "one-to-one room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| one-to-one room | deleted_users | deleted_users | | Message 1 | [] |
Then user "participant1" is participant of the following rooms (v4)
| name | type | readOnly |
| participant2-displayname | 5 | 1 |
Scenario: delete user who is in a group room
Given user "participant1" creates room "group room" (v4)
| roomType | 2 |
| roomName | group room |
And user "participant1" adds user "participant2" to room "group room" with 200 (v4)
And user "participant2" sends message "Message 1" to room "group room" with 201
When user "participant2" is deleted
Then user "participant1" sees the following messages in room "group room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| group room | deleted_users | deleted_users | | Message 1 | [] |
Scenario: delete user who is in a public room
Given user "participant1" creates room "public room" (v4)
| roomType | 3 |
| roomName | public room |
And user "participant1" adds user "participant2" to room "public room" with 200 (v4)
And user "participant2" sends message "Message 1" to room "public room" with 201
When user "participant2" is deleted
Then user "participant1" sees the following messages in room "public room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| public room | deleted_users | deleted_users | | Message 1 | [] |
Scenario: delete user who is the last participant in a public room
Given user "participant2" creates room "public room" (v4)
| roomType | 3 |
| roomName | public room |
When user "participant2" is deleted
Then user "participant1" joins room "public room" with 404 (v4)
@@ -0,0 +1,56 @@
Feature: conversation-5/search
Background:
Given user "participant1" exists
Scenario: Search for conversations with cursor and limit
Given user "participant1" creates room "Room 1" (v4)
| roomType | 2 |
| roomName | Room 1 |
Given user "participant1" creates room "Room 2" (v4)
| roomType | 2 |
| roomName | room 2 |
Given user "participant1" creates room "Room 3" (v4)
| roomType | 2 |
| roomName | ROOM 3 |
Given user "participant1" creates room "Room 4" (v4)
| roomType | 2 |
| roomName | Room 4 |
Given user "participant1" creates room "Room 5" (v4)
| roomType | 2 |
| roomName | Room 5 |
Given user "participant1" creates room "Room 6" (v4)
| roomType | 2 |
| roomName | Room 6 |
And user "participant1" searches for conversations with "o" limit 1 expected cursor "Room 1"
| title | subline | attributes.conversation |
| Room 1 | | Room 1 |
And user "participant1" searches for conversations with "o" offset "Room 4" limit 1 expected cursor "Room 5"
| title | subline | attributes.conversation |
| Room 5 | | Room 5 |
And user "participant1" searches for conversations with "o" offset "Room 4" limit 5 expected cursor ""
| title | subline | attributes.conversation |
| Room 5 | | Room 5 |
| Room 6 | | Room 6 |
Scenario: Search for conversations with cyrillic multibyte chars
Given user "participant1" creates room "кирилл 1" (v4)
| roomType | 2 |
| roomName | кирилл 1 |
Given user "participant1" creates room "Кирилл 2" (v4)
| roomType | 2 |
| roomName |Кирилл 2 |
And user "participant1" searches for conversations with "ки" limit 3 expected cursor "NULL"
| title | subline | attributes.conversation |
| кирилл 1 | | кирилл 1 |
| Кирилл 2 | | Кирилл 2 |
And user "participant1" searches for conversations with "Ки" limit 3 expected cursor "NULL"
| title | subline | attributes.conversation |
| кирилл 1 | | кирилл 1 |
| Кирилл 2 | | Кирилл 2 |
And user "participant1" searches for conversations with "Ки" limit 1 expected cursor "кирилл 1"
| title | subline | attributes.conversation |
| кирилл 1 | | кирилл 1 |
And user "participant1" searches for conversations with "Ки" offset "кирилл 1" limit 1 expected cursor ""
| title | subline | attributes.conversation |
| Кирилл 2 | | Кирилл 2 |
@@ -0,0 +1,52 @@
Feature: conversation-5/sensitive
Background:
Given user "participant1" exists
Given user "participant2" exists
Scenario: Mark as (in-)sensitive
Given user "participant1" creates room "group room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" creates room "one-to-one room" (v4)
| roomType | 1 |
| invite | participant2 |
And user "participant1" sends message "Message 1" to room "group room" with 201
And user "participant1" sends message "Message 2" to room "one-to-one room" with 201
And user "participant1" is participant of the following unordered rooms (v4)
| id | name | lastMessage | isSensitive |
| group room | room | Message 1 | 0 |
| one-to-one room | participant2 | Message 2 | 0 |
And user "participant1" marks room "one-to-one room" as sensitive with 200 (v4)
And user "participant1" marks room "group room" as sensitive with 200 (v4)
And user "participant1" is participant of the following unordered rooms (v4)
| id | name | lastMessage | isSensitive |
| group room | room | UNSET | 1 |
| one-to-one room | participant2 | UNSET | 1 |
And user "participant1" marks room "one-to-one room" as insensitive with 200 (v4)
And user "participant1" marks room "group room" as insensitive with 200 (v4)
And user "participant1" is participant of the following unordered rooms (v4)
| id | name | lastMessage | isSensitive |
| group room | room | Message 1 | 0 |
| one-to-one room | participant2 | Message 2 | 0 |
Scenario: Message preview hidden in sensitive rooms for notifications
When user "participant1" creates room "one-to-one room" (v4)
| roomType | 1 |
| invite | participant2 |
And user "participant2" creates room "one-to-one room" with 200 (v4)
| roomType | 1 |
| invite | participant1 |
And user "participant2" marks room "one-to-one room" as sensitive with 200 (v4)
And user "participant1" sends message "Secret message" to room "one-to-one room" with 201
And user "participant1" sends message "Secret mention for @participant2" to room "one-to-one room" with 201
Then user "participant2" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | chat | one-to-one room | Someone mentioned you in a private conversation | |
| spreed | chat | one-to-one room | You received a message in a private conversation | |
When user "participant2" marks room "one-to-one room" as insensitive with 200 (v4)
And user "participant1" sends message "Nonsecret message" to room "one-to-one room" with 201
Then user "participant2" has the following notifications
| app | object_type | object_id | subject | message |
| spreed | chat | one-to-one room/Nonsecret message | participant1-displayname sent you a private message | Nonsecret message |
| spreed | chat | one-to-one room/Secret mention for @participant2 | participant1-displayname mentioned you in a private conversation | Secret mention for @participant2-displayname |
| spreed | chat | one-to-one room/Secret message | participant1-displayname sent you a private message | Secret message |
File diff suppressed because one or more lines are too long
@@ -0,0 +1,71 @@
Feature: conversation-2/set-listable
Background:
Given user "creator" exists
Given user "regular-user" exists
Scenario Outline: Setting listable attribute
Given user "creator" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
When user "creator" allows listing room "room" for "<listable>" with 200 (v4)
Then user "creator" is participant of the following rooms (v4)
| id | type | listable |
| room | 2 | <listable> |
Examples:
| listable |
| 0 |
| 1 |
| 2 |
Scenario: Cannot set invalid listable attribute value
Given user "creator" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
Then user "creator" allows listing room "room" for "5" with 400 (v4)
Scenario: Only moderators and owners can change listable attribute
Given signaling server is started
Given user "creator" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "moderator" exists
And guest accounts can be created
And user "user-guest@example.com" is a guest account user
And user "creator" adds user "regular-user" to room "room" with 200 (v4)
And user "creator" adds user "moderator" to room "room" with 200 (v4)
And reset signaling server requests
And user "creator" allows listing room "room" for "all" with 200 (v4)
Then signaling server received the following requests
| token | data |
| room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| room | {"type":"update","update":{"userids":["creator","moderator","regular-user"],"properties":{"name":"room","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":2,"active-since":null,"sip-enabled":0,"description":""}}} |
When user "creator" promotes "moderator" in room "room" with 200 (v4)
And user "user-guest@example.com" joins room "room" with 200 (v4)
And user "guest" joins room "room" with 200 (v4)
And reset signaling server requests
Then user "moderator" allows listing room "room" for "none" with 200 (v4)
Then signaling server received the following requests
| token | data |
| room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| room | {"type":"update","update":{"userids":["creator","moderator","regular-user","user-guest@example.com"],"properties":{"name":"Private conversation","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
And user "regular-user" allows listing room "room" for "users" with 403 (v4)
And user "user-guest@example.com" allows listing room "room" for "users" with 403 (v4)
And user "guest" allows listing room "room" for "users" with 401 (v4)
Scenario: Cannot change listable attribute of one to one conversations
Given user "creator" creates room "room" (v4)
| roomType | 1 |
| invite | regular-user |
Given user "regular-user" creates room "room" with 200 (v4)
| roomType | 1 |
| invite | creator |
Then user "creator" allows listing room "room" for "all" with 400 (v4)
And user "regular-user" allows listing room "room" for "all" with 400 (v4)
Scenario: Cannot change listable attribute on a file conversation
Given user "creator" logs in
And user "creator" shares "welcome.txt" with user "regular-user" with OCS 100
And user "regular-user" accepts last share
When user "creator" gets the room for path "welcome.txt" with 200 (v1)
And user "creator" joins room "file welcome.txt room" with 200 (v4)
Then user "creator" allows listing room "file welcome.txt room" for "all" with 403 (v4)
@@ -0,0 +1,434 @@
Feature: conversation-2/set-publishing-permissions
Background:
Given user "owner" exists
Given user "moderator" exists
Given user "invited user" exists
Given user "not invited but joined user" exists
Scenario: owner can not set permissions in one-to-one room
Given user "owner" creates room "one-to-one room" (v4)
| roomType | 1 |
| invite | moderator |
Given user "moderator" creates room "one-to-one room" with 200 (v4)
| roomType | 1 |
| invite | owner |
And user "owner" loads attendees attendee ids in room "one-to-one room" (v4)
When user "owner" sets permissions for "owner" in room "one-to-one room" to "S" with 400 (v4)
And user "owner" sets permissions for "moderator" in room "one-to-one room" to "S" with 400 (v4)
And user "moderator" sets permissions for "owner" in room "one-to-one room" to "S" with 400 (v4)
And user "moderator" sets permissions for "moderator" in room "one-to-one room" to "S" with 400 (v4)
Then user "owner" sees the following attendees in room "one-to-one room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
And user "moderator" sees the following attendees in room "one-to-one room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
Scenario: owner can set permissions in group room
Given user "owner" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "owner" adds user "moderator" to room "group room" with 200 (v4)
And user "owner" promotes "moderator" in room "group room" with 200 (v4)
And user "owner" adds user "invited user" to room "group room" with 200 (v4)
And user "owner" loads attendees attendee ids in room "group room" (v4)
When user "owner" sets permissions for "owner" in room "group room" to "S" with 403 (v4)
And user "owner" sets permissions for "moderator" in room "group room" to "S" with 403 (v4)
And user "owner" sets permissions for "invited user" in room "group room" to "S" with 200 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
And user "moderator" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
And user "invited user" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
Scenario: moderator can set permissions in group room
Given user "owner" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "owner" adds user "moderator" to room "group room" with 200 (v4)
And user "owner" promotes "moderator" in room "group room" with 200 (v4)
And user "owner" adds user "invited user" to room "group room" with 200 (v4)
And user "owner" loads attendees attendee ids in room "group room" (v4)
When user "owner" sets permissions for "owner" in room "group room" to "S" with 403 (v4)
And user "owner" sets permissions for "moderator" in room "group room" to "S" with 403 (v4)
And user "owner" sets permissions for "invited user" in room "group room" to "S" with 200 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
And user "moderator" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
And user "invited user" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
Scenario: others can not set permissions in group room
Given user "not invited user" exists
Given user "owner" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "owner" adds user "moderator" to room "group room" with 200 (v4)
And user "owner" promotes "moderator" in room "group room" with 200 (v4)
And user "owner" adds user "invited user" to room "group room" with 200 (v4)
And user "owner" loads attendees attendee ids in room "group room" (v4)
When user "invited user" sets permissions for "owner" in room "group room" to "S" with 403 (v4)
And user "invited user" sets permissions for "moderator" in room "group room" to "S" with 403 (v4)
And user "invited user" sets permissions for "invited user" in room "group room" to "S" with 403 (v4)
And user "not invited user" sets permissions for "owner" in room "group room" to "S" with 404 (v4)
And user "not invited user" sets permissions for "moderator" in room "group room" to "S" with 404 (v4)
And user "not invited user" sets permissions for "invited user" in room "group room" to "S" with 404 (v4)
# Guest user names in tests must begin with "guest"
And user "guest not joined" sets permissions for "owner" in room "group room" to "S" with 404 (v4)
And user "guest not joined" sets permissions for "moderator" in room "group room" to "S" with 404 (v4)
And user "guest not joined" sets permissions for "invited user" in room "group room" to "S" with 404 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | SJAVPM |
And user "moderator" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | SJAVPM |
And user "invited user" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | SJAVPM |
Scenario: owner can set permissions in public room
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" loads attendees attendee ids in room "public room" (v4)
When user "owner" sets permissions for "owner" in room "public room" to "S" with 403 (v4)
And user "owner" sets permissions for "moderator" in room "public room" to "S" with 403 (v4)
And user "owner" sets permissions for "invited user" in room "public room" to "S" with 200 (v4)
And user "owner" sets permissions for "not invited but joined user" in room "public room" to "S" with 200 (v4)
And user "owner" sets permissions for "guest moderator" in room "public room" to "S" with 403 (v4)
And user "owner" sets permissions for "guest" in room "public room" to "S" with 200 (v4)
Then user "owner" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "invited user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "guest moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
Scenario: moderator can set permissions in public room
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" loads attendees attendee ids in room "public room" (v4)
When user "moderator" sets permissions for "owner" in room "public room" to "S" with 403 (v4)
And user "moderator" sets permissions for "moderator" in room "public room" to "S" with 403 (v4)
And user "moderator" sets permissions for "invited user" in room "public room" to "S" with 200 (v4)
And user "moderator" sets permissions for "not invited but joined user" in room "public room" to "S" with 200 (v4)
And user "moderator" sets permissions for "guest moderator" in room "public room" to "S" with 403 (v4)
And user "moderator" sets permissions for "guest" in room "public room" to "S" with 200 (v4)
Then user "owner" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "invited user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "guest moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
# Guests can not fetch the participant list
Scenario: guest moderator can set permissions in public room
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" loads attendees attendee ids in room "public room" (v4)
# Guest user names in tests must begin with "guest"
When user "guest moderator" sets permissions for "owner" in room "public room" to "S" with 403 (v4)
And user "guest moderator" sets permissions for "moderator" in room "public room" to "S" with 403 (v4)
And user "guest moderator" sets permissions for "invited user" in room "public room" to "S" with 200 (v4)
And user "guest moderator" sets permissions for "not invited but joined user" in room "public room" to "S" with 200 (v4)
And user "guest moderator" sets permissions for "guest moderator" in room "public room" to "S" with 403 (v4)
And user "guest moderator" sets permissions for "guest" in room "public room" to "S" with 200 (v4)
Then user "owner" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "invited user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
And user "guest moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
| users | not invited but joined user | CS |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | CS |
# Guests can not fetch the participant list
Scenario: others can not set permissions in public room
Given user "not joined user" exists
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" loads attendees attendee ids in room "public room" (v4)
When user "invited user" sets permissions for "owner" in room "public room" to "S" with 403 (v4)
And user "invited user" sets permissions for "moderator" in room "public room" to "S" with 403 (v4)
And user "invited user" sets permissions for "invited user" in room "public room" to "S" with 403 (v4)
And user "invited user" sets permissions for "not invited but joined user" in room "public room" to "S" with 403 (v4)
And user "invited user" sets permissions for "guest moderator" in room "public room" to "S" with 403 (v4)
And user "invited user" sets permissions for "guest" in room "public room" to "S" with 403 (v4)
And user "not invited but joined user" sets permissions for "owner" in room "public room" to "S" with 403 (v4)
And user "not invited but joined user" sets permissions for "moderator" in room "public room" to "S" with 403 (v4)
And user "not invited but joined user" sets permissions for "invited user" in room "public room" to "S" with 403 (v4)
And user "not invited but joined user" sets permissions for "not invited but joined user" in room "public room" to "S" with 403 (v4)
And user "not invited but joined user" sets permissions for "guest moderator" in room "public room" to "S" with 403 (v4)
And user "not invited but joined user" sets permissions for "guest" in room "public room" to "S" with 403 (v4)
And user "not joined user" sets permissions for "owner" in room "public room" to "S" with 404 (v4)
And user "not joined user" sets permissions for "moderator" in room "public room" to "S" with 404 (v4)
And user "not joined user" sets permissions for "invited user" in room "public room" to "S" with 404 (v4)
And user "not joined user" sets permissions for "not invited but joined user" in room "public room" to "S" with 404 (v4)
And user "not joined user" sets permissions for "guest moderator" in room "public room" to "S" with 404 (v4)
And user "not joined user" sets permissions for "guest" in room "public room" to "S" with 404 (v4)
# Guest user names in tests must begin with "guest"
And user "guest" sets permissions for "owner" in room "public room" to "S" with 403 (v4)
And user "guest" sets permissions for "moderator" in room "public room" to "S" with 403 (v4)
And user "guest" sets permissions for "invited user" in room "public room" to "S" with 403 (v4)
And user "guest" sets permissions for "not invited but joined user" in room "public room" to "S" with 403 (v4)
And user "guest" sets permissions for "guest moderator" in room "public room" to "S" with 403 (v4)
And user "guest" sets permissions for "guest" in room "public room" to "S" with 403 (v4)
And user "guest not joined" sets permissions for "owner" in room "public room" to "S" with 404 (v4)
And user "guest not joined" sets permissions for "moderator" in room "public room" to "S" with 404 (v4)
And user "guest not joined" sets permissions for "invited user" in room "public room" to "S" with 404 (v4)
And user "guest not joined" sets permissions for "not invited but joined user" in room "public room" to "S" with 404 (v4)
And user "guest not joined" sets permissions for "guest moderator" in room "public room" to "S" with 404 (v4)
And user "guest not joined" sets permissions for "guest" in room "public room" to "S" with 404 (v4)
Then user "owner" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | SJAVPM |
| users | not invited but joined user | SJAVPM |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | SJAVPM |
And user "moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | SJAVPM |
| users | not invited but joined user | SJAVPM |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | SJAVPM |
And user "invited user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | SJAVPM |
| users | not invited but joined user | SJAVPM |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | SJAVPM |
And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | SJAVPM |
| users | not invited but joined user | SJAVPM |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | SJAVPM |
And user "guest moderator" sees the following attendees in room "public room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | SJAVPM |
| users | not invited but joined user | SJAVPM |
| guests | "guest moderator" | SJLAVPM |
| guests | "guest" | SJAVPM |
# Guests can not fetch the participant list
Scenario: participants can not set permissions in room for a share
# These users are only needed in very specific tests, so they are not
# created in the background step.
Given user "owner of file" exists
And user "user with access to file" exists
And user "owner of file" shares "welcome.txt" with user "user with access to file" with OCS 100
And user "user with access to file" accepts last share
And user "owner of file" shares "welcome.txt" by link with OCS 100
And user "guest" gets the room for last share with 200 (v1)
And user "owner of file" joins room "file last share room" with 200 (v4)
And user "user with access to file" joins room "file last share room" with 200 (v4)
And user "guest" joins room "file last share room" with 200 (v4)
And user "owner of file" loads attendees attendee ids in room "file last share room" (v4)
When user "owner of file" sets permissions for "owner of file" in room "file last share room" to "S" with 403 (v4)
And user "owner of file" sets permissions for "user with access to file" in room "file last share room" to "S" with 403 (v4)
And user "owner of file" sets permissions for "guest" in room "file last share room" to "S" with 403 (v4)
And user "user with access to file" sets permissions for "owner of file" in room "file last share room" to "S" with 403 (v4)
And user "user with access to file" sets permissions for "user with access to file" in room "file last share room" to "S" with 403 (v4)
And user "user with access to file" sets permissions for "guest" in room "file last share room" to "S" with 403 (v4)
And user "guest" sets permissions for "owner of file" in room "file last share room" to "S" with 403 (v4)
And user "guest" sets permissions for "user with access to file" in room "file last share room" to "S" with 403 (v4)
And user "guest" sets permissions for "guest" in room "file last share room" to "S" with 403 (v4)
Then user "owner of file" sees the following attendees in room "file last share room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner of file | SJAVPM |
| users | user with access to file | SJAVPM |
| guests | "guest" | SJAVPM |
And user "user with access to file" sees the following attendees in room "file last share room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner of file | SJAVPM |
| users | user with access to file | SJAVPM |
| guests | "guest" | SJAVPM |
# This does not make much sense, but there is no real need to block it either.
Scenario: owner can set permissions in a password request room
# The user is only needed in very specific tests, so it is not created in
# the background step.
Given user "owner of file" exists
And user "owner of file" shares "welcome.txt" by link with OCS 100
| password | 123456 |
| sendPasswordByTalk | true |
And user "guest" creates the password request room for last share with 201 (v1)
And user "guest" joins room "password request for last share room" with 200 (v4)
And user "owner of file" joins room "password request for last share room" with 200 (v4)
And user "owner of file" loads attendees attendee ids in room "password request for last share room" (v4)
When user "owner of file" sets permissions for "owner of file" in room "password request for last share room" to "S" with 403 (v4)
And user "owner of file" sets permissions for "guest" in room "password request for last share room" to "S" with 200 (v4)
Then user "owner of file" sees the following attendees in room "password request for last share room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner of file | SJLAVPM |
| guests | "guest" | CS |
@@ -0,0 +1,92 @@
Feature: conversation-2/set-password
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
Scenario: Owner sets a room password
Given signaling server is started
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 1 |
And reset signaling server requests
When user "participant1" sets password "foobar" for room "room" with 200 (v4)
Then signaling server received the following requests
| token | data |
| room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| room | {"type":"update","update":{"userids":["participant1"],"properties":{"name":"Private conversation","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
Then user "participant3" joins room "room" with 403 (v4)
Then user "participant3" joins room "room" with 200 (v4)
| password | foobar |
And user "participant3" leaves room "room" with 200 (v4)
When user "participant1" sets password "" for room "room" with 200 (v4)
Then user "participant3" joins room "room" with 200 (v4)
Scenario: Moderator sets a room password
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 1 |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
And user "participant1" promotes "participant2" in room "room" with 200 (v4)
When user "participant2" sets password "foobar" for room "room" with 200 (v4)
Then user "participant3" joins room "room" with 403 (v4)
Then user "participant3" joins room "room" with 200 (v4)
| password | foobar |
And user "participant3" leaves room "room" with 200 (v4)
When user "participant2" sets password "" for room "room" with 200 (v4)
Then user "participant3" joins room "room" with 200 (v4)
Scenario: User sets a room password
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 1 |
And user "participant1" adds user "participant2" to room "room" with 200 (v4)
When user "participant2" sets password "foobar" for room "room" with 403 (v4)
Then user "participant3" joins room "room" with 200 (v4)
And user "participant3" leaves room "room" with 200 (v4)
When user "participant1" sets password "foobar" for room "room" with 200 (v4)
Then user "participant3" joins room "room" with 403 (v4)
Then user "participant3" joins room "room" with 200 (v4)
| password | foobar |
And user "participant3" leaves room "room" with 200 (v4)
When user "participant2" sets password "" for room "room" with 403 (v4)
Then user "participant3" joins room "room" with 403 (v4)
Scenario: Stranger sets a room password
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" is participant of the following rooms (v4)
| id | type | participantType |
| room | 3 | 1 |
When user "participant2" sets password "foobar" for room "room" with 404 (v4)
Then user "participant3" joins room "room" with 200 (v4)
And user "participant3" leaves room "room" with 200 (v4)
When user "participant1" sets password "foobar" for room "room" with 200 (v4)
Then user "participant3" joins room "room" with 403 (v4)
Then user "participant3" joins room "room" with 200 (v4)
| password | foobar |
And user "participant3" leaves room "room" with 200 (v4)
When user "participant2" sets password "" for room "room" with 404 (v4)
Then user "participant3" joins room "room" with 403 (v4)
# Applicable e.g. after permissions increased https://github.com/nextcloud/spreed/issues/14728
Scenario: Guest can reload / rejoin a password protected conversation without reentering the password
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant1" sets password "foobar" for room "room" with 200 (v4)
And user "guest" joins room "room" with 200 (v4) session name "guest1"
| password | foobar |
And user "guest" sends message "Message 1" to room "room" with 201
And user "guest" joins room "room" with 200 (v4) session name "guest1"
And user "guest" sends message "Message 2" to room "room" with 201
@@ -0,0 +1,93 @@
Feature: conversation-2/set-publishing-permissions
Background:
Given user "owner" exists
Given user "moderator" exists
Given user "invited user" exists
Scenario: Owner and moderators can set default permissions users can not
Given user "owner" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "owner" adds user "moderator" to room "group room" with 200 (v4)
And user "owner" promotes "moderator" in room "group room" with 200 (v4)
And user "owner" adds user "invited user" to room "group room" with 200 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | SJAVPM |
When user "owner" sets default permissions for room "group room" to "S" with 200 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CS |
When user "moderator" sets default permissions for room "group room" to "AV" with 200 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CAV |
When user "invited user" sets default permissions for room "group room" to "D" with 403 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | moderator | SJLAVPM |
| users | invited user | CAV |
Scenario: User setting over call setting over conversation setting over default
Given user "owner" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "owner" adds user "invited user" to room "group room" with 200 (v4)
When user "owner" sets default permissions for room "group room" to "S" with 200 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | invited user | CS |
And user "owner" sets permissions for "invited user" in room "group room" to "V" with 200 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | invited user | CV |
And user "owner" sets permissions for "invited user" in room "group room" to "D" with 200 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | invited user | CS |
When user "owner" sets default permissions for room "group room" to "D" with 200 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions |
| users | owner | SJLAVPM |
| users | invited user | SJAVPM |
Scenario: setting default permissions resets participant permissions
Given user "owner" creates room "group room" (v4)
| roomType | 2 |
| roomName | room |
And user "owner" adds user "invited user" to room "group room" with 200 (v4)
And user "owner" sets permissions for "invited user" in room "group room" to "V" with 200 (v4)
And user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions | attendeePermissions |
| users | owner | SJLAVPM | D |
| users | invited user | CV | CV |
When user "owner" sets default permissions for room "group room" to "A" with 200 (v4)
Then user "owner" sees the following attendees in room "group room" with 200 (v4)
| actorType | actorId | permissions | attendeePermissions |
| users | owner | SJLAVPM | D |
| users | invited user | CA | D |
Scenario: setting permissions for a self joined user adds them permanently
Given user "owner" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "invited user" joins room "room" with 200 (v4)
And user "owner" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | permissions | attendeePermissions | participantType |
| users | owner | SJLAVPM | D | 1 |
| users | invited user | SJAVPM | D | 5 |
And user "owner" sets permissions for "invited user" in room "room" to "LAVPM" with 200 (v4)
And user "owner" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | permissions | attendeePermissions | participantType |
| users | owner | SJLAVPM | D | 1 |
| users | invited user | CLAVPM | CLAVPM | 3 |
@@ -0,0 +1,75 @@
Feature: conversation-2/sip-dialin
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
Given group "group1" exists
Given user "participant1" is member of group "group1"
Scenario: SIP admin enables SIP
Given the following "spreed" app config is set
| sip_bridge_dialin_info | +49-1234-567890 |
| sip_bridge_shared_secret | 1234567890abcdef |
| sip_bridge_groups | ["group1"] |
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" is participant of the following rooms (v4)
| id | type | participantType | sipEnabled | attendeePin |
| room | 3 | 1 | 0 | |
When user "participant1" sets SIP state for room "room" to "enabled" with 200 (v4)
Then user "participant1" is participant of the following rooms (v4)
| id | type | participantType | sipEnabled | attendeePin |
| room | 3 | 1 | 1 | **PIN** |
When user "participant1" adds user "participant2" to room "room" with 200 (v4)
When user "participant1" adds user "participant3" to room "room" with 200 (v4)
When user "participant1" adds email "test@example.tld" to room "room" with 200 (v4)
# Guests don't get a PIN as they can not be recognized and are deleted on leave
When user "guest" joins room "room" with 200 (v4)
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| participantType | inCall | actorType | actorId | attendeePin |
| 4 | 0 | emails | SHA256(test@example.tld) | **PIN** |
| 4 | 0 | guests | "guest" | |
| 1 | 0 | users | participant1 | **PIN** |
| 3 | 0 | users | participant2 | **PIN** |
| 3 | 0 | users | participant3 | **PIN** |
When user "participant2" sets SIP state for room "room" to "disabled" with 403 (v4)
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| participantType | inCall | actorType | actorId | attendeePin |
| 4 | 0 | emails | SHA256(test@example.tld) | **PIN** |
| 4 | 0 | guests | "guest" | |
| 1 | 0 | users | participant1 | **PIN** |
| 3 | 0 | users | participant2 | **PIN** |
| 3 | 0 | users | participant3 | **PIN** |
When user "participant1" sets SIP state for room "room" to "disabled" with 200 (v4)
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| participantType | inCall | actorType | actorId | attendeePin |
| 4 | 0 | emails | SHA256(test@example.tld) | |
| 4 | 0 | guests | "guest" | |
| 1 | 0 | users | participant1 | |
| 3 | 0 | users | participant2 | |
| 3 | 0 | users | participant3 | |
When user "participant1" sets SIP state for room "room" to "no pin" with 200 (v4)
Then user "participant1" sees the following attendees in room "room" with 200 (v4)
| participantType | inCall | actorType | actorId | attendeePin |
| 4 | 0 | emails | SHA256(test@example.tld) | **PIN** |
| 4 | 0 | guests | "guest" | |
| 1 | 0 | users | participant1 | **PIN** |
| 3 | 0 | users | participant2 | **PIN** |
| 3 | 0 | users | participant3 | **PIN** |
Scenario: Non-SIP admin tries to enable SIP
Given the following "spreed" app config is set
| sip_bridge_dialin_info | +49-1234-567890 |
| sip_bridge_shared_secret | 1234567890abcdef |
| sip_bridge_groups | ["group1"] |
Given user "participant2" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant2" is participant of the following rooms (v4)
| id | type | participantType | sipEnabled | attendeePin |
| room | 3 | 1 | 0 | |
When user "participant2" sets SIP state for room "room" to "enabled" with 403 (v4)
And user "participant2" is participant of the following rooms (v4)
| id | type | participantType | sipEnabled | attendeePin |
| room | 3 | 1 | 0 | |
@@ -0,0 +1,41 @@
Feature: conversation-2/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 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 |
Given 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 |
| 3 | 0 | phones | PHONE(+491601231212) | +49160123 | +491601231212 |
| 1 | 0 | users | participant1 | participant1-displayname | |
| 3 | 0 | users | participant2 | participant2-displayname | |
When user "participant2" adds phone "+491601231212" to room "room" with 403 (v4)
Scenario: Non-SIP admin tries to dial out
Given 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 |
Given user "participant2" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
When user "participant2" adds phone "+491601231212" to room "room" with 501 (v4)
When user "participant2" adds user "participant1" to room "room" with 200 (v4)
# SIP admin that is not a moderator can also not dial-out
When user "participant1" adds phone "+491601231212" to room "room" with 403 (v4)
@@ -0,0 +1,26 @@
Feature: conversation-5/team-participants
Background:
Given user "participant1" exists
Given user "participant2" exists
And User "participant1" creates team "Team A"
And add user "participant2" to team "Team A"
Scenario: Owner invites a team
Given user "participant1" creates room "room" (v4)
| roomType | 3 |
| roomName | room |
And user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
And user "participant1" adds team "Team A" to room "room" with 200 (v4)
And user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | participantType | displayName |
| users | participant1 | 1 | participant1-displayname |
| circles | TEAM_ID(Team A) | 3 | Team A |
| users | participant2 | 3 | participant2-displayname |
And team "Team A" is renamed to "Team Alpha"
And user "participant1" sees the following attendees in room "room" with 200 (v4)
| actorType | actorId | participantType | displayName |
| users | participant1 | 1 | participant1-displayname |
| circles | TEAM_ID(Team A) | 3 | Team Alpha |
| users | participant2 | 3 | participant2-displayname |