UPSTREAM BASELINE: nextcloud/spreed v22.0.12 (без изменений)
Type checking / changes (push) Has been cancelled
Type checking / test (push) Has been cancelled
Type checking / typescript-summary (push) Has been cancelled
Node tests / changes (push) Has been cancelled
Node tests / test (push) Has been cancelled
Node tests / test-summary (push) Has been cancelled
Type checking / changes (push) Has been cancelled
Type checking / test (push) Has been cancelled
Type checking / typescript-summary (push) Has been cancelled
Node tests / changes (push) Has been cancelled
Node tests / test (push) Has been cancelled
Node tests / test-summary (push) Has been cancelled
Источник: https://github.com/nextcloud/spreed/archive/refs/tags/v22.0.12.tar.gz С этого коммита ветка официального Nextcloud Talk отрезана (решение владельца 2026-07-06). Все дальнейшие изменения — только наши; версии релизов: 22.0.12-f7.N.
This commit is contained in:
@@ -0,0 +1,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 |
|
||||
Reference in New Issue
Block a user