From d202ef56c3d68235f916f7133dd7850081ab7aab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=BCller?= Date: Wed, 12 Jun 2024 22:23:57 +0200 Subject: [PATCH 1/2] Check failing sharing test --- .../features/callapi/group-read-only.feature | 28 - .../features/callapi/group.feature | 107 -- .../features/callapi/lobby.feature | 44 - .../features/callapi/notifications.feature | 184 --- .../features/callapi/one-to-one.feature | 141 -- .../features/callapi/password.feature | 169 --- .../features/callapi/public-read-only.feature | 69 - .../features/callapi/public.feature | 109 -- .../features/callapi/recording.feature | 652 --------- .../features/callapi/sip-dialout.feature | 46 - .../callapi/update-call-flags.feature | 282 ---- .../integration/features/chat-1/bots.feature | 338 ----- .../features/chat-1/delete.feature | 225 --- .../features/chat-1/edit-message.feature | 228 --- .../features/chat-1/file-share.feature | 123 -- .../features/chat-1/group-read-only.feature | 58 - .../integration/features/chat-1/group.feature | 70 - .../features/chat-1/mentions.feature | 635 -------- .../chat-1/message-expiration.feature | 61 - .../features/chat-1/note-to-self.feature | 24 - .../features/chat-1/notifications.feature | 546 ------- .../features/chat-1/one-to-one.feature | 83 -- .../features/chat-1/password.feature | 107 -- .../integration/features/chat-2/poll.feature | 807 ----------- .../features/chat-2/public-read-only.feature | 69 - .../features/chat-2/public.feature | 113 -- .../features/chat-2/reaction.feature | 205 --- .../features/chat-2/read-status.feature | 138 -- .../features/chat-2/reference-id.feature | 36 - .../features/chat-2/reminder.feature | 146 -- .../integration/features/chat-2/reply.feature | 220 --- .../features/chat-2/rich-messages.feature | 62 - .../features/chat-2/rich-object-share.feature | 75 - .../features/chat-2/search.feature | 46 - .../features/chat-2/system-messages.feature | 297 ---- .../features/chat-2/typing-privacy.feature | 11 - .../features/chat-2/unread-messages.feature | 204 --- .../features/command/active-calls.feature | 42 - .../features/command/create.feature | 109 -- .../features/command/monitor-calls.feature | 61 - .../features/command/monitor-room.feature | 37 - .../features/command/update.feature | 24 - .../features/command/user-remove.feature | 98 -- .../command/user-transfer-ownership.feature | 181 --- .../conversation-1/add-participant.feature | 184 --- .../features/conversation-1/avatar.feature | 156 -- .../conversation-1/breakout-rooms.feature | 947 ------------ .../bruteforce-protection.feature | 99 -- .../conversation-1/delete-room.feature | 61 - .../conversation-1/delete-user.feature | 70 - .../features/conversation-2/files.feature | 525 ------- .../conversation-2/find-listed.feature | 128 -- .../conversation-2/join-listable.feature | 112 -- .../conversation-3/group-participants.feature | 280 ---- .../conversation-3/invite-email.feature | 24 - .../conversation-3/join-leave.feature | 112 -- .../conversation-3/limit-creation.feature | 35 - .../features/conversation-3/lobby.feature | 281 ---- .../conversation-3/one-to-one.feature | 209 --- .../conversation-3/public-private.feature | 91 -- .../conversation-4/password-request.feature | 211 --- .../conversation-4/promotion-demotion.feature | 117 -- .../conversation-4/remove-participant.feature | 217 --- .../conversation-4/remove-self.feature | 81 -- .../conversation-4/rename-room.feature | 46 - .../conversation-5/set-description.feature | 352 ----- .../conversation-5/set-listable.feature | 68 - .../set-participant-permissions.feature | 431 ------ .../conversation-5/set-password.feature | 80 - .../conversation-5/set-permissions.feature | 151 -- .../conversation-5/sip-dialin.feature | 75 - .../conversation-5/sip-dialout.feature | 41 - .../features/federation/chat.feature | 427 ------ .../features/federation/invite.feature | 325 ----- .../features/federation/ocm.feature | 17 - .../features/federation/poll.feature | 109 -- .../features/federation/reminder.feature | 75 - .../features/integration/capabilities.feature | 8 - .../features/integration/dashboard.feature | 72 - .../integration/outdated-client.feature | 48 - tests/integration/features/scaling/README.md | 7 - .../integration/features/scaling/call.feature | 430 ------ .../integration/features/scaling/chat.feature | 221 --- .../features/sharing-1/create.feature | 807 ----------- .../features/sharing-1/delete.feature | 389 ----- .../features/sharing-1/move.feature | 271 ---- .../features/sharing-1/restore.feature | 156 -- .../features/sharing-2/get.feature | 1283 +---------------- .../features/sharing-3/hooks.feature | 1066 -------------- .../features/sharing-4/settings.feature | 14 - .../features/sharing-4/sharees.feature | 278 ---- .../sharing-4/transfer-ownership.feature | 144 -- .../features/sharing-4/update.feature | 1089 -------------- 93 files changed, 1 insertion(+), 19729 deletions(-) delete mode 100644 tests/integration/features/callapi/group-read-only.feature delete mode 100644 tests/integration/features/callapi/group.feature delete mode 100644 tests/integration/features/callapi/lobby.feature delete mode 100644 tests/integration/features/callapi/notifications.feature delete mode 100644 tests/integration/features/callapi/one-to-one.feature delete mode 100644 tests/integration/features/callapi/password.feature delete mode 100644 tests/integration/features/callapi/public-read-only.feature delete mode 100644 tests/integration/features/callapi/public.feature delete mode 100644 tests/integration/features/callapi/recording.feature delete mode 100644 tests/integration/features/callapi/sip-dialout.feature delete mode 100644 tests/integration/features/callapi/update-call-flags.feature delete mode 100644 tests/integration/features/chat-1/bots.feature delete mode 100644 tests/integration/features/chat-1/delete.feature delete mode 100644 tests/integration/features/chat-1/edit-message.feature delete mode 100644 tests/integration/features/chat-1/file-share.feature delete mode 100644 tests/integration/features/chat-1/group-read-only.feature delete mode 100644 tests/integration/features/chat-1/group.feature delete mode 100644 tests/integration/features/chat-1/mentions.feature delete mode 100644 tests/integration/features/chat-1/message-expiration.feature delete mode 100644 tests/integration/features/chat-1/note-to-self.feature delete mode 100644 tests/integration/features/chat-1/notifications.feature delete mode 100644 tests/integration/features/chat-1/one-to-one.feature delete mode 100644 tests/integration/features/chat-1/password.feature delete mode 100644 tests/integration/features/chat-2/poll.feature delete mode 100644 tests/integration/features/chat-2/public-read-only.feature delete mode 100644 tests/integration/features/chat-2/public.feature delete mode 100644 tests/integration/features/chat-2/reaction.feature delete mode 100644 tests/integration/features/chat-2/read-status.feature delete mode 100644 tests/integration/features/chat-2/reference-id.feature delete mode 100644 tests/integration/features/chat-2/reminder.feature delete mode 100644 tests/integration/features/chat-2/reply.feature delete mode 100644 tests/integration/features/chat-2/rich-messages.feature delete mode 100644 tests/integration/features/chat-2/rich-object-share.feature delete mode 100644 tests/integration/features/chat-2/search.feature delete mode 100644 tests/integration/features/chat-2/system-messages.feature delete mode 100644 tests/integration/features/chat-2/typing-privacy.feature delete mode 100644 tests/integration/features/chat-2/unread-messages.feature delete mode 100644 tests/integration/features/command/active-calls.feature delete mode 100644 tests/integration/features/command/create.feature delete mode 100644 tests/integration/features/command/monitor-calls.feature delete mode 100644 tests/integration/features/command/monitor-room.feature delete mode 100644 tests/integration/features/command/update.feature delete mode 100644 tests/integration/features/command/user-remove.feature delete mode 100644 tests/integration/features/command/user-transfer-ownership.feature delete mode 100644 tests/integration/features/conversation-1/add-participant.feature delete mode 100644 tests/integration/features/conversation-1/avatar.feature delete mode 100644 tests/integration/features/conversation-1/breakout-rooms.feature delete mode 100644 tests/integration/features/conversation-1/bruteforce-protection.feature delete mode 100644 tests/integration/features/conversation-1/delete-room.feature delete mode 100644 tests/integration/features/conversation-1/delete-user.feature delete mode 100644 tests/integration/features/conversation-2/files.feature delete mode 100644 tests/integration/features/conversation-2/find-listed.feature delete mode 100644 tests/integration/features/conversation-2/join-listable.feature delete mode 100644 tests/integration/features/conversation-3/group-participants.feature delete mode 100644 tests/integration/features/conversation-3/invite-email.feature delete mode 100644 tests/integration/features/conversation-3/join-leave.feature delete mode 100644 tests/integration/features/conversation-3/limit-creation.feature delete mode 100644 tests/integration/features/conversation-3/lobby.feature delete mode 100644 tests/integration/features/conversation-3/one-to-one.feature delete mode 100644 tests/integration/features/conversation-3/public-private.feature delete mode 100644 tests/integration/features/conversation-4/password-request.feature delete mode 100644 tests/integration/features/conversation-4/promotion-demotion.feature delete mode 100644 tests/integration/features/conversation-4/remove-participant.feature delete mode 100644 tests/integration/features/conversation-4/remove-self.feature delete mode 100644 tests/integration/features/conversation-4/rename-room.feature delete mode 100644 tests/integration/features/conversation-5/set-description.feature delete mode 100644 tests/integration/features/conversation-5/set-listable.feature delete mode 100644 tests/integration/features/conversation-5/set-participant-permissions.feature delete mode 100644 tests/integration/features/conversation-5/set-password.feature delete mode 100644 tests/integration/features/conversation-5/set-permissions.feature delete mode 100644 tests/integration/features/conversation-5/sip-dialin.feature delete mode 100644 tests/integration/features/conversation-5/sip-dialout.feature delete mode 100644 tests/integration/features/federation/chat.feature delete mode 100644 tests/integration/features/federation/invite.feature delete mode 100644 tests/integration/features/federation/ocm.feature delete mode 100644 tests/integration/features/federation/poll.feature delete mode 100644 tests/integration/features/federation/reminder.feature delete mode 100644 tests/integration/features/integration/capabilities.feature delete mode 100644 tests/integration/features/integration/dashboard.feature delete mode 100644 tests/integration/features/integration/outdated-client.feature delete mode 100644 tests/integration/features/scaling/README.md delete mode 100644 tests/integration/features/scaling/call.feature delete mode 100644 tests/integration/features/scaling/chat.feature delete mode 100644 tests/integration/features/sharing-1/create.feature delete mode 100644 tests/integration/features/sharing-1/delete.feature delete mode 100644 tests/integration/features/sharing-1/move.feature delete mode 100644 tests/integration/features/sharing-1/restore.feature delete mode 100644 tests/integration/features/sharing-3/hooks.feature delete mode 100644 tests/integration/features/sharing-4/settings.feature delete mode 100644 tests/integration/features/sharing-4/sharees.feature delete mode 100644 tests/integration/features/sharing-4/transfer-ownership.feature delete mode 100644 tests/integration/features/sharing-4/update.feature diff --git a/tests/integration/features/callapi/group-read-only.feature b/tests/integration/features/callapi/group-read-only.feature deleted file mode 100644 index 74d77975fe6..00000000000 --- a/tests/integration/features/callapi/group-read-only.feature +++ /dev/null @@ -1,28 +0,0 @@ -Feature: callapi/group-read-only - Background: - Given user "participant1" exists - And user "participant2" exists - And user "participant3" exists - And group "attendees1" exists - And user "participant2" is member of group "attendees1" - - Scenario: User1 invites group attendees1 to a group room and they cant join the call in a locked conversation - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | invite | attendees1 | - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - When user "participant1" locks room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant1" joins call "room" with 403 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant2" joins call "room" with 403 (v4) - Then user "participant1" sees 0 peers in call "room" with 403 (v4) - And user "participant2" sees 0 peers in call "room" with 403 (v4) - When user "participant1" unlocks room "room" with 200 (v4) - And user "participant1" joins call "room" with 200 (v4) - And user "participant2" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "participant2" sees 2 peers in call "room" with 200 (v4) diff --git a/tests/integration/features/callapi/group.feature b/tests/integration/features/callapi/group.feature deleted file mode 100644 index eb87bc518cf..00000000000 --- a/tests/integration/features/callapi/group.feature +++ /dev/null @@ -1,107 +0,0 @@ -Feature: callapi/group - Background: - Given user "participant1" exists - And user "participant2" exists - And user "participant3" exists - And group "attendees1" exists - And user "participant2" is member of group "attendees1" - - Scenario: User has no rooms - Then user "participant1" is participant of the following rooms (v4) - Then user "participant2" is participant of the following rooms (v4) - Then user "participant3" is participant of the following rooms (v4) - - Scenario: User1 invites group attendees1 to a group room and they can do everything - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | invite | attendees1 | - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - | flags | 1 | - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | callFlag | - | room | 2 | 1 | - Then user "participant2" joins room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - And user "participant2" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "participant2" sees 2 peers in call "room" with 200 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | callFlag | - | room | 2 | 7 | - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - Then user "participant2" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant2" leaves room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - - Scenario: User1 invites group attendees1 to a group room and user3 can't do anything - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | invite | attendees1 | - Then user "participant1" is participant of room "room" (v4) - Then user "participant3" is not participant of room "room" (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - And user "participant3" joins room "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - And user "participant3" joins call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant3" leaves call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant3" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - - Scenario: User1 invites group attendees1 to a group room and guest can't do anything - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | invite | attendees1 | - Then user "participant1" is participant of room "room" (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - And user "guest" joins room "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - And user "guest" joins call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "guest" leaves call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "guest" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) diff --git a/tests/integration/features/callapi/lobby.feature b/tests/integration/features/callapi/lobby.feature deleted file mode 100644 index a08627cb458..00000000000 --- a/tests/integration/features/callapi/lobby.feature +++ /dev/null @@ -1,44 +0,0 @@ -Feature: callapi/lobby - Background: - Given user "participant1" exists - And user "participant2" exists - - Scenario: Participant1 calls without lobby - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | call | room | A group call has started in room | - - Scenario: Participant1 calls while participant2 is blocked by the lobby - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant2" has the following notifications - - Scenario: Participant1 calls while participant2 is moderator - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | call | room | A group call has started in room | diff --git a/tests/integration/features/callapi/notifications.feature b/tests/integration/features/callapi/notifications.feature deleted file mode 100644 index 27bb24069bc..00000000000 --- a/tests/integration/features/callapi/notifications.feature +++ /dev/null @@ -1,184 +0,0 @@ -Feature: callapi/notifications - - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Normal call notification - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Given user "participant1" joins room "room" with 200 (v4) - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant1" joins call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | call | room | A group call has started in room | - Given user "participant2" joins call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Missed call notification - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Given user "participant1" joins room "room" with 200 (v4) - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant1" joins call "room" with 200 (v4) - Then user "participant2" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | call_started | {actor} started a call | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - | room | users | participant1 | user_added | {actor} added you | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | {actor} created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | call | room | A group call has started in room | - Given user "participant1" leaves call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | call | room | You missed a group call in room | - - Scenario: Silent call does not trigger notifications - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Given user "participant1" joins room "room" with 200 (v4) - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant1" joins call "room" with 200 (v4) - | silent | true | - Then user "participant2" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | call_started | {actor} started a silent call | true | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - | room | users | participant1 | user_added | {actor} added you | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | {actor} created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - Given user "participant1" leaves call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Silent call with dedicated ping does trigger notifications - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Given user "participant1" joins room "room" with 200 (v4) - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant1" loads attendees attendee ids in room "room" (v4) - Given user "participant1" joins call "room" with 200 (v4) - | silent | true | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - Given user "participant1" pings user "participant2" to join call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | call | room | A group call has started in room | - - Scenario: Calling an attendee that is in DND throws an error 'status' message with 400 - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Given user "participant1" joins room "room" with 200 (v4) - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant1" loads attendees attendee ids in room "room" (v4) - And user "participant2" sets status to "dnd" with 200 (v4) - Given user "participant1" joins call "room" with 200 (v4) - | silent | true | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - Given user "participant1" pings user "participant2" to join call "room" with 400 (v4) - Then the request is rejected with the following error message - | status | message | - | 400 | status | - - Scenario: Lobby: No call notification sent for users that are blocked by the lobby - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - When user "participant1" joins call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Lobby: Call notification sent to users with ignore lobby permissions - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant1" sets permissions for "participant2" in room "room" to "L" with 200 (v4) - And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - When user "participant1" joins call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | call | room | A group call has started in room | - - Scenario: Lobby: Call notification sent to moderators - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - When user "participant1" joins call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | call | room | A group call has started in room | - - Scenario: Lobby: Call notification wiped if lobby enabled afterwards - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - When user "participant1" joins call "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | call | room | A group call has started in room | - And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Pinging a user that is removed gives 404 - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Given user "participant1" joins room "room" with 200 (v4) - Given user "participant1" loads attendees attendee ids in room "room" (v4) - Given user "participant1" joins call "room" with 200 (v4) - | silent | true | - And user "participant1" removes user "participant2" from room "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - Given user "participant1" pings user "participant2" to join call "room" with 404 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Pinging a user that is removed gives 404 - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant2" creates room "room2" (v4) - | roomType | 2 | - | roomName | room2 | - Given user "participant1" joins room "room" with 200 (v4) - Given user "participant1" loads attendees attendee ids in room "room" (v4) - Given user "participant1" joins call "room" with 200 (v4) - | silent | true | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - Given user "participant1" pings user "participant1" attendeeIdPlusOne to join call "room" with 404 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | diff --git a/tests/integration/features/callapi/one-to-one.feature b/tests/integration/features/callapi/one-to-one.feature deleted file mode 100644 index a72d2b35f1a..00000000000 --- a/tests/integration/features/callapi/one-to-one.feature +++ /dev/null @@ -1,141 +0,0 @@ -Feature: callapi/one-to-one - Background: - Given user "participant1" exists - And user "participant2" exists - And user "participant3" exists - - Scenario: User has no rooms - Then user "participant1" is participant of the following rooms (v4) - Then user "participant2" is participant of the following rooms (v4) - Then user "participant3" is participant of the following rooms (v4) - - Scenario: User1 invites user2 to a one2one room and they can do everything - When user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - And user "participant2" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "participant2" sees 2 peers in call "room" with 200 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - Then user "participant2" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant2" leaves room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - - Scenario: User1 invites user2 to a one2one room and user3 can't do anything - When user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" is participant of room "room" (v4) - Then user "participant3" is not participant of room "room" (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - And user "participant3" joins room "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - And user "participant3" joins call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant3" leaves call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant3" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - - Scenario: User1 invites user2 to a one2one room and guest can't do anything - When user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" is participant of room "room" (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - And user "guest" joins room "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - And user "guest" joins call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "guest" leaves call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "guest" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - - Scenario: Sending a message into a one-to-one chat re-adds the participants - Given user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant1" removes themselves from room "room" with 200 (v4) - Then user "participant1" is not participant of room "room" (v4) - When user "participant2" joins room "room" with 200 (v4) - Then user "participant1" is not participant of room "room" (v4) - Then user "participant1" sees 0 peers in call "room" with 404 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - When user "participant2" joins call "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - - Scenario: Can not join a call in former one-to-one - Given user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 1 | 1 | - When user "participant2" is deleted - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 5 | 1 | - When user "participant1" joins room "room" with 200 (v4) - And user "participant1" joins call "room" with 403 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant1" sees 0 peers in call "room" with 403 (v4) diff --git a/tests/integration/features/callapi/password.feature b/tests/integration/features/callapi/password.feature deleted file mode 100644 index f7f404c9a44..00000000000 --- a/tests/integration/features/callapi/password.feature +++ /dev/null @@ -1,169 +0,0 @@ -Feature: callapi/password - Background: - Given user "participant1" exists - And user "participant2" exists - And user "participant3" exists - - Scenario: User has no rooms - Then user "participant1" is participant of the following rooms (v4) - Then user "participant2" is participant of the following rooms (v4) - Then user "participant3" is participant of the following rooms (v4) - - Scenario: User1 invites user2 to a public room and they can do everything - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - And user "participant2" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "participant2" sees 2 peers in call "room" with 200 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - Then user "participant2" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - - Scenario: User1 invites user2 to a public room and user3 can not join without password - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - Then user "participant3" is not participant of room "room" (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - And user "participant3" joins room "room" with 403 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - And user "participant3" joins call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant3" leaves call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant3" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - - Scenario: User1 invites user2 to a public room and user3 can join with password - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - Then user "participant3" is not participant of room "room" (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - And user "participant3" joins room "room" with 200 (v4) - | password | foobar | - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 1 peers in call "room" with 200 (v4) - And user "participant3" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "participant3" sees 2 peers in call "room" with 200 (v4) - Then user "participant3" leaves call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 1 peers in call "room" with 200 (v4) - Then user "participant3" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - - Scenario: User1 invites user2 to a public room and guest can not join without password - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - And user "guest" joins room "room" with 403 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - And user "guest" joins call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "guest" leaves call "room" with 404 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - - Scenario: User1 invites user2 to a public room and guest can join with password - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - And user "guest" joins room "room" with 200 (v4) - | password | foobar | - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 1 peers in call "room" with 200 (v4) - And user "guest" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "guest" sees 2 peers in call "room" with 200 (v4) - Then user "guest" leaves call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 1 peers in call "room" with 200 (v4) - Then user "guest" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) diff --git a/tests/integration/features/callapi/public-read-only.feature b/tests/integration/features/callapi/public-read-only.feature deleted file mode 100644 index 15b3ce76e1f..00000000000 --- a/tests/integration/features/callapi/public-read-only.feature +++ /dev/null @@ -1,69 +0,0 @@ -Feature: callapi/public-read-only - Background: - Given user "participant1" exists - And user "participant2" exists - And user "participant3" exists - - Scenario: User1 invites user2 to a public room and they cant join the call in a locked conversation - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - When user "participant1" locks room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant1" joins call "room" with 403 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant2" joins call "room" with 403 (v4) - Then user "participant1" sees 0 peers in call "room" with 403 (v4) - And user "participant2" sees 0 peers in call "room" with 403 (v4) - When user "participant1" unlocks room "room" with 200 (v4) - And user "participant1" joins call "room" with 200 (v4) - And user "participant2" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "participant2" sees 2 peers in call "room" with 200 (v4) - - Scenario: User1 invites user2 to a public room and user3 cant join the call in a locked conversation - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - Then user "participant3" is not participant of room "room" (v4) - When user "participant1" locks room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant1" joins call "room" with 403 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "participant3" joins call "room" with 403 (v4) - Then user "participant1" sees 0 peers in call "room" with 403 (v4) - And user "participant3" sees 0 peers in call "room" with 403 (v4) - When user "participant1" unlocks room "room" with 200 (v4) - And user "participant1" joins call "room" with 200 (v4) - And user "participant3" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "participant3" sees 2 peers in call "room" with 200 (v4) - - Scenario: User1 invites user2 to a public room and guest cant join the call in a locked conversation - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - When user "participant1" locks room "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" joins call "room" with 403 (v4) - Then user "guest" joins room "room" with 200 (v4) - And user "guest" joins call "room" with 403 (v4) - Then user "participant1" sees 0 peers in call "room" with 403 (v4) - And user "guest" sees 0 peers in call "room" with 403 (v4) - When user "participant1" unlocks room "room" with 200 (v4) - And user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - And user "guest" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "guest" sees 2 peers in call "room" with 200 (v4) diff --git a/tests/integration/features/callapi/public.feature b/tests/integration/features/callapi/public.feature deleted file mode 100644 index 2ae08a9f489..00000000000 --- a/tests/integration/features/callapi/public.feature +++ /dev/null @@ -1,109 +0,0 @@ -Feature: callapi/public - Background: - Given user "participant1" exists - And user "participant2" exists - And user "participant3" exists - - Scenario: User has no rooms - Then user "participant1" is participant of the following rooms (v4) - Then user "participant2" is participant of the following rooms (v4) - Then user "participant3" is participant of the following rooms (v4) - - Scenario: User1 invites user2 to a public room and they can do everything - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - Then user "participant2" joins room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - And user "participant2" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "participant2" sees 2 peers in call "room" with 200 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant2" sees 1 peers in call "room" with 200 (v4) - Then user "participant2" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant2" leaves room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - - Scenario: User1 invites user2 to a public room and user3 can do everything - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - Then user "participant3" is not participant of room "room" (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant3" joins room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 1 peers in call "room" with 200 (v4) - And user "participant3" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "participant3" sees 2 peers in call "room" with 200 (v4) - Then user "participant3" leaves call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 1 peers in call "room" with 200 (v4) - Then user "participant3" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 404 (v4) - - Scenario: User1 invites user2 to a public room and guest can do everything - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "participant2" sees 0 peers in call "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "guest" joins room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 1 peers in call "room" with 200 (v4) - And user "guest" joins call "room" with 200 (v4) - Then user "participant1" sees 2 peers in call "room" with 200 (v4) - And user "guest" sees 2 peers in call "room" with 200 (v4) - Then user "guest" leaves call "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 1 peers in call "room" with 200 (v4) - Then user "guest" leaves room "room" with 200 (v4) - Then user "participant1" sees 1 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees 0 peers in call "room" with 200 (v4) - And user "guest" sees 0 peers in call "room" with 404 (v4) diff --git a/tests/integration/features/callapi/recording.feature b/tests/integration/features/callapi/recording.feature deleted file mode 100644 index be68e6bfca8..00000000000 --- a/tests/integration/features/callapi/recording.feature +++ /dev/null @@ -1,652 +0,0 @@ -Feature: callapi/recording - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Start and stop video recording - Given recording server is started - Given signaling server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - And reset signaling server requests - When user "participant1" starts "video" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - Then signaling server received the following requests - | token | data | - | room1 | {"type":"message","message":{"data":{"type":"recording","recording":{"status":3}}}} | - | room1 | {"type":"update","update":{"userids":["participant1"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":{"date":"ACTIVE_SINCE()","timezone_type":3,"timezone":"UTC"},"sip-enabled":0,"description":""}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 3 | - And recording server sent started request for "video" recording in room "room1" as "participant1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 1 | - And reset signaling server requests - When user "participant1" stops recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} | - Then signaling server received the following requests - # Nothing changes until the recording backend confirms the stop - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 1 | - And reset signaling server requests - And recording server sent stopped request for recording in room "room1" as "participant1" with 200 - Then signaling server received the following requests - | token | data | - | room1 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - | room1 | {"type":"message","message":{"data":{"type":"recording","recording":{"status":0}}}} | - | room1 | {"type":"update","update":{"userids":["participant1"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":{"date":"ACTIVE_SINCE()","timezone_type":3,"timezone":"UTC"},"sip-enabled":0,"description":""}}} | - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | recording_stopped | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Start and stop audio recording - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - When user "participant1" starts "audio" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":2,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 4 | - And recording server sent started request for "audio" recording in room "room1" as "participant1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | audio_recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 2 | - When user "participant1" stops recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 2 | - And recording server sent stopped request for recording in room "room1" as "participant1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | audio_recording_stopped | - | room1 | users | participant1 | participant1-displayname | audio_recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: No system message should be shown when the call was just ended for everyone - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - When user "participant1" starts "video" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And recording server sent started request for "video" recording in room "room1" as "participant1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" ends call "room1" with 200 (v4) - And recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":[]} | - And recording server sent stopped request for recording in room "room1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | call_ended_everyone | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - - Scenario: No system message should be shown when the call was ended by the last one leaving - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - When user "participant1" starts "video" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And recording server sent started request for "video" recording in room "room1" as "participant1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" leaves call "room1" with 200 (v4) - And recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":[]} | - And recording server sent stopped request for recording in room "room1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | call_ended | - | room1 | users | participant1 | participant1-displayname | call_left | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Recording failed to start - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - And user "participant1" starts "video" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 3 | - When recording server sent failed request for recording in room "room1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 5 | - - Scenario: Video recording failed - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - And user "participant1" starts "video" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 3 | - And recording server sent started request for "video" recording in room "room1" as "participant1" with 200 - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 1 | - When recording server sent failed request for recording in room "room1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | guests | failed-to-get-session | | recording_failed | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 5 | - - Scenario: Start and stop recording again after the previous one failed to start - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - And user "participant1" starts "video" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 3 | - And recording server sent failed request for recording in room "room1" with 200 - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 5 | - When user "participant1" starts "video" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 3 | - And recording server sent started request for "video" recording in room "room1" as "participant1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 1 | - When user "participant1" stops recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 1 | - And recording server sent stopped request for recording in room "room1" as "participant1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | recording_stopped | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Start and stop recording again after the previous one failed - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - And user "participant1" starts "video" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 3 | - And recording server sent started request for "video" recording in room "room1" as "participant1" with 200 - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 1 | - And recording server sent failed request for recording in room "room1" with 200 - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 5 | - When user "participant1" starts "video" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 3 | - And recording server sent started request for "video" recording in room "room1" as "participant1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | guests | failed-to-get-session | | recording_failed | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 1 | - When user "participant1" stops recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 1 | - And recording server sent stopped request for recording in room "room1" as "participant1" with 200 - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | recording_stopped | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | guests | failed-to-get-session | | recording_failed | - | room1 | users | participant1 | participant1-displayname | recording_started | - | room1 | users | participant1 | participant1-displayname | call_started | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Get error when start|stop recording and already did this - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - When user "participant1" starts "audio" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":2,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And recording server sent started request for "audio" recording in room "room1" as "participant1" with 200 - And user "participant1" starts "audio" recording in room "room1" with 400 (v1) - Then the response error matches with "recording" - And recording server received the following requests - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 2 | - When user "participant1" stops recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} | - And user "participant1" stops recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} | - And recording server sent stopped request for recording in room "room1" as "participant1" with 200 - And user "participant1" stops recording in room "room1" with 200 (v1) - Then recording server received the following requests - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - When user "participant1" starts "video" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":1,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And recording server sent started request for "video" recording in room "room1" as "participant1" with 200 - And user "participant1" starts "video" recording in room "room1" with 400 (v1) - Then the response error matches with "recording" - And recording server received the following requests - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 1 | - When user "participant1" stops recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} | - And user "participant1" stops recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":{"actor":{"type":"users","id":"participant1"}}} | - And recording server sent stopped request for recording in room "room1" as "participant1" with 200 - And user "participant1" stops recording in room "room1" with 200 (v1) - Then recording server received the following requests - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Get error when try to start recording with invalid status - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - When user "participant1" starts "invalid" recording in room "room1" with 400 (v1) - Then the response error matches with "status" - And recording server received the following requests - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Manager try without success to start recording when signaling is internal - Given user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - When user "participant1" starts "video" recording in room "room1" with 400 (v1) - Then the response error matches with "config" - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - When user "participant1" starts "audio" recording in room "room1" with 400 (v1) - Then the response error matches with "config" - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Get error when non moderator/owner try to start recording - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - And user "participant1" adds user "participant2" to room "room1" with 200 (v4) - And user "participant2" joins room "room1" with 200 (v4) - And user "participant2" joins call "room1" with 200 (v4) - When user "participant2" starts "video" recording in room "room1" with 403 (v1) - And user "participant2" starts "audio" recording in room "room1" with 403 (v1) - Then recording server received the following requests - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Get error when try to start recording and no call started - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - When user "participant1" starts "video" recording in room "room1" with 400 (v1) - Then the response error matches with "call" - And recording server received the following requests - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - When user "participant1" starts "audio" recording in room "room1" with 400 (v1) - Then the response error matches with "call" - And recording server received the following requests - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Store recording with success and create transcript - Given the following spreed app config is set - | call_recording_transcription | yes | - Given user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - When user "participant1" store recording file "/img/join_call.ogg" in room "room1" with 200 (v1) - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call.ogg. | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - When run "OC\SpeechToText\TranscriptionJob" background jobs - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | recording | room1 | Transcript now available | The transcript for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call.txt. | - | spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call.ogg. | - When user "participant1" shares file from the last notification to room "room1" with 200 (v1) - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" sees the following messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | messageType | message | messageParameters | - | room1 | users | participant1 | participant1-displayname | record-audio | {file} | "IGNORE" | - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | recording | room1 | Transcript now available | The transcript for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/join_call.txt. | - When user "participant1" shares file from the first notification to room "room1" with 200 (v1) - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | message | - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" sees the following messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | messageType | message | messageParameters | - | room1 | users | participant1 | participant1-displayname | record-audio | {file} | "IGNORE" | - | room1 | users | participant1 | participant1-displayname | record-audio | {file} | "IGNORE" | - - Scenario: Store recording with success but fail to transcript - Given the following spreed app config is set - | call_recording_transcription | yes | - Given user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - # "leave" is used here as the file name makes the fake transcript provider fail - When user "participant1" store recording file "/img/leave_call.ogg" in room "room1" with 200 (v1) - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/leave_call.ogg. | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - When run "OC\SpeechToText\TranscriptionJob" background jobs - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | recording | room1 | Failed to transcript call recording | The server failed to transcript the recording at /Talk/Recording/ROOM(room1)/leave_call.ogg for the call in room1. Please reach out to the administration. | - | spreed | recording | room1 | Call recording now available | The recording for the call in room1 was uploaded to /Talk/Recording/ROOM(room1)/leave_call.ogg. | - - Scenario: Store recording with failure exceeding the upload_max_filesize - Given user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - When user "participant1" store recording file "big" in room "room1" with 400 (v1) - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | recording_information | room1 | Failed to upload call recording | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Store recording with failure exceeding the post_max_size - Given recording server is started - Given user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - And user "participant1" starts "audio" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":2,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And recording server sent started request for "audio" recording in room "room1" as "participant1" with 200 - When user "participant1" ends call "room1" with 200 (v4) - Then recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":[]} | - And recording server sent stopped request for recording in room "room1" as "participant1" with 200 - When user "NULL" store recording file "big" in room "room1" with 400 (v1) - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | recording_information | room1 | Failed to upload call recording | - - Scenario: Stop recording automatically when end the call - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - And user "participant1" starts "audio" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":2,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And recording server sent started request for "audio" recording in room "room1" as "participant1" with 200 - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 2 | - When user "participant1" ends call "room1" with 200 (v4) - Then recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":[]} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 2 | - And recording server sent stopped request for recording in room "room1" as "participant1" with 200 - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Stop recording automatically when the last participant leaves the call - Given recording server is started - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - And user "participant1" starts "audio" recording in room "room1" with 200 (v1) - And recording server received the following requests - | token | data | - | room1 | {"type":"start","start":{"status":2,"owner":"participant1","actor":{"type":"users","id":"participant1"}}} | - And recording server sent started request for "audio" recording in room "room1" as "participant1" with 200 - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 2 | - When user "participant1" leaves call "room1" with 200 (v4) - Then recording server received the following requests - | token | data | - | room1 | {"type":"stop","stop":[]} | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 2 | - And recording server sent stopped request for recording in room "room1" with 200 - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | callRecording | - | 2 | room1 | 0 | - - Scenario: Recording consent required by admin - Given recording server is started - And the following "spreed" app config is set - | recording_consent | 1 | - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 400 (v4) - And user "participant1" joins call "room1" with 400 (v4) - | recordingConsent | 0 | - And user "participant1" joins call "room1" with 200 (v4) - | recordingConsent | 1 | - - Scenario: Recording consent optional by admin enabled by moderator - Given recording server is started - And the following "spreed" app config is set - | recording_consent | 2 | - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" joins room "room1" with 200 (v4) - And user "participant1" joins call "room1" with 200 (v4) - # Can not enable consent when a call is on-going … - When user "participant1" sets the recording consent to 1 for room "room1" with 400 (v4) - Then user "participant1" is participant of the following unordered rooms (v4) - | type | name | recordingConsent | - | 2 | room1 | 0 | - When user "participant1" leaves call "room1" with 200 (v4) - And user "participant1" sets the recording consent to 1 for room "room1" with 200 (v4) - Then user "participant1" is participant of the following unordered rooms (v4) - | type | name | recordingConsent | - | 2 | room1 | 1 | - And user "participant1" joins call "room1" with 400 (v4) - And user "participant1" joins call "room1" with 200 (v4) - | recordingConsent | 1 | - # … but can disable consent when a call is on-going - When user "participant1" sets the recording consent to 0 for room "room1" with 200 (v4) - Then user "participant1" is participant of the following unordered rooms (v4) - | type | name | recordingConsent | - | 2 | room1 | 0 | - When user "participant1" leaves call "room1" with 200 (v4) - # Invalid value on conversation level - When user "participant1" sets the recording consent to 2 for room "room1" with 400 (v4) - Then user "participant1" is participant of the following unordered rooms (v4) - | type | name | recordingConsent | - | 2 | room1 | 0 | - And the following recording consent is recorded for room "room1" - | token | actorType | actorId | - | room1 | users | participant1 | - And the following recording consent is recorded for user "participant1" - | token | actorType | actorId | - | room1 | users | participant1 | diff --git a/tests/integration/features/callapi/sip-dialout.feature b/tests/integration/features/callapi/sip-dialout.feature deleted file mode 100644 index 800cf2023b5..00000000000 --- a/tests/integration/features/callapi/sip-dialout.feature +++ /dev/null @@ -1,46 +0,0 @@ -Feature: callapi/sip-dialout - Background: - Given user "participant1" exists - Given user "participant2" exists - Given group "group1" exists - Given user "participant1" is member of group "group1" - - Scenario: SIP admin uses dial out - Given signaling server is started - And the following "spreed" app config is set - | sip_bridge_dialin_info | +49-1234-567890 | - | sip_bridge_shared_secret | 1234567890abcdef | - | sip_bridge_groups | ["group1"] | - | sip_dialout | yes | - And user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" is participant of the following rooms (v4) - | id | type | participantType | sipEnabled | - | room | 3 | 1 | 0 | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" adds phone "+491601231212" to room "room" with 200 (v4) - Then user "participant1" sees the following attendees in room "room" with 200 (v4) - | participantType | inCall | actorType | actorId | displayName | phoneNumber | callId | - | 3 | 0 | phones | PHONE(+491601231212) | +49160123… | +491601231212 | | - | 3 | 0 | users | participant2 | participant2-displayname | | | - | 1 | 0 | users | participant1 | participant1-displayname | | | - When user "participant1" joins room "room" with 200 (v4) - And user "participant1" joins call "room" with 200 (v4) - And reset signaling server requests - And signaling server will respond with - | response | {"type": "dialout","dialout": {"callid": "the-call-id"}} | - And user "participant1" dials out to "+491601231212" from call in room "room" with 201 (v4) - Then signaling server received the following requests - | token | data | - | room | {"type":"dialout","dialout":{"number":"+491601231212","options":{"attendeeId":PHONEATTENDEE(+491601231212),"actorType":"phones","actorId":"PHONE(+491601231212)"}}} | - Then user "participant1" sees the following attendees in room "room" with 200 (v4) - | participantType | inCall | actorType | actorId | displayName | phoneNumber | callId | - | 3 | 0 | phones | PHONE(+491601231212) | +49160123… | +491601231212 | the-call-id | - | 3 | 0 | users | participant2 | participant2-displayname | | | - | 1 | 7 | users | participant1 | participant1-displayname | | | - Then user "participant2" sees the following attendees in room "room" with 200 (v4) - | participantType | inCall | actorType | actorId | displayName | phoneNumber | callId | - | 3 | 0 | phones | PHONE(+491601231212) | +49160123… | | | - | 3 | 0 | users | participant2 | participant2-displayname | | | - | 1 | 7 | users | participant1 | participant1-displayname | | | diff --git a/tests/integration/features/callapi/update-call-flags.feature b/tests/integration/features/callapi/update-call-flags.feature deleted file mode 100644 index 28372592349..00000000000 --- a/tests/integration/features/callapi/update-call-flags.feature +++ /dev/null @@ -1,282 +0,0 @@ -Feature: callapi/update-call-flags - Background: - Given user "owner" exists - And user "moderator" exists - And user "invited user" exists - And user "not invited but joined user" exists - - Scenario: all participants can update their call flags when in a call - Given signaling server is started - Given user "owner" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "owner" adds user "moderator" to room "public room" with 200 (v4) - And user "owner" promotes "moderator" in room "public room" with 200 (v4) - And user "owner" adds user "invited user" to room "public room" with 200 (v4) - And user "not invited but joined user" joins room "public room" with 200 (v4) - And user "guest moderator" joins room "public room" with 200 (v4) - And user "owner" promotes "guest moderator" in room "public room" with 200 (v4) - And user "guest" joins room "public room" with 200 (v4) - And user "owner" joins room "public room" with 200 (v4) - And user "moderator" joins room "public room" with 200 (v4) - And user "invited user" joins room "public room" with 200 (v4) - And user "not invited but joined user" joins room "public room" with 200 (v4) - And reset signaling server requests - And user "owner" joins call "public room" with 200 (v4) - Then signaling server received the following requests - | token | data | - | public room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - | public room | {"type":"incall","incall":{"incall":7,"changed":[{"inCall":7,"lastPing":LAST_PING(),"sessionId":"SESSION(owner)","nextcloudSessionId":"SESSION(owner)","participantType":1,"participantPermissions":254,"userId":"owner"}],"users":[{"inCall":7,"lastPing":LAST_PING(),"sessionId":"SESSION(owner)","nextcloudSessionId":"SESSION(owner)","participantType":1,"participantPermissions":254,"userId":"owner"}]}} | - And reset signaling server requests - When user "owner" updates call flags in room "public room" to "1" with 200 (v4) - Then signaling server received the following requests - | token | data | - | public room | {"type":"incall","incall":{"incall":1,"changed":[{"inCall":1,"lastPing":LAST_PING(),"sessionId":"SESSION(owner)","nextcloudSessionId":"SESSION(owner)","participantType":1,"participantPermissions":254,"userId":"owner"}],"users":[{"inCall":1,"lastPing":LAST_PING(),"sessionId":"SESSION(owner)","nextcloudSessionId":"SESSION(owner)","participantType":1,"participantPermissions":254,"userId":"owner"}]}} | - And user "moderator" joins call "public room" with 200 (v4) - And user "invited user" joins call "public room" with 200 (v4) - And user "not invited but joined user" joins call "public room" with 200 (v4) - And user "guest moderator" joins call "public room" with 200 (v4) - And user "guest" joins call "public room" with 200 (v4) - And user "moderator" updates call flags in room "public room" to "1" with 200 (v4) - And user "invited user" updates call flags in room "public room" to "1" with 200 (v4) - And user "not invited but joined user" updates call flags in room "public room" to "1" with 200 (v4) - And user "guest moderator" updates call flags in room "public room" to "1" with 200 (v4) - And user "guest" updates call flags in room "public room" to "1" with 200 (v4) - Then user "owner" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 1 | - | users | moderator | 1 | - | users | invited user | 1 | - | users | not invited but joined user | 1 | - | guests | "guest moderator" | 1 | - | guests | "guest" | 1 | - And user "moderator" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 1 | - | users | moderator | 1 | - | users | invited user | 1 | - | users | not invited but joined user | 1 | - | guests | "guest moderator" | 1 | - | guests | "guest" | 1 | - And user "invited user" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 1 | - | users | moderator | 1 | - | users | invited user | 1 | - | users | not invited but joined user | 1 | - | guests | "guest moderator" | 1 | - | guests | "guest" | 1 | - And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 1 | - | users | moderator | 1 | - | users | invited user | 1 | - | users | not invited but joined user | 1 | - | guests | "guest moderator" | 1 | - | guests | "guest" | 1 | - And user "guest moderator" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 1 | - | users | moderator | 1 | - | users | invited user | 1 | - | users | not invited but joined user | 1 | - | guests | "guest moderator" | 1 | - | guests | "guest" | 1 | - - Scenario: update call flags with in call does not join the call - Given user "owner" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "owner" adds user "moderator" to room "public room" with 200 (v4) - And user "owner" promotes "moderator" in room "public room" with 200 (v4) - And user "owner" adds user "invited user" to room "public room" with 200 (v4) - And user "not invited but joined user" joins room "public room" with 200 (v4) - And user "guest moderator" joins room "public room" with 200 (v4) - And user "owner" promotes "guest moderator" in room "public room" with 200 (v4) - And user "guest" joins room "public room" with 200 (v4) - And user "owner" joins room "public room" with 200 (v4) - And user "moderator" joins room "public room" with 200 (v4) - And user "invited user" joins room "public room" with 200 (v4) - And user "not invited but joined user" joins room "public room" with 200 (v4) - When user "owner" updates call flags in room "public room" to "1" with 400 (v4) - And user "moderator" updates call flags in room "public room" to "1" with 400 (v4) - And user "invited user" updates call flags in room "public room" to "1" with 400 (v4) - And user "not invited but joined user" updates call flags in room "public room" to "1" with 400 (v4) - And user "guest moderator" updates call flags in room "public room" to "1" with 400 (v4) - And user "guest" updates call flags in room "public room" to "1" with 400 (v4) - Then user "owner" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 0 | - | users | moderator | 0 | - | users | invited user | 0 | - | users | not invited but joined user | 0 | - | guests | "guest moderator" | 0 | - | guests | "guest" | 0 | - And user "moderator" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 0 | - | users | moderator | 0 | - | users | invited user | 0 | - | users | not invited but joined user | 0 | - | guests | "guest moderator" | 0 | - | guests | "guest" | 0 | - And user "invited user" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 0 | - | users | moderator | 0 | - | users | invited user | 0 | - | users | not invited but joined user | 0 | - | guests | "guest moderator" | 0 | - | guests | "guest" | 0 | - And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 0 | - | users | moderator | 0 | - | users | invited user | 0 | - | users | not invited but joined user | 0 | - | guests | "guest moderator" | 0 | - | guests | "guest" | 0 | - And user "guest moderator" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 0 | - | users | moderator | 0 | - | users | invited user | 0 | - | users | not invited but joined user | 0 | - | guests | "guest moderator" | 0 | - | guests | "guest" | 0 | - - Scenario: update call flags with disconnected does not leave the call - Given user "owner" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "owner" adds user "moderator" to room "public room" with 200 (v4) - And user "owner" promotes "moderator" in room "public room" with 200 (v4) - And user "owner" adds user "invited user" to room "public room" with 200 (v4) - And user "not invited but joined user" joins room "public room" with 200 (v4) - And user "guest moderator" joins room "public room" with 200 (v4) - And user "owner" promotes "guest moderator" in room "public room" with 200 (v4) - And user "guest" joins room "public room" with 200 (v4) - And user "owner" joins room "public room" with 200 (v4) - And user "moderator" joins room "public room" with 200 (v4) - And user "invited user" joins room "public room" with 200 (v4) - And user "not invited but joined user" joins room "public room" with 200 (v4) - And user "owner" joins call "public room" with 200 (v4) - And user "moderator" joins call "public room" with 200 (v4) - And user "invited user" joins call "public room" with 200 (v4) - And user "not invited but joined user" joins call "public room" with 200 (v4) - And user "guest moderator" joins call "public room" with 200 (v4) - And user "guest" joins call "public room" with 200 (v4) - When user "owner" updates call flags in room "public room" to "0" with 400 (v4) - And user "moderator" updates call flags in room "public room" to "0" with 400 (v4) - And user "invited user" updates call flags in room "public room" to "0" with 400 (v4) - And user "not invited but joined user" updates call flags in room "public room" to "0" with 400 (v4) - And user "guest moderator" updates call flags in room "public room" to "0" with 400 (v4) - And user "guest" updates call flags in room "public room" to "0" with 400 (v4) - Then user "owner" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 7 | - | users | moderator | 7 | - | users | invited user | 7 | - | users | not invited but joined user | 7 | - | guests | "guest moderator" | 7 | - | guests | "guest" | 7 | - And user "moderator" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 7 | - | users | moderator | 7 | - | users | invited user | 7 | - | users | not invited but joined user | 7 | - | guests | "guest moderator" | 7 | - | guests | "guest" | 7 | - And user "invited user" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 7 | - | users | moderator | 7 | - | users | invited user | 7 | - | users | not invited but joined user | 7 | - | guests | "guest moderator" | 7 | - | guests | "guest" | 7 | - And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 7 | - | users | moderator | 7 | - | users | invited user | 7 | - | users | not invited but joined user | 7 | - | guests | "guest moderator" | 7 | - | guests | "guest" | 7 | - And user "guest moderator" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 7 | - | users | moderator | 7 | - | users | invited user | 7 | - | users | not invited but joined user | 7 | - | guests | "guest moderator" | 7 | - | guests | "guest" | 7 | - - Scenario: update call flags requires in call flag to be set - Given user "owner" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "owner" adds user "moderator" to room "public room" with 200 (v4) - And user "owner" promotes "moderator" in room "public room" with 200 (v4) - And user "owner" adds user "invited user" to room "public room" with 200 (v4) - And user "not invited but joined user" joins room "public room" with 200 (v4) - And user "guest moderator" joins room "public room" with 200 (v4) - And user "owner" promotes "guest moderator" in room "public room" with 200 (v4) - And user "guest" joins room "public room" with 200 (v4) - And user "owner" joins room "public room" with 200 (v4) - And user "moderator" joins room "public room" with 200 (v4) - And user "invited user" joins room "public room" with 200 (v4) - And user "not invited but joined user" joins room "public room" with 200 (v4) - And user "owner" joins call "public room" with 200 (v4) - And user "moderator" joins call "public room" with 200 (v4) - And user "invited user" joins call "public room" with 200 (v4) - And user "not invited but joined user" joins call "public room" with 200 (v4) - And user "guest moderator" joins call "public room" with 200 (v4) - And user "guest" joins call "public room" with 200 (v4) - When user "owner" updates call flags in room "public room" to "2" with 400 (v4) - And user "moderator" updates call flags in room "public room" to "2" with 400 (v4) - And user "invited user" updates call flags in room "public room" to "2" with 400 (v4) - And user "not invited but joined user" updates call flags in room "public room" to "2" with 400 (v4) - And user "guest moderator" updates call flags in room "public room" to "2" with 400 (v4) - And user "guest" updates call flags in room "public room" to "2" with 400 (v4) - Then user "owner" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 7 | - | users | moderator | 7 | - | users | invited user | 7 | - | users | not invited but joined user | 7 | - | guests | "guest moderator" | 7 | - | guests | "guest" | 7 | - And user "moderator" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 7 | - | users | moderator | 7 | - | users | invited user | 7 | - | users | not invited but joined user | 7 | - | guests | "guest moderator" | 7 | - | guests | "guest" | 7 | - And user "invited user" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 7 | - | users | moderator | 7 | - | users | invited user | 7 | - | users | not invited but joined user | 7 | - | guests | "guest moderator" | 7 | - | guests | "guest" | 7 | - And user "not invited but joined user" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 7 | - | users | moderator | 7 | - | users | invited user | 7 | - | users | not invited but joined user | 7 | - | guests | "guest moderator" | 7 | - | guests | "guest" | 7 | - And user "guest moderator" sees the following attendees in room "public room" with 200 (v4) - | actorType | actorId | inCall | - | users | owner | 7 | - | users | moderator | 7 | - | users | invited user | 7 | - | users | not invited but joined user | 7 | - | guests | "guest moderator" | 7 | - | guests | "guest" | 7 | diff --git a/tests/integration/features/chat-1/bots.feature b/tests/integration/features/chat-1/bots.feature deleted file mode 100644 index 3489a0a959a..00000000000 --- a/tests/integration/features/chat-1/bots.feature +++ /dev/null @@ -1,338 +0,0 @@ -Feature: chat/bots - Background: - Given user "participant1" exists - - Scenario: Installing the call summary bot - Given invoking occ with "talk:bot:list" - Then the command was successful - And the command output is empty - Given invoking occ with "app:disable call_summary_bot" - And the command was successful - And invoking occ with "app:enable call_summary_bot" - And the command was successful - When invoking occ with "talk:bot:list" - Then the command was successful - And the command output contains the text "Call summary" - And read bot ids from OCC - And set state no-setup for bot "Call summary" via OCC - | feature | - | webhook | - | response | - - Scenario: Simple call summary bot run - # Populate default options again - And invoking occ with "app:disable call_summary_bot" - And the command was successful - And invoking occ with "app:enable call_summary_bot" - And the command was successful - And invoking occ with "talk:bot:list" - And the command was successful - And the command output contains the text "Call summary" - - # Set up in room - Given invoking occ with "talk:bot:list room-name:room" - And the command was successful - And the command output is empty - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And read bot ids from OCC - And setup bot "Call summary" for room "room" via OCC - Given invoking occ with "talk:bot:list room-name:room" - And the command was successful - And the command output contains the text "Call summary" - - # Call summary - Given the following call_summary_bot app config is set - | min-length | -1 | - And user "participant1" sends message "- [ ] Before call" to room "room" with 201 - And wait for 2 seconds - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - | flags | 1 | - And user "participant1" sends message "- [ ] Task 1" to room "room" with 201 - And user "participant1" sends message "- [ ] Task 2\n- [ ] Task 3" to room "room" with 201 - And set state enabled for bot "Call summary" via OCC - | feature | - | webhook | - And user "participant1" sends message "- [ ] Received but no reaction permission" to room "room" with 201 - And set state enabled for bot "Call summary" via OCC - | feature | - | none | - And user "participant1" sends message "- [ ] Not received due to permission" to room "room" with 201 - And set state enabled for bot "Call summary" via OCC - | feature | - | webhook | - | response | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant1 | participant1-displayname | - [ ] Not received due to permission | [] | - | room | users | participant1 | participant1-displayname | - [ ] Received but no reaction permission | [] | - | room | users | participant1 | participant1-displayname | - [ ] Task 2\n- [ ] Task 3 | [] | - | room | users | participant1 | participant1-displayname | - [ ] Task 1 | [] | - | room | users | participant1 | participant1-displayname | - [ ] Before call | [] | - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | bots | BOT(Call summary) | Call summary (Bot) | # Call summary - room\n\n{DATE}\n\n## Attendees\n- participant1-displayname\n\n## Tasks\n- [ ] Task 1\n- [ ] Task 2\n- [ ] Task 3\n- [ ] Received but no reaction permission | [] | - | room | users | participant1 | participant1-displayname | - [ ] Not received due to permission | [] | - | room | users | participant1 | participant1-displayname | - [ ] Received but no reaction permission | [] | - | room | users | participant1 | participant1-displayname | - [ ] Task 2\n- [ ] Task 3 | [] | - | room | users | participant1 | participant1-displayname | - [ ] Task 1 | [] | - | room | users | participant1 | participant1-displayname | - [ ] Before call | [] | - Then user "participant1" retrieve reactions "👍" of message "- [ ] Before call" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - Then user "participant1" retrieve reactions "👍" of message "- [ ] Task 1" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - | bots | BOT(Call summary) | Call summary (Bot) | 👍 | - Then user "participant1" retrieve reactions "👍" of message "- [ ] Task 2\n- [ ] Task 3" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - | bots | BOT(Call summary) | Call summary (Bot) | 👍 | - Then user "participant1" retrieve reactions "👍" of message "- [ ] Received but no reaction permission" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - Then user "participant1" retrieve reactions "👍" of message "- [ ] Not received due to permission" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - - # Different states bot - # Already enabled - And user "participant1" sets up bot "Call summary" for room "room" with 200 (v1) - Given invoking occ with "talk:bot:list room-name:room" - And the command was successful - And the command output contains the text "Call summary" - # Disabling - And user "participant1" removes bot "Call summary" for room "room" with 200 (v1) - Given invoking occ with "talk:bot:list room-name:room" - And the command was successful - And the command output is empty - # Enabling - And user "participant1" sets up bot "Call summary" for room "room" with 201 (v1) - Given invoking occ with "talk:bot:list room-name:room" - And the command was successful - And the command output contains the text "Call summary" - - # No-setup - And set state no-setup for bot "Call summary" via OCC - - ## Failed removing - And user "participant1" removes bot "Call summary" for room "room" with 400 (v1) - Given invoking occ with "talk:bot:list room-name:room" - And the command was successful - And the command output contains the text "Call summary" - - ## Failed adding - And remove bot "Call summary" for room "room" via OCC - Given invoking occ with "talk:bot:list room-name:room" - And the command was successful - And the command output is empty - And user "participant1" sets up bot "Call summary" for room "room" with 400 (v1) - Given invoking occ with "talk:bot:list room-name:room" - And the command was successful - And the command output is empty - - Scenario: Registering a bot with invalid parameters - When invoking occ with "talk:bot:install S3CR3T U" - Then the command failed with exit code 1 - And the command output contains the text "The provided name is too short" - When invoking occ with "talk:bot:install Bot S3CR3T U" - Then the command failed with exit code 1 - And the command output contains the text "The provided secret is too short" - When invoking occ with "talk:bot:install Bot Secret:1234567890123456789012345678901234567890 U" - Then the command failed with exit code 1 - And the command output contains the text "The provided URL is not a valid URL" - - Scenario: Registering the same webhook or secret twice - Given invoking occ with "talk:bot:install Bot Secret:1234567890123456789012345678901234567890 https://localhost/bot1" - And the command was successful - When invoking occ with "talk:bot:install Bot Secret:1234567890123456789012345678901234567890 https://localhost/bot1" - Then the command failed with exit code 2 - And the command output contains the text "Bot with the same URL is already registered" - When invoking occ with "talk:bot:install Bot Secret:1234567890123456789012345678901234567890 https://localhost/bot2" - Then the command failed with exit code 3 - And the command output contains the text "Bot with the same secret is already registered" - - Scenario: Set up conversation bot errors - Given invoking occ with "talk:bot:install ErrorBot Secret:1234567890123456789012345678901234567890 https://localhost/bot1" - And the command was successful - And read bot ids from OCC - And user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When invoking occ with "talk:bot:setup 2147483647 invalid-token" - Then the command failed with exit code 1 - And the command output contains the text "Bot could not be found by id: 2147483647" - When invoking occ with "talk:bot:setup BOT(ErrorBot) invalid-token" - Then the command failed with exit code 2 - And the command output contains the text "Conversation could not be found by token: invalid-token" - When invoking occ with "talk:bot:setup BOT(ErrorBot) ROOM(room)" - And the command was successful - And invoking occ with "talk:bot:setup BOT(ErrorBot) ROOM(room)" - Then the command failed with exit code 3 - And the command output contains the text "Bot is already set up for the conversation" - - Scenario: Bot with all features - Given invoking occ with "talk:bot:install Bot Secret1234567890123456789012345678901234567890 https://localhost/bot1" - And the command was successful - And read bot ids from OCC - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And invoking occ with "talk:bot:setup BOT(Bot) ROOM(room1)" - And the command was successful - And user "participant1" sends message "Message 1" to room "room1" with 201 - When Bot "Bot" sends a message for room "room1" with 201 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | message | Response 1 | - | replyTo | Message 1 | - When Bot "Bot" sends a reaction for room "room1" with 201 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | messageId | Message 1 | - | reaction | 👍 | - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room1 | bots | BOT(Bot) | Bot (Bot) | Response 1 | [] | Message 1 | - | room1 | users | participant1 | participant1-displayname | Message 1 | [] | | - Then user "participant1" retrieve reactions "👍" of message "Message 1" in room "room1" with 200 - | actorType | actorId | actorDisplayName | reaction | - | bots | BOT(Bot) | Bot (Bot) | 👍 | - When Bot "Bot" removes a reaction for room "room1" with 200 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | messageId | Message 1 | - | reaction | 👍 | - Then user "participant1" retrieve reactions "👍" of message "Message 1" in room "room1" with 200 - | actorType | actorId | actorDisplayName | reaction | - - # Unchanged from above - Scenario: Bot with response only feature - Given invoking occ with "talk:bot:install Bot1 Secret1234567890123456789012345678901234567890 https://localhost/bot1 --feature=response" - And the command was successful - And read bot ids from OCC - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And invoking occ with "talk:bot:setup BOT(Bot1) ROOM(room1)" - And the command was successful - And user "participant1" sets notifications to all for room "room1" (v4) - And user "participant1" sends message "Message 1" to room "room1" with 201 - When Bot "Bot1" sends a message for room "room1" with 201 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | message | Response 1 | - | replyTo | Message 1 | - When Bot "Bot1" sends a reaction for room "room1" with 201 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | messageId | Message 1 | - | reaction | 👍 | - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room1 | bots | BOT(Bot1) | Bot1 (Bot) | Response 1 | [] | Message 1 | - | room1 | users | participant1 | participant1-displayname | Message 1 | [] | | - And user participant1 has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room1/Message 1 | Bot1 (Bot) reacted with 👍 to your message in conversation room1 | - | spreed | chat | room1/Response 1 | Bot1 (Bot) replied to your message in conversation room1 | - Then user "participant1" retrieve reactions "👍" of message "Message 1" in room "room1" with 200 - | actorType | actorId | actorDisplayName | reaction | - | bots | BOT(Bot1) | Bot1 (Bot) | 👍 | - When Bot "Bot1" removes a reaction for room "room1" with 200 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | messageId | Message 1 | - | reaction | 👍 | - Then user "participant1" retrieve reactions "👍" of message "Message 1" in room "room1" with 200 - | actorType | actorId | actorDisplayName | reaction | - - Scenario: Bot with receive-only feature - Given invoking occ with "talk:bot:install Bot Secret1234567890123456789012345678901234567890 https://localhost/bot1 --feature=webhook" - And the command was successful - And read bot ids from OCC - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And invoking occ with "talk:bot:setup BOT(Bot) ROOM(room1)" - And the command was successful - And user "participant1" sends message "Message 1" to room "room1" with 201 - When Bot "Bot" sends a message for room "room1" with 401 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | message | Response 1 | - | replyTo | Message 1 | - When Bot "Bot" sends a reaction for room "room1" with 401 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | messageId | Message 1 | - | reaction | 👍 | - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room1 | users | participant1 | participant1-displayname | Message 1 | [] | | - Then user "participant1" retrieve reactions "👍" of message "Message 1" in room "room1" with 200 - | actorType | actorId | actorDisplayName | reaction | - When Bot "Bot" removes a reaction for room "room1" with 401 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | messageId | Message 1 | - | reaction | 👍 | - - Scenario: Bot from another room - Given invoking occ with "talk:bot:install Bot Secret1234567890123456789012345678901234567890 https://localhost/bot1 --feature=response" - And the command was successful - And read bot ids from OCC - And user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room1 | - And user "participant1" creates room "room2" (v4) - | roomType | 2 | - | roomName | room2 | - And invoking occ with "talk:bot:setup BOT(Bot) ROOM(room2)" - And the command was successful - And user "participant1" sends message "Message 1" to room "room1" with 201 - # Unauthenticated on actual room - When Bot "Bot" sends a message for room "room1" with 401 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | message | Response 1 | - | replyTo | Message 1 | - # Bad requeston bot room - When Bot "Bot" sends a message for room "room2" with 400 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | message | Response 1 | - | replyTo | Message 1 | - # Unauthenticated on actual room - When Bot "Bot" sends a reaction for room "room1" with 401 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | messageId | Message 1 | - | reaction | 👍 | - # Bad request on bot room - When Bot "Bot" sends a reaction for room "room2" with 400 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | messageId | Message 1 | - | reaction | 👍 | - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room1 | users | participant1 | participant1-displayname | Message 1 | [] | | - Then user "participant1" sees the following messages in room "room2" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - Then user "participant1" retrieve reactions "👍" of message "Message 1" in room "room1" with 200 - | actorType | actorId | actorDisplayName | reaction | - # Unauthenticated on actual room - When Bot "Bot" removes a reaction for room "room1" with 401 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | messageId | Message 1 | - | reaction | 👍 | - # Bad request on bot room - When Bot "Bot" removes a reaction for room "room2" with 404 (v1) - | secret | Secret1234567890123456789012345678901234567890 | - | messageId | Message 1 | - | reaction | 👍 | - Then user "participant1" retrieve reactions "👍" of message "Message 1" in room "room1" with 200 - | actorType | actorId | actorDisplayName | reaction | - - Scenario: Editing and deleting messages returns a 202 status code with a bot - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" sends message "Message 1" to room "room" with 201 - Then user "participant1" edits message "Message 1" in room "room" to "Message 1 - Edit 1" with 200 - And user "participant1" deletes message "Message 1 - Edit 1" from room "room" with 200 - Given invoking occ with "talk:bot:install Bot Secret1234567890123456789012345678901234567890 https://localhost/bot1 --feature=webhook" - And the command was successful - And read bot ids from OCC - And invoking occ with "talk:bot:setup BOT(Bot) ROOM(room)" - And the command was successful - When user "participant1" sends message "Message 2" to room "room" with 201 - Then user "participant1" edits message "Message 2" in room "room" to "Message 2 - Edit 2" with 202 - And user "participant1" deletes message "Message 2 - Edit 2" from room "room" with 202 diff --git a/tests/integration/features/chat-1/delete.feature b/tests/integration/features/chat-1/delete.feature deleted file mode 100644 index ed8a53e4875..00000000000 --- a/tests/integration/features/chat-1/delete.feature +++ /dev/null @@ -1,225 +0,0 @@ -Feature: chat/delete - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: moderator deletes their own message - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - And user "participant1" deletes message "Message 1" from room "group room" with 200 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message deleted by author | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | | - Then user "participant1" received a system messages in room "group room" to delete "Message 1" - Then user "participant2" received a system messages in room "group room" to delete "Message 1" - - Scenario: user deletes their own message - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | 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 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - And user "participant2" deletes message "Message 1" from room "group room" with 200 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message deleted by author | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname"}} | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname"}} | | - Then user "participant1" received a system messages in room "group room" to delete "Message 1" - Then user "participant2" received a system messages in room "group room" to delete "Message 1" - - Scenario: user cannot delete without chat permission - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | 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 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - # Removing chat permission only - Then user "participant1" sets permissions for "participant2" in room "group room" to "CSJLAVP" with 200 (v4) - And user "participant2" deletes message "Message 1" from room "group room" with 403 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - - Scenario: moderator deletes other user message - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | 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 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - And user "participant1" deletes message "Message 1" from room "group room" with 200 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message deleted by {actor} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | | - Then user "participant1" received a system messages in room "group room" to delete "Message 1" - Then user "participant2" received a system messages in room "group room" to delete "Message 1" - - Scenario: moderator deletes their own message which got replies - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | 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 "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - And user "participant1" deletes message "Message 1" from room "group room" with 200 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message deleted by you | - | group room | users | participant2 | participant2-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message deleted by {actor} | - | group room | users | participant2 | participant2-displayname | Message deleted by {actor} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | | - Then user "participant1" received a system messages in room "group room" to delete "Message 1" - Then user "participant2" received a system messages in room "group room" to delete "Message 1" - - Scenario: user deletes their own message which got replies - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | 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 "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - And user "participant2" deletes message "Message 1" from room "group room" with 200 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message deleted by author | - | group room | users | participant2 | participant2-displayname | Message deleted by author | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname"}} | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message deleted by you | - | group room | users | participant2 | participant2-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname"}} | | - Then user "participant1" received a system messages in room "group room" to delete "Message 1" - Then user "participant2" received a system messages in room "group room" to delete "Message 1" - - Scenario: moderator deletes other user message - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | 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 "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | | - And user "participant1" deletes message "Message 1" from room "group room" with 200 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message deleted by you | - | group room | users | participant2 | participant2-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | | - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message deleted by {actor} | - | group room | users | participant2 | participant2-displayname | Message deleted by {actor} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | | - Then user "participant1" received a system messages in room "group room" to delete "Message 1" - Then user "participant2" received a system messages in room "group room" to delete "Message 1" - - Scenario: Can only delete own messages in one-to-one - Given user "participant1" creates room "room1" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" sends message "Message 1" to room "room1" with 201 - And user "participant2" sends message "Message 2" to room "room1" with 201 - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room1 | users | participant2 | participant2-displayname | Message 2 | [] | - | room1 | users | participant1 | participant1-displayname | Message 1 | [] | - Then user "participant2" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room1 | users | participant2 | participant2-displayname | Message 2 | [] | - | room1 | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant1" deletes message "Message 2" from room "room1" with 403 - And user "participant2" deletes message "Message 1" from room "room1" with 403 - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room1 | users | participant2 | participant2-displayname | Message 2 | [] | - | room1 | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant1" deletes message "Message 1" from room "room1" with 200 - And user "participant2" deletes message "Message 2" from room "room1" with 200 - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room1 | users | participant2 | participant2-displayname | Message deleted by author | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room1 | users | participant1 | participant1-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - Then user "participant2" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room1 | users | participant2 | participant2-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room1 | users | participant1 | participant1-displayname | Message deleted by author | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Clear chat history as a moderator - Given user "participant1" creates room "room1" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room1" with 200 (v4) - And user "participant1" sends message "Message 1" to room "room1" with 201 - And user "participant2" sends message "Message 2" to room "room1" with 201 - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room1 | users | participant2 | participant2-displayname | Message 2 | [] | - | room1 | users | participant1 | participant1-displayname | Message 1 | [] | - Then user "participant2" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room1 | users | participant2 | participant2-displayname | Message 2 | [] | - | room1 | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant2" deletes chat history for room "room1" with 403 - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room1 | users | participant2 | participant2-displayname | Message 2 | [] | - | room1 | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant1" deletes chat history for room "room1" with 200 - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - Then user "participant1" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | history_cleared | - Then user "participant2" sees the following system messages in room "room1" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room1 | users | participant1 | participant1-displayname | history_cleared | diff --git a/tests/integration/features/chat-1/edit-message.feature b/tests/integration/features/chat-1/edit-message.feature deleted file mode 100644 index c6a1a79556d..00000000000 --- a/tests/integration/features/chat-1/edit-message.feature +++ /dev/null @@ -1,228 +0,0 @@ -Feature: chat-1/edit-message - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Moderator edits their own message - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "room" with 201 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant1 | participant1-displayname | Message 1 | [] | | - And user "participant1" edits message "Message 1" in room "room" to "Message 1 - Edit 1" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant1 | participant1-displayname | Message 1 - Edit 1 | [] | | - Then user "participant2" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant1 | participant1-displayname | Message 1 - Edit 1 | [] | | - And user "participant2" edits message "Message 1 - Edit 1" in room "room" to "Message 1 - Edit 2" with 403 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant1 | participant1-displayname | Message 1 - Edit 1 | [] | | - Then user "participant2" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant1 | participant1-displayname | Message 1 - Edit 1 | [] | | - - Scenario: User and moderator edit user message - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "room" with 201 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant2 | participant2-displayname | Message 1 | [] | | - And user "participant1" edits message "Message 1" in room "room" to "Message 1 - Edit 1" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | lastEditActorType | lastEditActorId | lastEditActorDisplayName | - | room | users | participant2 | participant2-displayname | Message 1 - Edit 1 | [] | | users | participant1 | participant1-displayname | - Then user "participant2" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | lastEditActorType | lastEditActorId | lastEditActorDisplayName | - | room | users | participant2 | participant2-displayname | Message 1 - Edit 1 | [] | | users | participant1 | participant1-displayname | - And user "participant2" edits message "Message 1 - Edit 1" in room "room" to "Message 1 - Edit 2" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | lastEditActorType | lastEditActorId | lastEditActorDisplayName | - | room | users | participant2 | participant2-displayname | Message 1 - Edit 2 | [] | | users | participant2 | participant2-displayname | - Then user "participant2" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | lastEditActorType | lastEditActorId | lastEditActorDisplayName | - | room | users | participant2 | participant2-displayname | Message 1 - Edit 2 | [] | | users | participant2 | participant2-displayname | - And user "participant2" edits message "Message 1 - Edit 1" in room "room" to "" with 400 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | lastEditActorType | lastEditActorId | lastEditActorDisplayName | - | room | users | participant2 | participant2-displayname | Message 1 - Edit 2 | [] | | users | participant2 | participant2-displayname | - When user "participant2" is deleted - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | lastEditActorType | lastEditActorId | lastEditActorDisplayName | - | room | deleted_users | deleted_users | | Message 1 - Edit 2 | [] | | deleted_users | deleted_users | | - When aging messages 6 hours in room "room" - And user "participant1" edits message "Message 1 - Edit 1" in room "room" to "Message 1 - Edit 2" with 200 - When aging messages 24 hours in room "room" - And user "participant1" edits message "Message 1 - Edit 2" in room "room" to "Message 1 - Edit Too old" with 400 - | error | age | - - Scenario: Editing a caption - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" shares "welcome.txt" with room "room" - | talkMetaData | {"caption":"Caption 1"} | - And user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant1 | participant1-displayname | Caption 1 | "IGNORE" | - When user "participant1" edits message "Caption 1" in room "room" to "Caption 1 - Edit 1" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant1 | participant1-displayname | Caption 1 - Edit 1 | "IGNORE" | - When user "participant1" edits message "Caption 1" in room "room" to "" with 400 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant1 | participant1-displayname | Caption 1 - Edit 1 | "IGNORE" | - - Scenario: Notification handling - None vs Direct mention - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "room" with 201 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 | [] | - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 0 | 0 | - Then user "participant1" has the following notifications - And user "participant2" edits message "Message 1" in room "room" to "Message 1 - Edit @participant1" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 - Edit {mention-user1} | {"mention-user1":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Message 1 - Edit {mention-user1} | participant2-displayname mentioned you in conversation room | - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 1 | 1 | - And user "participant2" edits message "Message 1" in room "room" to "Message 1 - Edit 2" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 - Edit 2 | [] | - Then user "participant1" has the following notifications - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 1 | 1 | - - Scenario: Notification handling - None vs All - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "room" with 201 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 | [] | - Then user "participant1" has the following notifications - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 0 | 0 | - And user "participant2" edits message "Message 1" in room "room" to "Message 1 - Edit @all" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 - Edit {mention-call1} | "IGNORE" | - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Message 1 - Edit {mention-call1} | participant2-displayname mentioned everyone in conversation room | - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 1 | 0 | - And user "participant2" edits message "Message 1" in room "room" to "Message 1 - Edit 2" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 - Edit 2 | [] | - Then user "participant1" has the following notifications - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 1 | 0 | - - Scenario: Notification handling - Direct mention vs All - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - And user "participant2" sends message "Message 1 - @participant1" to room "room" with 201 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 - {mention-user1} | {"mention-user1":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Message 1 - {mention-user1} | participant2-displayname mentioned you in conversation room | - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 1 | 1 | - And user "participant2" edits message "Message 1 - @participant1" in room "room" to "Message 1 - Edit @all" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 - Edit {mention-call1} | "IGNORE" | - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Message 1 - Edit {mention-call1} | participant2-displayname mentioned you in conversation room | - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 1 | 1 | - And user "participant2" edits message "Message 1 - @participant1" in room "room" to "Message 1 - Edit @participant1" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 - Edit {mention-user1} | {"mention-user1":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Message 1 - Edit {mention-user1} | participant2-displayname mentioned you in conversation room | - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 1 | 1 | - - - Scenario: Notification handling - All vs Direct mention - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - And user "participant2" sends message "Message 1 - @all" to room "room" with 201 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 - {mention-call1} | "IGNORE" | - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Message 1 - {mention-call1} | participant2-displayname mentioned everyone in conversation room | - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 1 | 0 | - And user "participant2" edits message "Message 1 - @all" in room "room" to "Message 1 - Edit @participant1" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 - Edit {mention-user1} | {"mention-user1":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Message 1 - Edit {mention-user1} | participant2-displayname mentioned everyone in conversation room | - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 1 | 1 | - And user "participant2" edits message "Message 1 - Edit @participant1" in room "room" to "Message 1 - Edit @all" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message 1 - Edit {mention-call1} | "IGNORE" | - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Message 1 - Edit {mention-call1} | participant2-displayname mentioned everyone in conversation room | - Then user "participant1" is participant of the following rooms (v4) - | id | unreadMessages | unreadMention | unreadMentionDirect | - | room | 1 | 1 | 1 | diff --git a/tests/integration/features/chat-1/file-share.feature b/tests/integration/features/chat-1/file-share.feature deleted file mode 100644 index 0b8b01d001e..00000000000 --- a/tests/integration/features/chat-1/file-share.feature +++ /dev/null @@ -1,123 +0,0 @@ -Feature: chat/file-share - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Share a file to a chat - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" shares "welcome.txt" with room "public room" - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | {file} | "IGNORE" | - - Scenario: Share a file with meta data to a chat (like the mobile clients do) - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" shares "welcome.txt" with room "public room" - | talkMetaData | {"mimetype":"text/plain","messageType":""} | - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | {file} | "IGNORE" | - - Scenario: Share a file with caption - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" shares "welcome.txt" with room "public room" - | talkMetaData | {"caption":"Hello @participant2 this is a caption for the attached document"} | - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Hello {mention-user1} this is a caption for the attached document | "IGNORE" | - - Scenario: Share a file with caption that only is a mention - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" shares "welcome.txt" with room "public room" - | talkMetaData | {"caption":"@participant2"} | - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | {mention-user1} | "IGNORE" | - - Scenario: Captioned message as a reply - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | 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 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | public room | users | participant2 | participant2-displayname | Message 1 | [] | | - When user "participant1" shares "welcome.txt" with room "public room" - | talkMetaData.caption | @participant2 | - | talkMetaData.replyTo | Message 1 | - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | public room | users | participant1 | participant1-displayname | {mention-user1} | "IGNORE" | Message 1 | - | public room | users | participant2 | participant2-displayname | Message 1 | [] | | - - Scenario: Captioned message can not reply cross chats - Given user "participant1" creates room "room1" (v4) - | roomType | 3 | - | roomName | room | - Given user "participant1" creates room "room2" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room1" with 200 (v4) - And user "participant2" sends message "Message 1" to room "room1" with 201 - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room1 | users | participant2 | participant2-displayname | Message 1 | [] | | - When user "participant1" shares "welcome.txt" with room "room2" - | talkMetaData.caption | @participant2 | - | talkMetaData.replyTo | Message 1 | - Then user "participant1" sees the following messages in room "room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room1 | users | participant2 | participant2-displayname | Message 1 | [] | | - Then user "participant1" sees the following messages in room "room2" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room2 | users | participant1 | participant1-displayname | {mention-user1} | "IGNORE" | | - - Scenario: Can not share a file without chat permission - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - # Removing chat permission only - Then user "participant1" sets permissions for "participant2" in room "public room" to "CSJLAVP" with 200 (v4) - When user "participant2" shares "welcome.txt" with room "public room" - And the OCS status code should be 404 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - - Scenario: Delete share a file message from a chat - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" shares "welcome.txt" with room "public room" - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | {file} | "IGNORE" | - And user "participant1" deletes message "shared::file::welcome.txt" from room "public room" with 200 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Can not delete a share file message without chat permission - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - When user "participant2" shares "welcome.txt" with room "public room" - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant2 | participant2-displayname | {file} | "IGNORE" | - # Removing chat permission only - Then user "participant1" sets permissions for "participant2" in room "public room" to "CSJLAVP" with 200 (v4) - And user "participant2" deletes message "shared::file::welcome.txt" from room "public room" with 403 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant2 | participant2-displayname | {file} | "IGNORE" | diff --git a/tests/integration/features/chat-1/group-read-only.feature b/tests/integration/features/chat-1/group-read-only.feature deleted file mode 100644 index ef0c2bf9aaa..00000000000 --- a/tests/integration/features/chat-1/group-read-only.feature +++ /dev/null @@ -1,58 +0,0 @@ -Feature: chat/group-read-only - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - And group "attendees1" exists - And user "participant2" is member of group "attendees1" - - Scenario: owner can send and receive chat messages to and from group room - Given signaling server is started - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - When user "participant1" sends message "Message 1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | - And reset signaling server requests - When user "participant1" locks room "group room" with 200 (v4) - Then signaling server received the following requests - | token | data | - | group room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - | group room | {"type":"update","update":{"userids":["participant1","participant2"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":1,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - When user "participant1" sends message "Message 2" to room "group room" with 403 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | - And reset signaling server requests - When user "participant1" unlocks room "group room" with 200 (v4) - Then signaling server received the following requests - | token | data | - | group room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - | group room | {"type":"update","update":{"userids":["participant1","participant2"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - When user "participant1" sends message "Message 3" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant1 | participant1-displayname | Message 3 | [] | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | - - Scenario: invited user can send and receive chat messages to and from group room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - When user "participant2" sends message "Message 1" to room "group room" with 201 - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | - When user "participant1" locks room "group room" with 200 (v4) - When user "participant2" sends message "Message 2" to room "group room" with 403 - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | - When user "participant1" unlocks room "group room" with 200 (v4) - When user "participant2" sends message "Message 3" to room "group room" with 201 - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant2 | participant2-displayname | Message 3 | [] | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | diff --git a/tests/integration/features/chat-1/group.feature b/tests/integration/features/chat-1/group.feature deleted file mode 100644 index b8cb1ec22ca..00000000000 --- a/tests/integration/features/chat-1/group.feature +++ /dev/null @@ -1,70 +0,0 @@ -Feature: chat/group - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - And group "attendees1" exists - And user "participant2" is member of group "attendees1" - - Scenario: owner can send and receive chat messages to and from group room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - When user "participant1" sends message "Message 1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | - - Scenario: invited user can send and receive chat messages to and from group room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - When user "participant2" sends message "Message 1" to room "group room" with 201 - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant2 | participant2-displayname | Message 1 | [] | - - Scenario: invited user can not send without chat permissions - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - # Removing chat permission only - Then user "participant1" sets permissions for "participant2" in room "group room" to "CSJLAVP" with 200 (v4) - When user "participant2" sends message "Message 1" to room "group room" with 403 - When user "participant1" sends message "Message 2" to room "group room" with 201 - Then user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant1 | participant1-displayname | Message 2 | [] | - - Scenario: not invited user can not send nor receive chat messages to nor from group room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - When user "participant3" sends message "Message 1" to room "group room" with 404 - And user "participant1" sends message "Message 2" to room "group room" with 201 - Then user "participant3" sees the following messages in room "group room" with 404 - - Scenario: guest can not send nor receive chat messages to nor from group room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "guest" joins call "group room" with 404 (v4) - When user "guest" sends message "Message 1" to room "group room" with 404 - And user "participant1" sends message "Message 2" to room "group room" with 201 - Then user "guest" sees the following messages in room "group room" with 404 - - Scenario: everyone in a group room can receive messages from everyone in that room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - When user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant2" sends message "Message 2" to room "group room" with 201 - And user "participant2" sends message "" to room "group room" with 400 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant2 | participant2-displayname | Message 2 | [] | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | users | participant2 | participant2-displayname | Message 2 | [] | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | diff --git a/tests/integration/features/chat-1/mentions.feature b/tests/integration/features/chat-1/mentions.feature deleted file mode 100644 index efb32e32efd..00000000000 --- a/tests/integration/features/chat-1/mentions.feature +++ /dev/null @@ -1,635 +0,0 @@ -Feature: chat/mentions - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - Given user "participant4" exists - - Scenario: get mentions in a one-to-one room - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" gets the following candidate mentions in room "one-to-one room" for "" with 200 - | id | label | source | mentionId | - | participant2 | participant2-displayname | users | participant2 | - And user "participant2" gets the following candidate mentions in room "one-to-one room" for "" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - - Scenario: get matched mentions in a one-to-one room - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" gets the following candidate mentions in room "one-to-one room" for "part" with 200 - | id | label | source | mentionId | - | participant2 | participant2-displayname | users | participant2 | - And user "participant2" gets the following candidate mentions in room "one-to-one room" for "part" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - - Scenario: get unmatched mentions in a one-to-one room - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" gets the following candidate mentions in room "one-to-one room" for "unknown" with 200 - And user "participant2" gets the following candidate mentions in room "one-to-one room" for "unknown" with 200 - - Scenario: get mentions in a one-to-one room with a participant not in the room - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant3" gets the following candidate mentions in room "one-to-one room" for "" with 404 - - - - Scenario: get mentions in a group room with no other participant - When user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - Then user "participant1" gets the following candidate mentions in room "group room" for "" with 200 - | id | label | source | mentionId | - | all | room | calls | all | - - Scenario: get mentions in a group room - When user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - Then user "participant1" gets the following candidate mentions in room "group room" for "" with 200 - | id | label | source | mentionId | - | all | room | calls | all | - | participant2 | participant2-displayname | users | participant2 | - | participant3 | participant3-displayname | users | participant3 | - And user "participant2" gets the following candidate mentions in room "group room" for "" with 200 - | id | label | source | mentionId | - | all | room | calls | all | - | participant1 | participant1-displayname | users | participant1 | - | participant3 | participant3-displayname | users | participant3 | - And user "participant3" gets the following candidate mentions in room "group room" for "" with 200 - | id | label | source | mentionId | - | all | room | calls | all | - | participant1 | participant1-displayname | users | participant1 | - | participant2 | participant2-displayname | users | participant2 | - - Scenario: get matched mentions in a group room - When user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - Then user "participant1" gets the following candidate mentions in room "group room" for "part" with 200 - | id | label | source | mentionId | - | participant2 | participant2-displayname | users | participant2 | - | participant3 | participant3-displayname | users | participant3 | - And user "participant2" gets the following candidate mentions in room "group room" for "part" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - | participant3 | participant3-displayname | users | participant3 | - And user "participant3" gets the following candidate mentions in room "group room" for "part" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - | participant2 | participant2-displayname | users | participant2 | - - Scenario: get unmatched mentions in a group room - When user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - Then user "participant1" gets the following candidate mentions in room "group room" for "unknown" with 200 - And user "participant2" gets the following candidate mentions in room "group room" for "unknown" with 200 - And user "participant3" gets the following candidate mentions in room "group room" for "unknown" with 200 - - Scenario: get mentions in a group room with a participant not in the room - When user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - Then user "participant4" gets the following candidate mentions in room "group room" for "" with 404 - - - - Scenario: get mentions in a public room with no other participant - When user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - Then user "participant1" gets the following candidate mentions in room "public room" for "" with 200 - | id | label | source | mentionId | - | all | room | calls | all | - - Scenario: get mentions in a public room - When user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - And user "participant3" joins room "public room" with 200 (v4) - And user "guest" joins room "public room" with 200 (v4) - Then user "participant1" gets the following candidate mentions in room "public room" for "" with 200 - | id | label | source | mentionId | - | all | room | calls | all | - | participant2 | participant2-displayname | users | participant2 | - | participant3 | participant3-displayname | users | participant3 | - | GUEST_ID | Guest | guests | GUEST_ID | - And user "participant2" gets the following candidate mentions in room "public room" for "" with 200 - | id | label | source | mentionId | - | all | room | calls | all | - | participant1 | participant1-displayname | users | participant1 | - | participant3 | participant3-displayname | users | participant3 | - | GUEST_ID | Guest | guests | GUEST_ID | - And user "participant3" gets the following candidate mentions in room "public room" for "" with 200 - | id | label | source | mentionId | - | all | room | calls | all | - | participant1 | participant1-displayname | users | participant1 | - | participant2 | participant2-displayname | users | participant2 | - | GUEST_ID | Guest | guests | GUEST_ID | - And user "guest" gets the following candidate mentions in room "public room" for "" with 200 - | id | label | source | mentionId | - | all | room | calls | all | - | participant1 | participant1-displayname | users | participant1 | - | participant2 | participant2-displayname | users | participant2 | - | participant3 | participant3-displayname | users | participant3 | - - Scenario: get matched mentions in a public room - When user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - And user "participant3" joins room "public room" with 200 (v4) - And user "guest" joins room "public room" with 200 (v4) - Then user "participant1" gets the following candidate mentions in room "public room" for "part" with 200 - | id | label | source | mentionId | - | participant2 | participant2-displayname | users | participant2 | - | participant3 | participant3-displayname | users | participant3 | - And user "participant2" gets the following candidate mentions in room "public room" for "part" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - | participant3 | participant3-displayname | users | participant3 | - And user "participant3" gets the following candidate mentions in room "public room" for "part" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - | participant2 | participant2-displayname | users | participant2 | - And user "guest" gets the following candidate mentions in room "public room" for "part" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - | participant2 | participant2-displayname | users | participant2 | - | participant3 | participant3-displayname | users | participant3 | - - Scenario: get matched guest mentions in a public room - When user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - And user "participant3" joins room "public room" with 200 (v4) - And user "guest1" joins room "public room" with 200 (v4) - And user "guest2" joins room "public room" with 200 (v4) - Then user "participant1" gets the following candidate mentions in room "public room" for "uest" with 200 - | id | label | source | mentionId | - | GUEST_ID | Guest | guests | GUEST_ID | - | GUEST_ID | Guest | guests | GUEST_ID | - And user "participant2" gets the following candidate mentions in room "public room" for "uest" with 200 - | id | label | source | mentionId | - | GUEST_ID | Guest | guests | GUEST_ID | - | GUEST_ID | Guest | guests | GUEST_ID | - And user "participant3" gets the following candidate mentions in room "public room" for "uest" with 200 - | id | label | source | mentionId | - | GUEST_ID | Guest | guests | GUEST_ID | - | GUEST_ID | Guest | guests | GUEST_ID | - And user "guest1" gets the following candidate mentions in room "public room" for "uest" with 200 - | id | label | source | mentionId | - | GUEST_ID | Guest | guests | GUEST_ID | - And user "guest2" gets the following candidate mentions in room "public room" for "uest" with 200 - | id | label | source | mentionId | - | GUEST_ID | Guest | guests | GUEST_ID | - - Scenario: get matched named guest mentions in a public room - When user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - And user "participant3" joins room "public room" with 200 (v4) - And user "guest1" joins room "public room" with 200 (v4) - And guest "guest1" sets name to "FooBar" in room "public room" with 200 - And user "guest2" joins room "public room" with 200 (v4) - Then user "participant1" gets the following candidate mentions in room "public room" for "oob" with 200 - | id | label | source | mentionId | - | GUEST_ID | FooBar | guests | GUEST_ID | - And user "participant2" gets the following candidate mentions in room "public room" for "oob" with 200 - | id | label | source | mentionId | - | GUEST_ID | FooBar | guests | GUEST_ID | - And user "participant3" gets the following candidate mentions in room "public room" for "oob" with 200 - | id | label | source | mentionId | - | GUEST_ID | FooBar | guests | GUEST_ID | - And user "guest1" gets the following candidate mentions in room "public room" for "oob" with 200 - | id | label | source | mentionId | - And user "guest2" gets the following candidate mentions in room "public room" for "oob" with 200 - | id | label | source | mentionId | - | GUEST_ID | FooBar | guests | GUEST_ID | - - Scenario: get unmatched mentions in a public room - When user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - And user "participant3" joins room "public room" with 200 (v4) - And user "guest" joins room "public room" with 200 (v4) - Then user "participant1" gets the following candidate mentions in room "public room" for "unknown" with 200 - And user "participant2" gets the following candidate mentions in room "public room" for "unknown" with 200 - And user "participant3" gets the following candidate mentions in room "public room" for "unknown" with 200 - And user "guest" gets the following candidate mentions in room "public room" for "unknown" with 200 - - Scenario: get mentions in a public room with a participant not in the room - When user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - And user "participant3" joins room "public room" with 200 (v4) - And user "guest" joins room "public room" with 200 (v4) - Then user "participant4" gets the following candidate mentions in room "public room" for "" with 404 - And user "guest2" gets the following candidate mentions in room "public room" for "" with 404 - - - - Scenario: get mentions in a file room with no other joined participant - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant1" joins room "file welcome.txt room" with 200 (v4) - And user "participant1" is participant of room "file welcome.txt room" (v4) - And user "participant2" is not participant of room "file welcome.txt room" (v4) - Then user "participant1" gets the following candidate mentions in room "file welcome.txt room" for "" with 200 - | id | label | source | mentionId | - | all | welcome.txt | calls | all | - | participant2 | participant2-displayname | users | participant2 | - And user "participant2" gets the following candidate mentions in room "file welcome.txt room" for "" with 404 - - Scenario: get mentions in a file room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant1" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant2" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant1" is participant of room "file welcome (2).txt room" (v4) - And user "participant2" is participant of room "file welcome (2).txt room" (v4) - Then user "participant1" gets the following candidate mentions in room "file welcome (2).txt room" for "" with 200 - | id | label | source | mentionId | - | all | welcome (2).txt | calls | all | - | participant2 | participant2-displayname | users | participant2 | - And user "participant2" gets the following candidate mentions in room "file welcome (2).txt room" for "" with 200 - | id | label | source | mentionId | - | all | welcome (2).txt | calls | all | - | participant1 | participant1-displayname | users | participant1 | - - Scenario: get matched mentions in a file room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant1" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant2" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant1" is participant of room "file welcome (2).txt room" (v4) - And user "participant2" is participant of room "file welcome (2).txt room" (v4) - Then user "participant1" gets the following candidate mentions in room "file welcome (2).txt room" for "part" with 200 - | id | label | source | mentionId | - | participant2 | participant2-displayname | users | participant2 | - And user "participant2" gets the following candidate mentions in room "file welcome (2).txt room" for "part" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - - Scenario: get unmatched mentions in a file room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant1" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant2" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant1" is participant of room "file welcome (2).txt room" (v4) - And user "participant2" is participant of room "file welcome (2).txt room" (v4) - Then user "participant1" gets the following candidate mentions in room "file welcome (2).txt room" for "unknown" with 200 - And user "participant2" gets the following candidate mentions in room "file welcome (2).txt room" for "unknown" with 200 - - Scenario: get mentions in a file room with a participant without access to the file - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant1" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant2" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant1" is participant of room "file welcome (2).txt room" (v4) - And user "participant2" is participant of room "file welcome (2).txt room" (v4) - Then user "participant3" gets the following candidate mentions in room "file welcome (2).txt room" for "" with 404 - - Scenario: mention a participant with access to the file but not joined in a file room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant1" joins room "file welcome.txt room" with 200 (v4) - And user "participant1" is participant of room "file welcome.txt room" (v4) - And user "participant2" is not participant of room "file welcome.txt room" (v4) - When user "participant1" sends message "hi @participant2" to room "file welcome.txt room" with 201 - Then user "participant2" is participant of room "file welcome.txt room" (v4) - - - - Scenario: get mentions in a room for a file shared by link with no other joined participant - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - When user "participant1" gets the room for last share with 200 (v1) - And user "participant1" joins room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - And user "participant2" is not participant of room "file last share room" (v4) - Then user "participant1" gets the following candidate mentions in room "file last share room" for "" with 200 - | id | label | source | mentionId | - | all | welcome.txt | calls | all | - | participant2 | participant2-displayname | users | participant2 | - And user "participant2" gets the following candidate mentions in room "file last share room" for "" with 404 - And user "participant3" gets the following candidate mentions in room "file last share room" for "" with 404 - And user "guest" gets the following candidate mentions in room "file last share room" for "" with 404 - - Scenario: get mentions in a room for a file shared by link - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" with user "participant4" with OCS 100 - And user "participant4" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - When user "participant1" gets the room for last share with 200 (v1) - And user "participant1" joins room "file last share room" with 200 (v4) - And user "participant2" joins room "file last share room" with 200 (v4) - # Users without access to a file shared by link need to log in (so further - # requests keep the same session) and get the room (so the share token is - # stored in the session) to be able to join it. - And user "participant3" logs in - And user "participant3" gets the room for last share with 200 (v1) - And user "participant3" joins room "file last share room" with 200 (v4) - # Guests need to get the room (so the share token is stored in the session) - # to be able to join it. - And user "guest" gets the room for last share with 200 (v1) - And user "guest" joins room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - And user "participant2" is participant of room "file last share room" (v4) - And user "participant3" is participant of room "file last share room" (v4) - And user "guest" is participant of room "file last share room" (v4) - Then user "participant1" gets the following candidate mentions in room "file last share room" for "" with 200 - | id | label | source | mentionId | - | all | welcome.txt | calls | all | - | participant2 | participant2-displayname | users | participant2 | - | participant4 | participant4-displayname | users | participant4 | - | participant3 | participant3-displayname | users | participant3 | - | GUEST_ID | Guest | guests | GUEST_ID | - And user "participant2" gets the following candidate mentions in room "file last share room" for "" with 200 - | id | label | source | mentionId | - | all | welcome.txt | calls | all | - | participant1 | participant1-displayname | users | participant1 | - | participant4 | participant4-displayname | users | participant4 | - | participant3 | participant3-displayname | users | participant3 | - | GUEST_ID | Guest | guests | GUEST_ID | - # Self-joined users can not mention users with access to the file that have - # not joined the room. - And user "participant3" gets the following candidate mentions in room "file last share room" for "" with 200 - | id | label | source | mentionId | - | all | welcome.txt | calls | all | - | participant1 | participant1-displayname | users | participant1 | - | participant2 | participant2-displayname | users | participant2 | - | GUEST_ID | Guest | guests | GUEST_ID | - # Guests can not mention users with access to the file that have not joined - # the room. - And user "guest" gets the following candidate mentions in room "file last share room" for "" with 200 - | id | label | source | mentionId | - | all | welcome.txt | calls | all | - | participant1 | participant1-displayname | users | participant1 | - | participant2 | participant2-displayname | users | participant2 | - | participant3 | participant3-displayname | users | participant3 | - - Scenario: get matched mentions in a room for a file shared by link - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" with user "participant4" with OCS 100 - And user "participant4" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - When user "participant2" gets the room for last share with 200 (v1) - And user "participant1" joins room "file last share room" with 200 (v4) - And user "participant2" joins room "file last share room" with 200 (v4) - # Users without access to a file shared by link need to log in (so further - # requests keep the same session) and get the room (so the share token is - # stored in the session) to be able to join it. - And user "participant3" logs in - And user "participant3" gets the room for last share with 200 (v1) - And user "participant3" joins room "file last share room" with 200 (v4) - # Guests need to get the room (so the share token is stored in the session) - # to be able to join it. - And user "guest" gets the room for last share with 200 (v1) - And user "guest" joins room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - And user "participant2" is participant of room "file last share room" (v4) - And user "participant3" is participant of room "file last share room" (v4) - And user "guest" is participant of room "file last share room" (v4) - Then user "participant1" gets the following candidate mentions in room "file last share room" for "part" with 200 - | id | label | source | mentionId | - | participant2 | participant2-displayname | users | participant2 | - | participant4 | participant4-displayname | users | participant4 | - | participant3 | participant3-displayname | users | participant3 | - And user "participant2" gets the following candidate mentions in room "file last share room" for "part" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - | participant4 | participant4-displayname | users | participant4 | - | participant3 | participant3-displayname | users | participant3 | - # Self-joined users can not mention users with access to the file that have - # not joined the room. - And user "participant3" gets the following candidate mentions in room "file last share room" for "part" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - | participant2 | participant2-displayname | users | participant2 | - # Guests can not mention users with access to the file that have not joined - # the room. - And user "guest" gets the following candidate mentions in room "file last share room" for "part" with 200 - | id | label | source | mentionId | - | participant1 | participant1-displayname | users | participant1 | - | participant2 | participant2-displayname | users | participant2 | - | participant3 | participant3-displayname | users | participant3 | - - Scenario: get unmatched mentions in a room for a file shared by link - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" with user "participant4" with OCS 100 - And user "participant4" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - When user "participant2" gets the room for last share with 200 (v1) - And user "participant1" joins room "file last share room" with 200 (v4) - And user "participant2" joins room "file last share room" with 200 (v4) - # Users without access to a file shared by link need to log in (so further - # requests keep the same session) and get the room (so the share token is - # stored in the session) to be able to join it. - And user "participant3" logs in - And user "participant3" gets the room for last share with 200 (v1) - And user "participant3" joins room "file last share room" with 200 (v4) - # Guests need to get the room (so the share token is stored in the session) - # to be able to join it. - And user "guest" gets the room for last share with 200 (v1) - And user "guest" joins room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - And user "participant2" is participant of room "file last share room" (v4) - And user "participant3" is participant of room "file last share room" (v4) - And user "guest" is participant of room "file last share room" (v4) - Then user "participant1" gets the following candidate mentions in room "file last share room" for "unknown" with 200 - And user "participant2" gets the following candidate mentions in room "file last share room" for "unknown" with 200 - And user "participant3" gets the following candidate mentions in room "file last share room" for "unknown" with 200 - And user "guest" gets the following candidate mentions in room "file last share room" for "unknown" with 200 - - Scenario: get mentions in a room for a file shared by link with a participant without access to the file and not joined - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - When user "participant2" gets the room for last share with 200 (v1) - And user "participant1" joins room "file last share room" with 200 (v4) - And user "participant2" joins room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - And user "participant2" is participant of room "file last share room" (v4) - Then user "participant3" gets the following candidate mentions in room "file last share room" for "" with 404 - And user "guest" gets the following candidate mentions in room "file last share room" for "" with 404 - - Scenario: mention a participant with access to the file but not joined in a room for a file shared by link - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant1" gets the room for last share with 200 (v1) - And user "participant1" joins room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - And user "participant2" is not participant of room "file last share room" (v4) - When user "participant1" sends message "hi @participant2" to room "file last share room" with 201 - Then user "participant2" is participant of room "file last share room" (v4) - - Scenario: mention a participant with access to the file but not joined by self-joined user and guest in a room for a file shared by link - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - # Users without access to a file shared by link need to log in (so further - # requests keep the same session) and get the room (so the share token is - # stored in the session) to be able to join it. - And user "participant3" logs in - And user "participant3" gets the room for last share with 200 (v1) - And user "participant3" joins room "file last share room" with 200 (v4) - # Guests need to get the room (so the share token is stored in the session) - # to be able to join it. - And user "guest" gets the room for last share with 200 (v1) - And user "guest" joins room "file last share room" with 200 (v4) - And user "participant2" is not participant of room "file last share room" (v4) - When user "participant3" sends message "hi @participant2" to room "file last share room" with 201 - And user "guest" sends message "hello @participant2" to room "file last share room" with 201 - Then user "participant2" is not participant of room "file last share room" (v4) - - Scenario: mention a participant without access to the file but joined in a room for a file shared by link - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant1" gets the room for last share with 200 (v1) - And user "participant1" joins room "file last share room" with 200 (v4) - # Users without access to a file shared by link need to log in (so further - # requests keep the same session) and get the room (so the share token is - # stored in the session) to be able to join it. - And user "participant3" logs in - And user "participant3" gets the room for last share with 200 (v1) - And user "participant3" joins room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - And user "participant3" is participant of room "file last share room" (v4) - When user "participant1" sends message "hi @participant3" to room "file last share room" with 201 - And user "participant3" leaves room "file last share room" with 200 (v4) - Then user "participant3" is not participant of room "file last share room" (v4) - - Scenario: check direct mention marker after room mention - When user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" sends message "Room mention @all no direct mention" to room "group room" with 201 - And user "participant2" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 1 | 0 | - And user "participant3" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 1 | 0 | - - Scenario: check direct mention marker after user mention - When user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" sends message "Direction mention for @participant3 only" to room "group room" with 201 - And user "participant2" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 0 | 0 | - And user "participant3" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 1 | 1 | - - Scenario: check direct mention marker after mixed mention - When user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" sends message "Direction mention for @participant3 and @all for participant2" to room "group room" with 201 - And user "participant2" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 1 | 0 | - And user "participant3" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 1 | 1 | - When user "participant3" reads message "Direction mention for @participant3 and @all for participant2" in room "group room" with 200 - And user "participant2" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 1 | 0 | - And user "participant3" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 0 | 0 | - - Scenario: check direct mention marker after reading partly - When user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" sends message "Test @participant3 #1" to room "group room" with 201 - And user "participant1" sends message "Test @participant3 #2" to room "group room" with 201 - And user "participant3" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 1 | 1 | - When user "participant3" reads message "Test @participant3 #1" in room "group room" with 200 - And user "participant3" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 1 | 1 | - When user "participant3" reads message "Test @participant3 #2" in room "group room" with 200 - And user "participant3" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 0 | 0 | - - Scenario: check direct mention marker after reading partly with mixed mention - When user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" sends message "Test @participant3 #1" to room "group room" with 201 - And user "participant1" sends message "Test @all" to room "group room" with 201 - And user "participant3" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 1 | 1 | - When user "participant3" reads message "Test @participant3 #1" in room "group room" with 200 - And user "participant3" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 1 | 0 | - When user "participant3" reads message "Test @all" in room "group room" with 200 - And user "participant3" is participant of the following rooms (v4) - | id | unreadMention | unreadMentionDirect | - | group room | 0 | 0 | - - Scenario: At-all in note-to-self broke the mention parsing - And user "participant1" creates note-to-self (v4) - And user "participant1" sends message "Test @all" to room "participant1-note-to-self" with 201 - And user "participant1" is participant of the following note-to-self rooms (v4) - | id | type | name | - | participant1-note-to-self | 6 | Note to self | - Then user "participant1" sees the following messages in room "participant1-note-to-self" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | participant1-note-to-self | users | participant1 | participant1-displayname | Test {mention-call1} | "IGNORE" | diff --git a/tests/integration/features/chat-1/message-expiration.feature b/tests/integration/features/chat-1/message-expiration.feature deleted file mode 100644 index 8f2e2a2cf67..00000000000 --- a/tests/integration/features/chat-1/message-expiration.feature +++ /dev/null @@ -1,61 +0,0 @@ -Feature: chat/message-expiration - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: Enable message expiration and check after expire - 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" sends message "Message 1" to room "room" with 201 - And user "participant1" set the message expiration to -1 of room "room" with 400 (v4) - And user "participant2" set the message expiration to 3 of room "room" with 403 (v4) - And user "participant3" set the message expiration to 3 of room "room" with 404 (v4) - And user "participant1" set the message expiration to 3 of room "room" with 200 (v4) - And user "participant1" sends message "Message 2" to room "room" with 201 - And user "participant1" is participant of the following rooms (v4) - | id | type | messageExpiration | - | room | 3 | 3 | - And user "participant1" set the message expiration to 0 of room "room" with 200 (v4) - And user "participant1" sends message "Message 3" to room "room" with 201 - And wait for 3 seconds - And force run "OCA\Talk\BackgroundJob\ExpireChatMessages" background jobs - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant1 | participant1-displayname | Message 3 | [] | | - | room | users | participant1 | participant1-displayname | Message 1 | [] | | - # Request messages using the expired message as an offset for the future - When next message request has the following parameters set - | lastCommonReadId | Message 2 | - | lastKnownMessageId | Message 2 | - | timeout | 0 | - | lookIntoFuture | 1 | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant1 | participant1-displayname | Message 3 | [] | | - # Request messages using the expired message as an offset for the past - When next message request has the following parameters set - | lastCommonReadId | Message 2 | - | lastKnownMessageId | Message 2 | - | timeout | 0 | - | lookIntoFuture | 0 | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant1 | participant1-displayname | Message 1 | [] | | - - Scenario: Expire shared file - Given user "participant1" creates room "room2" (v4) - | roomType | 3 | - | roomName | room2 | - And user "participant1" set the message expiration to 3 of room "room2" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "room2" with OCS 100 - And user "participant1" sees the following messages in room "room2" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room2 | users | participant1 | participant1-displayname | {file} | "IGNORE" | - And wait for 3 seconds - Then user "participant1" sees the following messages in room "room2" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - And user "participant1" gets last share - And the OCS status code should be 404 diff --git a/tests/integration/features/chat-1/note-to-self.feature b/tests/integration/features/chat-1/note-to-self.feature deleted file mode 100644 index 3e44131ff03..00000000000 --- a/tests/integration/features/chat-1/note-to-self.feature +++ /dev/null @@ -1,24 +0,0 @@ -Feature: chat/note-to-self - - Background: - Given user "participant1" exists - - Scenario: Created manually via the endpoint - When user "participant1" reset note-to-self preference - When user "participant1" creates note-to-self (v4) - And user "participant1" is participant of the following note-to-self rooms (v4) - | id | type | name | - | participant1-note-to-self | 6 | Note to self | - Then user "participant1" sees the following system messages in room "participant1-note-to-self" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | systemMessage | - | participant1-note-to-self | users | participant1 | participant1-displayname | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | conversation_created | - - - Scenario: Created automatically when fetching the room list - When user "participant1" reset note-to-self preference - And user "participant1" is participant of the following note-to-self rooms (v4) - | id | type | name | - | Note to self | 6 | Note to self | - Then user "participant1" sees the following system messages in room "Note to self" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | systemMessage | - | Note to self | guests | system | | System created the conversation | {"actor":{"type":"guest","id":"guest\/system","name":"Guest"}} | conversation_created | diff --git a/tests/integration/features/chat-1/notifications.feature b/tests/integration/features/chat-1/notifications.feature deleted file mode 100644 index e74482e1d8c..00000000000 --- a/tests/integration/features/chat-1/notifications.feature +++ /dev/null @@ -1,546 +0,0 @@ -Feature: chat/notifications - - Background: - Given user "participant1" exists - Given user "participant2" exists - And group "attendees1" exists - And user "participant2" is member of group "attendees1" - - Scenario: Normal message when recipient is online in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - Given user "participant1" sets session state to 2 in room "one-to-one room" with 404 (v4) - Given user "participant2" joins room "one-to-one room" with 200 (v4) - When user "participant1" sends message "Message 1" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Normal message when recipient is online but inactive - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - Given user "participant2" sets session state to 2 in room "one-to-one room" with 400 (v4) - When user "participant1" sends message "Message 1" to room "one-to-one room" with 201 - Given user "participant2" sets session state to 0 in room "one-to-one room" with 200 (v4) - When user "participant1" sends message "Message 2" to room "one-to-one room" with 201 - Given user "participant2" sets session state to 1 in room "one-to-one room" with 200 (v4) - When user "participant1" sends message "Message 3" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | one-to-one room/Message 2 | participant1-displayname sent you a private message | - - Scenario: Normal message when recipient is offline in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - Given user "participant2" leaves room "one-to-one room" with 200 (v4) - When user "participant1" sends message "Message 1" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | one-to-one room/Message 1 | participant1-displayname sent you a private message | - Then user "participant2" sees the following messages in room "one-to-one room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | silent | - | one-to-one room | users | participant1 | participant1-displayname | Message 1 | [] | !ISSET | - - Scenario: Silent sent message when recipient is offline in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - Given user "participant2" leaves room "one-to-one room" with 200 (v4) - When user "participant1" silent sends message "Message 1" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - Then user "participant2" sees the following messages in room "one-to-one room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | silent | - | one-to-one room | users | participant1 | participant1-displayname | Message 1 | [] | true | - - Scenario: Normal message when recipient disabled notifications in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - Given user "participant2" leaves room "one-to-one room" with 200 (v4) - And user "participant2" sets notifications to disabled for room "one-to-one room" (v4) - When user "participant1" sends message "Message 1" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Mention when recipient is online in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - Given user "participant2" joins room "one-to-one room" with 200 (v4) - When user "participant1" sends message "Hi @participant2 bye" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | one-to-one room/Hi @participant2 bye | participant1-displayname mentioned you in a private conversation | - - Scenario: Mention when recipient is offline in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - Given user "participant2" leaves room "one-to-one room" with 200 (v4) - When user "participant1" sends message "Hi @participant2 bye" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | one-to-one room/Hi @participant2 bye | participant1-displayname mentioned you in a private conversation | - - Scenario: Mention when recipient disabled notifications in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - Given user "participant2" leaves room "one-to-one room" with 200 (v4) - And user "participant2" sets notifications to disabled for room "one-to-one room" (v4) - When user "participant1" sends message "Hi @participant2 bye" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Reaction in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - Given user "participant2" leaves room "one-to-one room" with 200 (v4) - When user "participant2" sends message "Message 1" to room "one-to-one room" with 201 - And user "participant1" react with "🚀" on message "Message 1" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | one-to-one room/Message 1 | participant1-displayname reacted with 🚀 to your private message | - - Scenario: Reaction when recipient disabled notifications in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - Given user "participant2" leaves room "one-to-one room" with 200 (v4) - When user "participant2" sends message "Message 1" to room "one-to-one room" with 201 - And user "participant2" sets notifications to disabled for room "one-to-one room" (v4) - And user "participant1" react with "🚀" on message "Message 1" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: At-all when recipient is online in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - Given user "participant2" joins room "one-to-one room" with 200 (v4) - When user "participant1" sends message "Hi @all bye" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | one-to-one room/Hi @all bye | participant1-displayname mentioned you in a private conversation | - - Scenario: At-all when recipient is offline in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - Given user "participant2" leaves room "one-to-one room" with 200 (v4) - When user "participant1" sends message "Hi @all bye" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | one-to-one room/Hi @all bye | participant1-displayname mentioned you in a private conversation | - - Scenario: At-all when recipient disabled notifications in the one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - Given user "participant2" leaves room "one-to-one room" with 200 (v4) - And user "participant2" sets notifications to disabled for room "one-to-one room" (v4) - When user "participant1" sends message "Hi @all bye" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Normal message when recipient is online in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Given user "participant2" joins room "room" with 200 (v4) - When user "participant1" sends message "Message 1" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Normal message when recipient is offline in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant1" sends message "Message 1" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Normal message when recipient with all notifications in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - And user "participant2" sets notifications to all for room "room" (v4) - When user "participant1" sends message "Message 1" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Message 1 | participant1-displayname sent a message in conversation room | - - Scenario: Mention when recipient is online in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Given user "participant2" joins room "room" with 200 (v4) - When user "participant1" sends message "Hi @participant2 bye" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Hi @participant2 bye | participant1-displayname mentioned you in conversation room | - - Scenario: Silent mention when recipient is online in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant1" silent sends message "Hi @participant2 bye" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Mention when recipient is offline in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant1" sends message "Hi @participant2 bye" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Hi @participant2 bye | participant1-displayname mentioned you in conversation room | - - Scenario: Mention when recipient with disabled notifications in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - And user "participant2" sets notifications to disabled for room "room" (v4) - When user "participant1" sends message "Hi @participant2 bye" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: At-all when recipient is online in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Given user "participant2" joins room "room" with 200 (v4) - When user "participant1" sends message "Hi @all bye" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Hi @all bye | participant1-displayname mentioned everyone in conversation room | - - Scenario: At-all when recipient is offline in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant1" sends message "Hi @all bye" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Hi @all bye | participant1-displayname mentioned everyone in conversation room | - - Scenario: Silent at-all when recipient is offline in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant1" silent sends message "Hi @all bye" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: At-all when recipient with disabled notifications in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - And user "participant2" sets notifications to disabled for room "room" (v4) - When user "participant1" sends message "Hi @all bye" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Group-mention when recipient is online in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" adds group "attendees1" to room "room" with 200 (v4) - Given user "participant2" joins room "room" with 200 (v4) - When user "participant1" sends message 'Hi @"group/attendees1" bye' to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Hi @"group/attendees1" bye | participant1-displayname mentioned group attendees1 in conversation room | - - Scenario: Group-mention when group is not a member of the room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Given user "participant2" joins room "room" with 200 (v4) - When user "participant1" sends message 'Hi @"group/attendees1" bye' to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Group-mention when recipient is offline in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" adds group "attendees1" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant1" sends message 'Hi @"group/attendees1" bye' to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Hi @"group/attendees1" bye | participant1-displayname mentioned group attendees1 in conversation room | - - Scenario: Silent group-mention when recipient is offline in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" adds group "attendees1" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant1" silent sends message 'Hi @"group/attendees1" bye' to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Group-mention when recipient with disabled notifications in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" adds group "attendees1" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - And user "participant2" sets notifications to disabled for room "room" (v4) - When user "participant1" sends message 'Hi @"group/attendees1" bye' to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Replying with all mention types only gives a reply notification - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" adds group "attendees1" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant2" sends message "Hi part 1" to room "room" with 201 - When user "participant1" sends reply 'Hi @all @participant2 @"group/attendees1" bye' on message "Hi part 1" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Hi @all @participant2 @"group/attendees1" bye | participant1-displayname replied to your message in conversation room | - - Scenario: Replying with a captioned file gives a reply notification - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" adds group "attendees1" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant2" sends message "Message 1" to room "room" with 201 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant2 | participant2-displayname | Message 1 | [] | | - When user "participant1" shares "welcome.txt" with room "room" - | talkMetaData.caption | Caption 1-1 | - | talkMetaData.replyTo | Message 1 | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant1 | participant1-displayname | Caption 1-1 | "IGNORE" | Message 1 | - | room | users | participant2 | participant2-displayname | Message 1 | [] | | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Caption 1-1 | participant1-displayname replied to your message in conversation room | - - Scenario: Mentions in captions trigger normal mention notifications - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" adds group "attendees1" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "room" - | talkMetaData.caption | @participant2 | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant1 | participant1-displayname | {mention-user1} | "IGNORE" | | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/{mention-user1} | participant1-displayname mentioned you in conversation room | - - Scenario: Delete notification when the message is deleted - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "one-to-one room" with 200 (v4) - And user "participant2" leaves room "one-to-one room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "one-to-one room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | one-to-one room/Message 1 | participant1-displayname sent you a private message | - When user "participant1" deletes message "Message 1" from room "one-to-one room" with 200 (v1) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Reaction when recipient full enables notifications in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant2" sends message "Message 1" to room "room" with 201 - And user "participant2" sets notifications to all for room "room" (v4) - And user "participant1" react with "🚀" on message "Message 1" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Message 1 | participant1-displayname reacted with 🚀 to your message in conversation room | - - Scenario: Reaction when recipient has default notifications (disabled) in the group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - Given user "participant2" joins room "room" with 200 (v4) - Given user "participant2" leaves room "room" with 200 (v4) - When user "participant2" sends message "Message 1" to room "room" with 201 - And user "participant1" react with "🚀" on message "Message 1" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Lobby: No notifications while being blocked by the lobby - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - And user "participant2" joins room "room" with 200 (v4) - And user "participant2" leaves room "room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "room" with 201 - And user "participant2" sets notifications to all for room "room" (v4) - And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - When user "participant1" sends message "Hi @all bye" to room "room" with 201 - And user "participant1" react with "🚀" on message "Message 1" to room "room" with 201 - When user "participant1" sends message "Hi @participant2" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Lobby: Notifications for users that ignore the lobby - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - And user "participant2" joins room "room" with 200 (v4) - And user "participant2" leaves room "room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "room" with 201 - And user "participant2" sets notifications to all for room "room" (v4) - And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - And user "participant1" sets permissions for "participant2" in room "room" to "L" with 200 (v4) - And user "participant1" sends message "Hi @all bye" to room "room" with 201 - And user "participant1" react with "🚀" on message "Message 1" to room "room" with 201 - When user "participant1" sends message "Hi @participant2" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Hi @participant2 | participant1-displayname mentioned you in conversation room | - | spreed | chat | room/Message 1 | participant1-displayname reacted with 🚀 to your message in conversation room | - | spreed | chat | room/Hi @all bye | participant1-displayname mentioned everyone in conversation room | - - Scenario: Lobby: Notifications for moderators - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - And user "participant2" joins room "room" with 200 (v4) - And user "participant2" leaves room "room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "room" with 201 - And user "participant2" sets notifications to all for room "room" (v4) - And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant1" sends message "Hi @all bye" to room "room" with 201 - And user "participant1" react with "🚀" on message "Message 1" to room "room" with 201 - When user "participant1" sends message "Hi @participant2" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Hi @participant2 | participant1-displayname mentioned you in conversation room | - | spreed | chat | room/Message 1 | participant1-displayname reacted with 🚀 to your message in conversation room | - | spreed | chat | room/Hi @all bye | participant1-displayname mentioned everyone in conversation room | - - Scenario: Lobby: Wipe notifications when being blocked by the lobby - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Join and leave to clear the invite notification - And user "participant2" joins room "room" with 200 (v4) - And user "participant2" leaves room "room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "room" with 201 - And user "participant2" sets notifications to all for room "room" (v4) - And user "participant1" sends message "Hi @all bye" to room "room" with 201 - And user "participant1" react with "🚀" on message "Message 1" to room "room" with 201 - And user "participant1" sends message "Hi @participant2" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | chat | room/Hi @participant2 | participant1-displayname mentioned you in conversation room | - | spreed | chat | room/Message 1 | participant1-displayname reacted with 🚀 to your message in conversation room | - | spreed | chat | room/Hi @all bye | participant1-displayname mentioned everyone in conversation room | - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | diff --git a/tests/integration/features/chat-1/one-to-one.feature b/tests/integration/features/chat-1/one-to-one.feature deleted file mode 100644 index ef3baf12a7b..00000000000 --- a/tests/integration/features/chat-1/one-to-one.feature +++ /dev/null @@ -1,83 +0,0 @@ -Feature: chat/one-to-one - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: owner can send and receive chat messages to and from one-to-one room - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant1" sends message "Message 1" to room "one-to-one room" with 201 - 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 | users | participant1 | participant1-displayname | Message 1 | [] | - - Scenario: invited user can send and receive chat messages to and from one-to-one room - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant2" sends message "Message 1" to room "one-to-one room" with 201 - Then user "participant2" sees the following messages in room "one-to-one room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | one-to-one room | users | participant2 | participant2-displayname | Message 1 | [] | - - Scenario: not invited user can not send nor receive chat messages to nor from one-to-one room - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant3" sends message "Message 1" to room "one-to-one room" with 404 - And user "participant1" sends message "Message 2" to room "one-to-one room" with 201 - Then user "participant3" sees the following messages in room "one-to-one room" with 404 - - Scenario: guest can not send nor receive chat messages to nor from one-to-one room - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "guest" joins call "one-to-one room" with 404 (v4) - When user "guest" sends message "Message 1" to room "one-to-one room" with 404 - And user "participant1" sends message "Message 2" to room "one-to-one room" with 201 - Then user "guest" sees the following messages in room "one-to-one room" with 404 - - Scenario: everyone in a one-to-one room can receive messages from everyone in that room - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant1" sends message "Message 1" to room "one-to-one room" with 201 - And user "participant2" sends message "Message 2" to room "one-to-one room" with 201 - 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 | users | participant2 | participant2-displayname | Message 2 | [] | - | one-to-one room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant2" sees the following messages in room "one-to-one room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | one-to-one room | users | participant2 | participant2-displayname | Message 2 | [] | - | one-to-one room | users | participant1 | participant1-displayname | Message 1 | [] | - - Scenario: Sending a message into a one-to-one chat re-adds the participants - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "one-to-one room" (v4) - And user "participant2" is participant of room "one-to-one room" (v4) - When user "participant1" removes themselves from room "one-to-one room" with 200 (v4) - Then user "participant1" is not participant of room "one-to-one room" (v4) - When user "participant2" sends message "Message" to room "one-to-one room" with 201 - Then user "participant1" is participant of room "one-to-one room" (v4) - 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 | users | participant2 | participant2-displayname | Message | [] | - - Scenario: Return user status when get single conversation - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant2" set status to "online" with 200 (v1) - Then user "participant1" gets room "one-to-one room" with 200 (v4) - | status | online | - When user "participant2" set status to "offline" with 200 (v1) - Then user "participant1" gets room "one-to-one room" with 200 (v4) - | status | offline | - Then user "participant2" set status to "away" with 200 (v1) - Then user "participant1" gets room "one-to-one room" with 200 (v4) - | status | away | diff --git a/tests/integration/features/chat-1/password.feature b/tests/integration/features/chat-1/password.feature deleted file mode 100644 index 4c45438ca9d..00000000000 --- a/tests/integration/features/chat-1/password.feature +++ /dev/null @@ -1,107 +0,0 @@ -Feature: chat/password - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: owner can send and receive chat messages to and from public password protected room - Given user "participant1" creates room "public password protected room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "public password protected room" with 200 (v4) - When user "participant1" sends message "Message 1" to room "public password protected room" with 201 - Then user "participant1" sees the following messages in room "public password protected room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public password protected room | users | participant1 | participant1-displayname | Message 1 | [] | - - Scenario: invited user can send and receive chat messages to and from public password protected room - Given user "participant1" creates room "public password protected room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "public password protected room" with 200 (v4) - And user "participant1" adds user "participant2" to room "public password protected room" with 200 (v4) - When user "participant2" sends message "Message 1" to room "public password protected room" with 201 - Then user "participant2" sees the following messages in room "public password protected room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public password protected room | users | participant2 | participant2-displayname | Message 1 | [] | - - Scenario: not invited but joined with password user can send and receive chat messages to and from public password protected room - Given user "participant1" creates room "public password protected room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "public password protected room" with 200 (v4) - And user "participant3" joins room "public password protected room" with 200 (v4) - | password | foobar | - When user "participant3" sends message "Message 1" to room "public password protected room" with 201 - Then user "participant3" sees the following messages in room "public password protected room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public password protected room | users | participant3 | participant3-displayname | Message 1 | [] | - - Scenario: not invited user can not send nor receive chat messages to and from public password protected room - Given user "participant1" creates room "public password protected room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "public password protected room" with 200 (v4) - When user "participant3" sends message "Message 1" to room "public password protected room" with 404 - And user "participant1" sends message "Message 2" to room "public password protected room" with 201 - Then user "participant3" sees the following messages in room "public password protected room" with 404 - - Scenario: joined with password guest can send and receive chat messages to and from public password protected room - Given user "participant1" creates room "public password protected room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "public password protected room" with 200 (v4) - And user "guest" joins room "public password protected room" with 200 (v4) - | password | foobar | - When user "guest" sends message "Message 1" to room "public password protected room" with 201 - Then user "guest" sees the following messages in room "public password protected room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public password protected room | guests | guest | | Message 1 | [] | - - Scenario: not joined guest can not send nor receive chat messages to and from public password protected room - Given user "participant1" creates room "public password protected room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "public password protected room" with 200 (v4) - When user "guest" sends message "Message 1" to room "public password protected room" with 404 - And user "participant1" sends message "Message 2" to room "public password protected room" with 201 - Then user "guest" sees the following messages in room "public password protected room" with 404 - - Scenario: everyone in a public password protected room can receive messages from everyone in that room - Given user "participant1" creates room "public password protected room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "public password protected room" with 200 (v4) - And user "participant1" adds user "participant2" to room "public password protected room" with 200 (v4) - And user "participant3" joins room "public password protected room" with 200 (v4) - | password | foobar | - And user "guest" joins room "public password protected room" with 200 (v4) - | password | foobar | - When user "participant1" sends message "Message 1" to room "public password protected room" with 201 - And user "participant2" sends message "Message 2" to room "public password protected room" with 201 - And user "participant3" sends message "Message 3" to room "public password protected room" with 201 - And user "guest" sends message "Message 4" to room "public password protected room" with 201 - Then user "participant1" sees the following messages in room "public password protected room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public password protected room | guests | guest | | Message 4 | [] | - | public password protected room | users | participant3 | participant3-displayname | Message 3 | [] | - | public password protected room | users | participant2 | participant2-displayname | Message 2 | [] | - | public password protected room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant2" sees the following messages in room "public password protected room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public password protected room | guests | guest | | Message 4 | [] | - | public password protected room | users | participant3 | participant3-displayname | Message 3 | [] | - | public password protected room | users | participant2 | participant2-displayname | Message 2 | [] | - | public password protected room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant3" sees the following messages in room "public password protected room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public password protected room | guests | guest | | Message 4 | [] | - | public password protected room | users | participant3 | participant3-displayname | Message 3 | [] | - | public password protected room | users | participant2 | participant2-displayname | Message 2 | [] | - | public password protected room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "guest" sees the following messages in room "public password protected room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public password protected room | guests | guest | | Message 4 | [] | - | public password protected room | users | participant3 | participant3-displayname | Message 3 | [] | - | public password protected room | users | participant2 | participant2-displayname | Message 2 | [] | - | public password protected room | users | participant1 | participant1-displayname | Message 1 | [] | diff --git a/tests/integration/features/chat-2/poll.feature b/tests/integration/features/chat-2/poll.feature deleted file mode 100644 index e17749048b3..00000000000 --- a/tests/integration/features/chat-2/poll.feature +++ /dev/null @@ -1,807 +0,0 @@ -Feature: chat-2/poll - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Create a public poll without max votes limit - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant1 | participant1-displayname | {object} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"object":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - Then user "participant1" sees poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | not voted | - Then user "participant1" votes for options "[1]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant1" sees poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant2" sees poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | not voted | - Then user "participant1" closes poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | closed | - | votedSelf | [1] | - | details | [{"actorType":"users","actorId":"participant1","actorDisplayName":"participant1-displayname","optionId":1}] | - Then user "participant2" sees poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | closed | - | votedSelf | not voted | - | details | [{"actorType":"users","actorId":"participant1","actorDisplayName":"participant1-displayname","optionId":1}] | - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | poll_closed | You ended the poll {poll} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Participants can update their votes but only while open - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" votes for options "[0]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [0] | - Then user "participant1" votes for options "[1]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant1" closes poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | closed | - | votedSelf | [1] | - | details | [{"actorType":"users","actorId":"participant1","actorDisplayName":"participant1-displayname","optionId":1}] | - Then user "participant1" votes for options "[0]" on poll "What is the question?" in room "room" with 400 - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | poll_closed | You ended the poll {poll} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Participants can only vote for valid options - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" votes for options "[-1]" on poll "What is the question?" in room "room" with 400 - Then user "participant1" votes for options "[2]" on poll "What is the question?" in room "room" with 400 - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Participants can not exceed the maxVotes - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | 1 | - Then user "participant1" votes for options "[0,1]" on poll "What is the question?" in room "room" with 400 - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Participants can vote for multiple options - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" votes for options "[0,1]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1,"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [0,1] | - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Participants can not vote for the same option multiple times - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" votes for options "[1,1]" on poll "What is the question?" in room "room" with 400 - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Non-moderators can also create polls and close it themselves - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant2" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | {object} | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname"},"object":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - Then user "participant2" closes poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant2 | - | actorDisplayName | participant2-displayname | - | status | closed | - | votedSelf | not voted | - | details | {} | - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant2 | poll_closed | {actor} ended the poll {poll} | !ISSET | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname"},"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Non-moderators can not create polls without chat permission - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - # Removing chat permission only - Then user "participant1" sets permissions for "participant2" in room "room" to "CSJLAVP" with 200 (v4) - When user "participant2" creates a poll in room "room" with 403 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - - Scenario: Moderators can close polls of others - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant2" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" closes poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant2 | - | actorDisplayName | participant2-displayname | - | status | closed | - | votedSelf | not voted | - | details | {} | - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | poll_closed | You ended the poll {poll} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: There are system messages for opening, voting and closing on public polls - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" votes for options "[0]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [0] | - Then user "participant2" votes for options "[1]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1,"option-1":1} | - | numVoters | 2 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant1" closes poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1,"option-1":1} | - | numVoters | 2 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | closed | - | votedSelf | [0] | - | details | [{"actorType":"users","actorId":"participant1","actorDisplayName":"participant1-displayname","optionId":0},{"actorType":"users","actorId":"participant2","actorDisplayName":"participant2-displayname","optionId":1}] | - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | poll_closed | You ended the poll {poll} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - Then user "participant1" sees the following messages in room "room" with 200 (v1) - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant1 | participant1-displayname | {object} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"object":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - - Scenario: There are only system messages for opening and closing on hidden polls - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | hidden | - | maxVotes | unlimited | - Then user "participant1" votes for options "[0]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 1 | - | resultMode | hidden | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [0] | - Then user "participant2" votes for options "[1]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | hidden | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant1" closes poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1,"option-1":1} | - | numVoters | 2 | - | resultMode | hidden | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | closed | - | votedSelf | [0] | - Then user "participant1" closes poll "What is the question?" in room "room" with 400 - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | poll_closed | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - Then user "participant1" sees the following messages in room "room" with 200 (v1) - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant1 | participant1-displayname | {object} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"object":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - - Scenario: Non-moderators can not close polls of others - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant2" closes poll "What is the question?" in room "room" with 403 - - Scenario: Votes and details are not accessible in hidden result mode - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | hidden | - | maxVotes | unlimited | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant1 | participant1-displayname | {object} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"object":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - Then user "participant2" votes for options "[1]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | hidden | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant1" sees poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 1 | - | resultMode | hidden | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | not voted | - Then user "participant2" sees poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | hidden | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant1" closes poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | hidden | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | closed | - | votedSelf | not voted | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | poll_closed | You ended the poll {poll} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Number of voters and votes are restricted to the very same poll - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" votes for options "[0]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [0] | - When user "participant2" creates a poll in room "room" with 201 - | question | Another one ... | - | options | ["... bites the dust!","... bites de_dust!"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant2" votes for options "[1]" on poll "Another one ..." in room "room" with 200 - | id | POLL_ID(Another one ...) | - | question | Another one ... | - | options | ["... bites the dust!","... bites de_dust!"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant2 | - | actorDisplayName | participant2-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant2" sees poll "Another one ..." in room "room" with 200 - | id | POLL_ID(Another one ...) | - | question | Another one ... | - | options | ["... bites the dust!","... bites de_dust!"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant2 | - | actorDisplayName | participant2-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(Another one ...),"name":"Another one ..."}} | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Remove all votes - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" votes for options "[0]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [0] | - Then user "participant1" votes for options "{}" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [] | - Then user "participant1" sees poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant1 | - | actorDisplayName | participant1-displayname | - | status | open | - | votedSelf | [] | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Empty question and options - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" creates a poll in room "room" with 400 - | question | Also we need at least 2 non empty options | - | options | ["\t"," ","a"] | - | resultMode | public | - | maxVotes | unlimited | - When user "participant1" creates a poll in room "room" with 400 - | question | | - | options | ["Empty question is not","allowed either"] | - | resultMode | public | - | maxVotes | unlimited | - - Scenario: Can not poll in one-to-one - Given user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant1" creates a poll in room "room" with 400 - | question | Can I poll in one-to-one? | - | options | ["No","Nope"] | - | resultMode | public | - | maxVotes | unlimited | - - Scenario: Deleting a user neutralizes their details - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant2" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - And user "participant2" votes for options "[0]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant2 | - | actorDisplayName | participant2-displayname | - | status | open | - | votedSelf | [0] | - And user "participant2" closes poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant2 | - | actorDisplayName | participant2-displayname | - | status | closed | - | votedSelf | [0] | - | details | [{"actorType":"users","actorId":"participant2","actorDisplayName":"participant2-displayname","optionId":0}] | - When user "participant2" is deleted - Then user "participant1" sees poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-0":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | deleted_users | - | actorId | deleted_users | - | actorDisplayName | | - | status | closed | - | votedSelf | [] | - | details | [{"actorType":"deleted_users","actorId":"deleted_users","actorDisplayName":"","optionId":0}] | - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | admin | user_removed | {actor} removed {user} | !ISSET | "IGNORE" | - | room | deleted_users | deleted_users | poll_closed | {actor} ended the poll {poll} | !ISSET | {"actor":{"type":"highlight","id":"deleted_users","name":"Deleted user"},"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | guests | system | poll_voted | Someone voted on the poll {poll} | !ISSET | {"poll":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - | room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"highlight","id":"deleted_users","name":"Deleted user"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Deleting the poll message removes all details - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant2" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - And user "participant1" sees the following messages in room "room" with 200 (v1) - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | {object} | "IGNORE" | - And user "participant1" deletes message "{object}" from room "room" with 200 (v1) - And user "participant1" votes for options "[1]" on poll "What is the question?" in room "room" with 404 - And user "participant2" votes for options "[0]" on poll "What is the question?" in room "room" with 404 - And user "participant1" closes poll "What is the question?" in room "room" with 404 - And user "participant2" closes poll "What is the question?" in room "room" with 404 - Then user "participant1" sees poll "What is the question?" in room "room" with 404 - Then user "participant2" sees poll "What is the question?" in room "room" with 404 - And user "participant1" sees the following messages in room "room" with 200 (v1) - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message deleted by you | "IGNORE" | - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | message_deleted | You deleted a message | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - | room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Deleting a closed poll message removes also the close message - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant2" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - And user "participant1" sees the following messages in room "room" with 200 (v1) - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | {object} | "IGNORE" | - And user "participant2" closes poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant2 | - | actorDisplayName | participant2-displayname | - | status | closed | - | votedSelf | [] | - | details | [] | - And user "participant1" deletes message "{object}" from room "room" with 200 (v1) - And user "participant1" votes for options "[1]" on poll "What is the question?" in room "room" with 404 - And user "participant2" votes for options "[0]" on poll "What is the question?" in room "room" with 404 - And user "participant1" closes poll "What is the question?" in room "room" with 404 - And user "participant2" closes poll "What is the question?" in room "room" with 404 - Then user "participant1" sees poll "What is the question?" in room "room" with 404 - Then user "participant2" sees poll "What is the question?" in room "room" with 404 - And user "participant1" sees the following messages in room "room" with 200 (v1) - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | Message deleted by you | "IGNORE" | - | room | users | participant2 | participant2-displayname | Message deleted by you | "IGNORE" | - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | message_deleted | You deleted a message | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - | room | users | participant1 | message_deleted | You deleted a message | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - | room | users | participant1 | user_added | You added {user} | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"user":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - | room | users | participant1 | conversation_created | You created the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Deleting the chat history also deletes polls - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant2" creates a poll in room "room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - And user "participant1" sees the following messages in room "room" with 200 (v1) - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | users | participant2 | participant2-displayname | {object} | "IGNORE" | - And user "participant1" deletes chat history for room "room" with 200 - Then user "participant1" sees poll "What is the question?" in room "room" with 404 - Then user "participant2" sees poll "What is the question?" in room "room" with 404 - And user "participant1" sees the following messages in room "room" with 200 (v1) - Then user "participant1" sees the following system messages in room "room" with 200 (v1) - | room | actorType | actorId | systemMessage | message | silent | messageParameters | - | room | users | participant1 | history_cleared | You cleared the history of the conversation | !ISSET | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | diff --git a/tests/integration/features/chat-2/public-read-only.feature b/tests/integration/features/chat-2/public-read-only.feature deleted file mode 100644 index 88130525fcb..00000000000 --- a/tests/integration/features/chat-2/public-read-only.feature +++ /dev/null @@ -1,69 +0,0 @@ -Feature: chat-2/public-read-only - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - And group "attendees1" exists - And user "participant2" is member of group "attendees1" - - Scenario: owner can send and receive chat messages to and from group room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" sends message "Message 1" to room "public room" with 201 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Message 1 | [] | - When user "participant1" locks room "public room" with 200 (v4) - When user "participant1" sends message "Message 2" to room "public room" with 403 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Message 1 | [] | - When user "participant1" unlocks room "public room" with 200 (v4) - When user "participant1" sends message "Message 3" to room "public room" with 201 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Message 3 | [] | - | public room | users | participant1 | participant1-displayname | Message 1 | [] | - - Scenario: invited user can send and receive chat messages to and from group room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - When user "participant2" sends message "Message 1" to room "public room" with 201 - Then user "participant2" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant2 | participant2-displayname | Message 1 | [] | - When user "participant1" locks room "public room" with 200 (v4) - When user "participant2" sends message "Message 2" to room "public room" with 403 - Then user "participant2" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant2 | participant2-displayname | Message 1 | [] | - When user "participant1" unlocks room "public room" with 200 (v4) - When user "participant2" sends message "Message 3" to room "public room" with 201 - Then user "participant2" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant2 | participant2-displayname | Message 3 | [] | - | public room | users | participant2 | participant2-displayname | Message 1 | [] | - - Scenario: not invited but joined user can send and receive chat messages to and from public room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant3" joins room "public room" with 200 (v4) - When user "participant3" sends message "Message 1" to room "public room" with 201 - Then user "participant3" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant3 | participant3-displayname | Message 1 | [] | - When user "participant1" locks room "public room" with 200 (v4) - When user "participant3" sends message "Message 2" to room "public room" with 403 - Then user "participant3" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant3 | participant3-displayname | Message 1 | [] | - When user "participant1" unlocks room "public room" with 200 (v4) - When user "participant3" sends message "Message 3" to room "public room" with 201 - Then user "participant3" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant3 | participant3-displayname | Message 3 | [] | - | public room | users | participant3 | participant3-displayname | Message 1 | [] | diff --git a/tests/integration/features/chat-2/public.feature b/tests/integration/features/chat-2/public.feature deleted file mode 100644 index a472916a3cf..00000000000 --- a/tests/integration/features/chat-2/public.feature +++ /dev/null @@ -1,113 +0,0 @@ -Feature: chat-2/public - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: owner can send and receive chat messages to and from public room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" sends message "Message 1" to room "public room" with 201 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Message 1 | [] | - - Scenario: invited user can send and receive chat messages to and from public room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - When user "participant2" sends message "Message 1" to room "public room" with 201 - Then user "participant2" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant2 | participant2-displayname | Message 1 | [] | - - Scenario: invited user can not send without chat permissions - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - # Removing chat permission only - Then user "participant1" sets permissions for "participant2" in room "public room" to "CSJLAVP" with 200 (v4) - When user "participant2" sends message "Message 1" to room "public room" with 403 - When user "participant1" sends message "Message 2" to room "public room" with 201 - Then user "participant2" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Message 2 | [] | - - Scenario: not invited but joined user can send and receive chat messages to and from public room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant3" joins room "public room" with 200 (v4) - When user "participant3" sends message "Message 1" to room "public room" with 201 - Then user "participant3" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant3 | participant3-displayname | Message 1 | [] | - - Scenario: not invited user can not send nor receive chat messages to and from public room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant3" sends message "Message 1" to room "public room" with 404 - And user "participant1" sends message "Message 2" to room "public room" with 201 - Then user "participant3" sees the following messages in room "public room" with 404 - - Scenario: joined guest can send and receive chat messages to and from public room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "guest" joins room "public room" with 200 (v4) - When user "guest" sends message "Message 1" to room "public room" with 201 - Then user "guest" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | guests | guest | | Message 1 | [] | - - Scenario: not joined guest can not send nor receive chat messages to and from public room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "guest" sends message "Message 1" to room "public room" with 404 - And user "participant1" sends message "Message 2" to room "public room" with 201 - Then user "guest" sees the following messages in room "public room" with 404 - - Scenario: everyone in a public room can receive messages from everyone in that room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - And user "guest" joins room "public room" with 200 (v4) - When user "participant1" sends message "Message 1" to room "public room" with 201 - And user "participant2" sends message "Message 2" to room "public room" with 201 - And user "guest" sends message "Message 3" to room "public room" with 201 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | guests | guest | | Message 3 | [] | - | public room | users | participant2 | participant2-displayname | Message 2 | [] | - | public room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant2" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | guests | guest | | Message 3 | [] | - | public room | users | participant2 | participant2-displayname | Message 2 | [] | - | public room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "guest" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | guests | guest | | Message 3 | [] | - | public room | users | participant2 | participant2-displayname | Message 2 | [] | - | public room | users | participant1 | participant1-displayname | Message 1 | [] | - - - Scenario: Create room with big name and rename - # 260 chars - When user "participant1" creates room "public room" with 400 (v4) - | roomType | 3 | - | roomName | A name with 260 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 12345678 | - # 255 chars - And user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | A name with 255 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123 | - # 260 chars - And user "participant1" renames room "public room" to "A name with 260 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 12345678" with 400 (v4) - # 255 chars - And user "participant1" renames room "public room" to "Another name with 255 chars 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 1234567" with 200 (v4) diff --git a/tests/integration/features/chat-2/reaction.feature b/tests/integration/features/chat-2/reaction.feature deleted file mode 100644 index 7b05e971c0d..00000000000 --- a/tests/integration/features/chat-2/reaction.feature +++ /dev/null @@ -1,205 +0,0 @@ -Feature: chat-2/reaction - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: React to message with success - 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" sends message "Message 1" to room "room" with 201 - And user "participant2" react with "👍" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant2 | participant2-displayname | 👍 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant2 | participant2-displayname | reaction | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | reactions | reactionsSelf | - | room | users | participant1 | participant1-displayname | Message 1 | [] | {"👍":1} | | - And user "participant1" react with "👍" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant1 | participant1-displayname | 👍 | - | users | participant2 | participant2-displayname | 👍 | - And user "participant1" react with "🚀" on message "Message 1" to room "room" with 201 - Then user "guest" joins room "room" with 200 (v4) - And user "guest" react with "👤" on message "Message 1" to room "room" with 201 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | reactions | reactionsSelf | - | room | users | participant1 | participant1-displayname | Message 1 | [] | {"👍":2,"👤":1,"🚀":1} | ["👍","🚀"] | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | guests | guest | | reaction | - | room | users | participant1 | participant1-displayname | reaction | - | room | users | participant1 | participant1-displayname | reaction | - | room | users | participant2 | participant2-displayname | reaction | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: React to message fails without chat permission - 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" sends message "Message 1" to room "room" with 201 - And user "participant2" react with "👍" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant2 | participant2-displayname | 👍 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant2 | participant2-displayname | reaction | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - # Removing chat permission only - Then user "participant1" sets permissions for "participant2" in room "room" to "CSJLAVP" with 200 (v4) - When user "participant2" delete react with "👍" on message "Message 1" to room "room" with 403 - And user "participant2" react with "💙" on message "Message 1" to room "room" with 403 - And user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant2 | participant2-displayname | reaction | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: React two times to same message with the same reaction - 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" sends message "Message 1" to room "room" with 201 - And user "participant2" react with "👍" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant2 | participant2-displayname | 👍 | - And user "participant2" react with "👍" on message "Message 1" to room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - | users | participant2 | participant2-displayname | 👍 | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | reactions | - | room | users | participant1 | participant1-displayname | Message 1 | [] | {"👍":1} | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant2 | participant2-displayname | reaction | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: React to message does not fail when the author left the conversation - 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" sends message "Message 1" to room "room" with 201 - And user "participant2" removes themselves from room "room" with 200 (v4) - And user "participant1" react with "👍" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant1 | participant1-displayname | 👍 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | reaction | - | room | users | participant2 | participant2-displayname | user_removed | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Delete reaction to message with success - 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" sends message "Message 1" to room "room" with 201 - And user "participant2" react with "👍" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant2 | participant2-displayname | 👍 | - Then user "guest" joins room "room" with 200 (v4) - And user "guest" react with "👤" on message "Message 1" to room "room" with 201 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | reactions | - | room | users | participant1 | participant1-displayname | Message 1 | [] | {"👍":1,"👤":1} | - And user "participant2" delete react with "👍" on message "Message 1" to room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - | guests | guest | | 👤 | - And user "guest" delete react with "👤" on message "Message 1" to room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | reactions | - | room | users | participant1 | participant1-displayname | Message 1 | [] | [] | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | guests | guest | | reaction_revoked | - | room | users | participant2 | participant2-displayname | reaction_revoked | - | room | guests | guest | | reaction_deleted | - | room | users | participant2 | participant2-displayname | reaction_deleted | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Retrieve reactions of a message - 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" sends message "Message 1" to room "room" with 201 - Then user "participant1" retrieve reactions "👍" of message "Message 1" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - And user "participant1" react with "👍" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant1 | participant1-displayname | 👍 | - And user "participant2" react with "👍" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant1 | participant1-displayname | 👍 | - | users | participant2 | participant2-displayname | 👍 | - Then user "participant1" retrieve reactions "👍" of message "Message 1" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - | users | participant1 | participant1-displayname | 👍 | - | users | participant2 | participant2-displayname | 👍 | - And user "participant2" react with "👎" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant1 | participant1-displayname | 👍 | - | users | participant2 | participant2-displayname | 👎 | - | users | participant2 | participant2-displayname | 👍 | - And user "participant1" retrieve reactions "👎" of message "Message 1" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - | users | participant2 | participant2-displayname | 👎 | - And user "participant1" retrieve reactions "all" of message "Message 1" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - | users | participant1 | participant1-displayname | 👍 | - | users | participant2 | participant2-displayname | 👎 | - | users | participant2 | participant2-displayname | 👍 | - - Scenario: Delete message that was reacted to - 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" sends message "Message 1" to room "room" with 201 - And user "participant2" react with "👍" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant2 | participant2-displayname | 👍 | - And user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | reactions | - | room | users | participant1 | participant1-displayname | Message 1 | [] | {"👍":1} | - Then user "participant1" deletes message "Message 1" from room "room" with 200 (v1) - And user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | reactions | - | room | users | participant1 | participant1-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | [] | - - Scenario: Deleting a user neutralizes their details - 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" sends message "Message 1" to room "room" with 201 - And user "participant2" react with "👍" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant2 | participant2-displayname | 👍 | - And user "participant2" react with "👎" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant2 | participant2-displayname | 👎 | - | users | participant2 | participant2-displayname | 👍 | - When user "participant2" is deleted - And user "participant1" retrieve reactions "👎" of message "Message 1" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - | deleted_users | deleted_users | | 👎 | - And user "participant1" retrieve reactions "all" of message "Message 1" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - | deleted_users | deleted_users | | 👎 | - | deleted_users | deleted_users | | 👍 | diff --git a/tests/integration/features/chat-2/read-status.feature b/tests/integration/features/chat-2/read-status.feature deleted file mode 100644 index a909b397d99..00000000000 --- a/tests/integration/features/chat-2/read-status.feature +++ /dev/null @@ -1,138 +0,0 @@ -Feature: chat-2/read-status - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: User toggles the read privacy - Given user "participant1" creates room "chatting" (v4) - | roomType | 3 | - | roomName | room | - - # Private - When user "participant1" sets setting "read_status_privacy" to "1" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>chat=>read-privacy" set to "1" - When user "participant1" sends message "Message 1" to room "chatting" with 201 - Then last response has no last common read message header - - # Public - When user "participant1" sets setting "read_status_privacy" to "0" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>chat=>read-privacy" set to "0" - When user "participant1" reads message "Message 1" in room "chatting" with 200 - Then last response has last common read message header set to "Message 1" - - # Private again - When user "participant1" sets setting "read_status_privacy" to "1" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>chat=>read-privacy" set to "1" - When user "participant1" reads message "Message 1" in room "chatting" with 200 - Then last response has no last common read message header - - - Scenario: Read status is the minimum of all public users - Given user "participant1" creates room "chatting" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "chatting" with 200 (v4) - - When user "participant1" sets setting "read_status_privacy" to "1" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>chat=>read-privacy" set to "1" - When user "participant2" sets setting "read_status_privacy" to "0" with 200 (v1) - Then user "participant2" has capability "spreed=>config=>chat=>read-privacy" set to "0" - - When user "participant1" sends message "Message 1" to room "chatting" with 201 - Then last response has no last common read message header - When user "participant2" sends message "Message 2" to room "chatting" with 201 - Then last response has last common read message header set to "Message 2" - - When user "participant1" sets setting "read_status_privacy" to "0" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>chat=>read-privacy" set to "0" - - When user "participant2" sends message "Message 3" to room "chatting" with 201 - Then last response has last common read message header set to "Message 1" - When user "participant1" reads message "Message 3" in room "chatting" with 200 - Then last response has last common read message header set to "Message 3" - When user "participant2" reads message "Message 3" in room "chatting" with 200 - Then last response has last common read message header set to "Message 3" - - When next message request has the following parameters set - | lastCommonReadId | Message 1 | - | lastKnownMessageId | Message 1 | - | timeout | 0 | - | lookIntoFuture | 1 | - Then user "participant1" sees the following messages in room "chatting" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | chatting | users | participant2 | participant2-displayname | Message 2 | [] | - | chatting | users | participant2 | participant2-displayname | Message 3 | [] | - Then last response has last common read message header set to "Message 3" - When next message request has the following parameters set - | lastCommonReadId | Message 1 | - | lastKnownMessageId | Message 3 | - | timeout | 0 | - | lookIntoFuture | 1 | - Then user "participant1" sees the following messages in room "chatting" with 200 - Then last response has last common read message header set to "Message 3" - When next message request has the following parameters set - | lastCommonReadId | Message 3 | - | lastKnownMessageId | Message 3 | - | timeout | 0 | - | lookIntoFuture | 1 | - Then user "participant1" sees the following messages in room "chatting" with 304 - - - Scenario: User switching to private is not considered anymore - Given user "participant1" creates room "chatting" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "chatting" with 200 (v4) - - When user "participant1" sets setting "read_status_privacy" to "0" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>chat=>read-privacy" set to "0" - When user "participant2" sets setting "read_status_privacy" to "0" with 200 (v1) - Then user "participant2" has capability "spreed=>config=>chat=>read-privacy" set to "0" - - When user "participant1" sends message "Message 1" to room "chatting" with 201 - Then last response has last common read message header less than "Message 1" - When user "participant2" reads message "Message 1" in room "chatting" with 200 - Then last response has last common read message header set to "Message 1" - - When user "participant2" sends message "Message 2" to room "chatting" with 201 - Then last response has last common read message header set to "Message 1" - When user "participant2" reads message "Message 2" in room "chatting" with 200 - Then last response has last common read message header set to "Message 1" - - When user "participant1" sets setting "read_status_privacy" to "1" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>chat=>read-privacy" set to "1" - - When user "participant2" reads message "Message 2" in room "chatting" with 200 - Then last response has last common read message header set to "Message 2" - - - Scenario: New users added start with the last message of when they are added - Given user "participant1" creates room "chatting" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "chatting" with 200 (v4) - - When user "participant1" sets setting "read_status_privacy" to "0" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>chat=>read-privacy" set to "0" - When user "participant2" sets setting "read_status_privacy" to "0" with 200 (v1) - Then user "participant2" has capability "spreed=>config=>chat=>read-privacy" set to "0" - When user "participant3" sets setting "read_status_privacy" to "0" with 200 (v1) - Then user "participant3" has capability "spreed=>config=>chat=>read-privacy" set to "0" - - When user "participant1" sends message "Message 1" to room "chatting" with 201 - Then last response has last common read message header less than "Message 1" - When user "participant2" sends message "Message 2" to room "chatting" with 201 - Then last response has last common read message header set to "Message 1" - When user "participant1" reads message "Message 2" in room "chatting" with 200 - Then last response has last common read message header set to "Message 2" - - And user "participant1" adds user "participant3" to room "chatting" with 200 (v4) - - When user "participant1" reads message "Message 2" in room "chatting" with 200 - Then last response has last common read message header set to "Message 2" - When user "participant2" reads message "Message 2" in room "chatting" with 200 - Then last response has last common read message header set to "Message 2" - When user "participant3" reads message "Message 2" in room "chatting" with 200 - Then last response has last common read message header set to "Message 2" - diff --git a/tests/integration/features/chat-2/reference-id.feature b/tests/integration/features/chat-2/reference-id.feature deleted file mode 100644 index 2db9be23e17..00000000000 --- a/tests/integration/features/chat-2/reference-id.feature +++ /dev/null @@ -1,36 +0,0 @@ -Feature: chat-2/reference-id - Background: - Given user "participant1" exists - - Scenario: user can send a message with a reference id and see it afterwards - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" sends message "Message 1" with reference id "ref 1" to room "group room" with 201 - When user "participant1" sends message "Message 2" with reference id "ref 2" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | referenceId | - | group room | users | participant1 | participant1-displayname | Message 2 | [] | ref 2 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | ref 1 | - - Scenario: user can send a message with the same reference id - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" sends message "Message 1" with reference id "ref 1" to room "group room" with 201 - When user "participant1" sends message "Message 2" with reference id "ref 1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | referenceId | - | group room | users | participant1 | participant1-displayname | Message 2 | [] | ref 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | ref 1 | - - Scenario: too long references dont break the api - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" sends message "Message 1" with reference id "f0a1611b73992b57a8533c7f618bbd145b17ef62238ece5bda548f47c76c02b2" to room "group room" with 201 - When user "participant1" sends message "Message 2" with reference id "too long ref is cut off f0a1611b73992b57a8533c7f618bbd145b17ef62238ece5bda548f47c76c02b2" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | referenceId | - | group room | users | participant1 | participant1-displayname | Message 2 | [] | too long ref is cut off f0a1611b73992b57a8533c7f618bbd145b17ef62 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | f0a1611b73992b57a8533c7f618bbd145b17ef62238ece5bda548f47c76c02b2 | diff --git a/tests/integration/features/chat-2/reminder.feature b/tests/integration/features/chat-2/reminder.feature deleted file mode 100644 index e130e9287cb..00000000000 --- a/tests/integration/features/chat-2/reminder.feature +++ /dev/null @@ -1,146 +0,0 @@ -Feature: chat-2/reminder - - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Reminder in one-to-one chat (and sender is deleted) - Given user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant2" joins room "room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "room" with 201 - When user "participant1" sets reminder for message "Message 1" in room "room" for time 1234567 with 201 (v1) - And user "participant2" sets reminder for message "Message 1" in room "room" for time 1234567 with 201 (v1) - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - And force run "OCA\Talk\BackgroundJob\Reminder" background jobs - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: You in private conversation participant2-displayname | - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: participant1-displayname in private conversation | - When user "participant1" is deleted - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: A deleted user in private conversation participant1-displayname | - And user "participant2" deletes reminder for message "Message 1" in room "room" with 200 (v1) - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Reminder in one-to-one chat recipient is deleted - Given user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant2" joins room "room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "room" with 201 - When user "participant1" sets reminder for message "Message 1" in room "room" for time 1234567 with 201 (v1) - And user "participant2" sets reminder for message "Message 1" in room "room" for time 1234567 with 201 (v1) - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - And force run "OCA\Talk\BackgroundJob\Reminder" background jobs - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: You in private conversation participant2-displayname | - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: participant1-displayname in private conversation | - When user "participant2" is deleted - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: You in private conversation participant2-displayname | - And user "participant1" deletes reminder for message "Message 1" in room "room" with 200 (v1) - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Reminder on user message - 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" joins room "room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "room" with 201 - # Participant1 is in 2037 so not triggering for now - When user "participant1" sets reminder for message "Message 1" in room "room" for time 2133349024 with 201 (v1) - And user "participant2" sets reminder for message "Message 1" in room "room" for time 1234567 with 201 (v1) - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - And force run "OCA\Talk\BackgroundJob\Reminder" background jobs - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: participant1-displayname in conversation room | - # Participant1 sets timestamp to past so it should trigger now - When user "participant1" sets reminder for message "Message 1" in room "room" for time 1234567 with 201 (v1) - And force run "OCA\Talk\BackgroundJob\Reminder" background jobs - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: You in conversation room | - When user "participant1" is deleted - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: A deleted user in conversation room | - And user "participant2" deletes reminder for message "Message 1" in room "room" with 200 (v1) - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Deleting reminder before the job is executed never triggers a notification - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sends message "Message 1" to room "room" with 201 - When user "participant1" sets reminder for message "Message 1" in room "room" for time 1234567 with 201 (v1) - And user "participant1" deletes reminder for message "Message 1" in room "room" with 200 (v1) - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - And force run "OCA\Talk\BackgroundJob\Reminder" background jobs - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Reminder on anonymous guest message - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "guest" joins room "room" with 200 (v4) - And user "guest" sends message "Message 1" to room "room" with 201 - When user "participant1" sets reminder for message "Message 1" in room "room" for time 1234567 with 201 (v1) - And user "participant2" sets reminder for message "Message 1" in room "room" for time 1234567 with 404 (v1) - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - And force run "OCA\Talk\BackgroundJob\Reminder" background jobs - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: A guest in conversation room | - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - And user "participant1" deletes reminder for message "Message 1" in room "room" with 200 (v1) - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Reminder on named guest message - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "guest" joins room "room" with 200 (v4) - And guest "guest" sets name to "FooBar" in room "room" with 200 - And user "guest" sends message "Message 1" to room "room" with 201 - When user "participant1" sets reminder for message "Message 1" in room "room" for time 1234567 with 201 (v1) - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - And force run "OCA\Talk\BackgroundJob\Reminder" background jobs - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: FooBar (guest) in conversation room | - And user "participant1" deletes reminder for message "Message 1" in room "room" with 200 (v1) - And user "participant1" has the following notifications - | app | object_type | object_id | subject | diff --git a/tests/integration/features/chat-2/reply.feature b/tests/integration/features/chat-2/reply.feature deleted file mode 100644 index 67d455b1b92..00000000000 --- a/tests/integration/features/chat-2/reply.feature +++ /dev/null @@ -1,220 +0,0 @@ -Feature: chat-2/reply - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - And group "attendees1" exists - And user "participant2" is member of group "attendees1" - - Scenario: user can reply to own message - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" sends message "Message 1" to room "group room" with 201 - When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - And user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - - Scenario: user can reply to other's messages - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" sends message "Message 1" to room "group room" with 201 - When user "participant2" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - And user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - - Scenario: several users can reply to the same message several times - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" sends message "Message 1" to room "group room" with 201 - When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201 - And user "participant2" sends reply "Message 1-2" on message "Message 1" to room "group room" with 201 - And user "participant1" sends reply "Message 1-3" on message "Message 1" to room "group room" with 201 - And user "participant2" sends reply "Message 1-4" on message "Message 1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1-4 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1-3 | [] | Message 1 | - | group room | users | participant2 | participant2-displayname | Message 1-2 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - And user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1-4 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1-3 | [] | Message 1 | - | group room | users | participant2 | participant2-displayname | Message 1-2 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - - - - Scenario: user can reply to shared file messages - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" shares "welcome.txt" with room "group room" - # The messages need to be got so the file message is added to the list of - # known messages to reply to. - # The file message parameters are not relevant for this test and are quite - # large, so they are simply ignored. - And user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | {file} | "IGNORE" | | - And user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | {file} | "IGNORE" | | - When user "participant1" sends reply "Message X-1" on message "{file}" to room "group room" with 201 - And user "participant2" sends reply "Message X-2" on message "{file}" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message X-2 | [] | {file} | - | group room | users | participant1 | participant1-displayname | Message X-1 | [] | {file} | - | group room | users | participant1 | participant1-displayname | {file} | "IGNORE" | | - And user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message X-2 | [] | {file} | - | group room | users | participant1 | participant1-displayname | Message X-1 | [] | {file} | - | group room | users | participant1 | participant1-displayname | {file} | "IGNORE" | | - - Scenario: user can not reply to system messages - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - # The system messages need to be got so they are added to the list of known - # messages to reply to. - And user "participant1" sees the following system messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | group room | users | participant1 | participant1-displayname | user_added | - | group room | users | participant1 | participant1-displayname | group_added | - | group room | users | participant1 | participant1-displayname | conversation_created | - When user "participant1" sends reply "Message X-1" on message "conversation_created" to room "group room" with 400 - Then user "participant1" sees the following messages in room "group room" with 200 - And user "participant2" sees the following messages in room "group room" with 200 - - - - Scenario: user can reply to own replies - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201 - When user "participant1" sends reply "Message 1-1-1" on message "Message 1-1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - And user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 | - | group room | users | participant1 | participant1-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - - Scenario: user can reply to other's replies - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant2" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201 - When user "participant1" sends reply "Message 1-1-1" on message "Message 1-1" to room "group room" with 201 - And user "participant2" sends reply "Message 1-1-1-1" on message "Message 1-1-1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1-1-1-1 | [] | Message 1-1-1 | - | group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 | - | group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - And user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1-1-1-1 | [] | Message 1-1-1 | - | group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 | - | group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - - Scenario: several users can reply to the same reply several times - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant2" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201 - When user "participant1" sends reply "Message 1-1-1" on message "Message 1-1" to room "group room" with 201 - And user "participant2" sends reply "Message 1-1-2" on message "Message 1-1" to room "group room" with 201 - And user "participant1" sends reply "Message 1-1-3" on message "Message 1-1" to room "group room" with 201 - And user "participant2" sends reply "Message 1-1-4" on message "Message 1-1" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1-1-4 | [] | Message 1-1 | - | group room | users | participant1 | participant1-displayname | Message 1-1-3 | [] | Message 1-1 | - | group room | users | participant2 | participant2-displayname | Message 1-1-2 | [] | Message 1-1 | - | group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 | - | group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - And user "participant2" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant2 | participant2-displayname | Message 1-1-4 | [] | Message 1-1 | - | group room | users | participant1 | participant1-displayname | Message 1-1-3 | [] | Message 1-1 | - | group room | users | participant2 | participant2-displayname | Message 1-1-2 | [] | Message 1-1 | - | group room | users | participant1 | participant1-displayname | Message 1-1-1 | [] | Message 1-1 | - | group room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - - Scenario: getting parent and quote works - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant1" sends message "Message 2" to room "group room" with 201 - And user "participant2" sends reply "Message 2-1" on message "Message 2" to room "group room" with 201 - Then user "participant1" sees the following messages in room "group room" starting with "Message 1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - | group room | users | participant1 | participant1-displayname | Message 2 | [] | | - | group room | users | participant2 | participant2-displayname | Message 2-1 | [] | Message 2 | - Then user "participant1" sees the following messages in room "group room" starting with "Message 2" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 2 | [] | | - | group room | users | participant2 | participant2-displayname | Message 2-1 | [] | Message 2 | - - - - Scenario: user can not reply when not in the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" sends message "Message 1" to room "group room" with 201 - When user "participant3" sends reply "Message 1-1" on message "Message 1" to room "group room" with 404 - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | group room | users | participant1 | participant1-displayname | Message 1 | [] | | - And user "participant3" sees the following messages in room "group room" with 404 - - - - Scenario: user can not reply to a message from another room - Given user "participant1" creates room "group room1" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" creates room "group room2" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" sends message "Message 1" to room "group room1" with 201 - When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room2" with 400 - Then user "participant1" sees the following messages in room "group room1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room1 | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant1" sees the following messages in room "group room2" with 200 diff --git a/tests/integration/features/chat-2/rich-messages.feature b/tests/integration/features/chat-2/rich-messages.feature deleted file mode 100644 index 8682eea2231..00000000000 --- a/tests/integration/features/chat-2/rich-messages.feature +++ /dev/null @@ -1,62 +0,0 @@ -Feature: chat-2/rich-messages - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - Given user "participant3a" exists - - Scenario: message without enrichable references has empty parameters - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" sends message "Message without enrichable references" to room "public room" with 201 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Message without enrichable references | [] | - - Scenario: message with mention to valid user has mention parameter - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" sends message "Mention to @participant2" to room "public room" with 201 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Mention to {mention-user1} | {"mention-user1":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - - Scenario: message with mention to invalid user has mention parameter - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" sends message "Mention to @unknownUser" to room "public room" with 201 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Mention to @unknownUser | [] | - - Scenario: message with duplicated mention has single mention parameter - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" sends message "Mention to @participant2 and @participant2 again" to room "public room" with 201 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Mention to {mention-user1} and {mention-user1} again | {"mention-user1":{"type":"user","id":"participant2","name":"participant2-displayname"}} | - - Scenario: message with mentions to several users has mention parameters - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" sends message "Mention to @participant2, @unknownUser, @participant2 again and @participant3" to room "public room" with 201 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Mention to {mention-user1}, @unknownUser, {mention-user1} again and {mention-user2} | {"mention-user1":{"type":"user","id":"participant2","name":"participant2-displayname"},"mention-user2":{"type":"user","id":"participant3","name":"participant3-displayname"}} | - - Scenario: message with mentions of subname users (uid1 is fully part of uid2) - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" sends message "Mention to @participant3 and @participant3a" to room "public room" with 201 - When user "participant1" sends message "Mention to @participant3a and @participant3" to room "public room" with 201 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | Mention to {mention-user1} and {mention-user2} | {"mention-user1":{"type":"user","id":"participant3a","name":"participant3a-displayname"},"mention-user2":{"type":"user","id":"participant3","name":"participant3-displayname"}} | - | public room | users | participant1 | participant1-displayname | Mention to {mention-user2} and {mention-user1} | {"mention-user1":{"type":"user","id":"participant3a","name":"participant3a-displayname"},"mention-user2":{"type":"user","id":"participant3","name":"participant3-displayname"}} | diff --git a/tests/integration/features/chat-2/rich-object-share.feature b/tests/integration/features/chat-2/rich-object-share.feature deleted file mode 100644 index 7158b019e43..00000000000 --- a/tests/integration/features/chat-2/rich-object-share.feature +++ /dev/null @@ -1,75 +0,0 @@ -Feature: chat-2/rich-object-share - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Share a rich object to a chat - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 201 (v1) - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | {object} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"object":{"name":"Another room","call-type":"group","type":"call","id":"R4nd0mT0k3n","icon-url":"{VALIDATE_ICON_URL_PATTERN}"}} | - - Scenario: Can not share without chat permission - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - # Removing chat permission only - Then user "participant1" sets permissions for "participant2" in room "public room" to "CSJLAVP" with 200 (v4) - When user "participant2" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 403 (v1) - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - - Scenario: Delete a rich object from a chat - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 201 (v1) - And user "participant1" deletes message "shared::call::R4nd0mT0k3n" from room "public room" with 200 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | public room | users | participant1 | participant1-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | | - - Scenario: Can not delete without chat permission - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - When user "participant2" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 201 (v1) - # Removing chat permission only - Then user "participant1" sets permissions for "participant2" in room "public room" to "CSJLAVP" with 200 (v4) - And user "participant2" deletes message "shared::call::R4nd0mT0k3n" from room "public room" with 403 - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant2 | participant2-displayname | {object} | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname"},"object":{"name":"Another room","call-type":"group","type":"call","id":"R4nd0mT0k3n","icon-url":"{VALIDATE_ICON_URL_PATTERN}"}} | - - Scenario: Share an invalid rich object to a chat - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"MISSINGname":"Another room","call-type":"group"}' to room "public room" with 400 (v1) - Then user "participant1" sees the following messages in room "public room" with 200 - - Scenario: Share an invalid location to a chat - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" shares rich-object "geo-location" "https://nextcloud.com/" '{"name":"Location name"}' to room "public room" with 400 (v1) - Then user "participant1" sees the following messages in room "public room" with 200 - - Scenario: Get rich object and file shares for media tab - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - Then user "participant1" sees the following shared summarized overview in room "public room" with 200 - When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 201 (v1) - Then user "participant1" sees the following shared other in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | {object} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"object":{"name":"Another room","call-type":"group","type":"call","id":"R4nd0mT0k3n","icon-url":"{VALIDATE_ICON_URL_PATTERN}"}} | - When user "participant1" shares "welcome.txt" with room "public room" with OCS 100 - Then user "participant1" sees the following shared file in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | {file} | "IGNORE" | diff --git a/tests/integration/features/chat-2/search.feature b/tests/integration/features/chat-2/search.feature deleted file mode 100644 index 35535de1130..00000000000 --- a/tests/integration/features/chat-2/search.feature +++ /dev/null @@ -1,46 +0,0 @@ -Feature: chat-2/search - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Can not search when not a participant - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sends message "Message 1" to room "room" with 201 - When user "participant2" searches for messages with "essa" in room "room" with 200 - - Scenario: Search for message when being a participant - Given user "participant1" creates room "room1" (v4) - | roomType | 3 | - | roomName | room1 | - Given user "participant1" creates room "room2" (v4) - | roomType | 3 | - | roomName | room2 | - And user "participant1" adds user "participant2" to room "room1" with 200 (v4) - And user "participant1" adds user "participant2" to room "room2" with 200 (v4) - And user "participant1" sends message "Message 1" to room "room1" with 201 - And user "participant1" sends message "Message 2" to room "room2" with 201 - When user "participant2" searches for messages with "essa" in room "room1" with 200 - | title | subline | attributes.conversation | attributes.messageId | - | participant1-displayname | Message 1 | room1 | Message 1 | - When user "participant2" searches for messages with "essa" in room "room2" with 200 - | title | subline | attributes.conversation | attributes.messageId | - | participant1-displayname | Message 2 | room2 | Message 2 | - When user "participant2" searches for messages with "conversation:ROOM(room1) essa" in room "room1" with 200 - | title | subline | attributes.conversation | attributes.messageId | - | participant1-displayname | Message 1 | room1 | Message 1 | - When user "participant2" searches for messages in other rooms with "conversation:ROOM(room1) essa" in room "room1" with 200 - When user "participant2" searches for messages with "conversation:ROOM(room1) essa" in room "room2" with 200 - When user "participant2" searches for messages in other rooms with "conversation:ROOM(room1) essa" in room "room2" with 200 - | title | subline | attributes.conversation | attributes.messageId | - | participant1-displayname | Message 1 | room1 | Message 1 | - - Scenario: Can not search when being blocked by the lobby - 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" sends message "Message 1" to room "room" with 201 - And user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - When user "participant2" searches for messages with "essa" in room "room" with 200 diff --git a/tests/integration/features/chat-2/system-messages.feature b/tests/integration/features/chat-2/system-messages.feature deleted file mode 100644 index 0f9aea3de86..00000000000 --- a/tests/integration/features/chat-2/system-messages.feature +++ /dev/null @@ -1,297 +0,0 @@ -Feature: chat-2/system-messages - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - And group "attendees1" exists - And user "participant2" is member of group "attendees1" - And user "participant3" is member of group "attendees1" - - Scenario: Creating an empty room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Rename a room - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" renames room "room" to "system test" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | conversation_renamed | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Set a description - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" sets description for room "room" to "New description" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | description_set | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Removes a description - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" sets description for room "room" to "New description" with 200 (v4) - When user "participant1" sets description for room "room" to "" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | description_removed | - | room | users | participant1 | participant1-displayname | description_set | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Toggle guests - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" makes room "room" public with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | guests_allowed | - | room | users | participant1 | participant1-displayname | conversation_created | - When user "participant1" makes room "room" private with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | guests_disallowed | - | room | users | participant1 | participant1-displayname | guests_allowed | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Toggle password - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" sets password "123456" for room "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | password_set | - | room | users | participant1 | participant1-displayname | conversation_created | - When user "participant1" sets password "" for room "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | password_removed | - | room | users | participant1 | participant1-displayname | password_set | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Creating a group room - When user "participant1" creates room "room" (v4) - | roomType | 2 | - | invite | attendees1 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | group_added | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Creating a one2one room - When user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Adding participant to room - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - And user "participant2" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Joining public room - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | conversation_created | - And user "participant2" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Joining room for file - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - When user "participant1" joins room "file welcome.txt room" with 200 (v4) - And user "participant2" joins room "file welcome.txt room" with 200 (v4) - Then user "participant1" sees the following system messages in room "file welcome.txt room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | file welcome.txt room | users | participant2 | participant2-displayname | user_added | - | file welcome.txt room | users | participant1 | participant1-displayname | user_added | - | file welcome.txt room | users | participant1 | participant1-displayname | conversation_created | - And user "participant2" sees the following system messages in room "file welcome.txt room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | file welcome.txt room | users | participant2 | participant2-displayname | user_added | - | file welcome.txt room | users | participant1 | participant1-displayname | user_added | - | file welcome.txt room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Joining room for link share - Given user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant1" gets the room for last share with 200 (v1) - # Users without access to a file shared by link need to log in (so further - # requests keep the same session) and get the room (so the share token is - # stored in the session) to be able to join it. - And user "participant2" logs in - And user "participant2" gets the room for last share with 200 (v1) - When user "participant1" joins room "file last share room" with 200 (v4) - And user "participant2" joins room "file last share room" with 200 (v4) - Then user "participant1" sees the following system messages in room "file last share room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | file last share room | users | participant1 | participant1-displayname | user_added | - | file last share room | users | participant1 | participant1-displayname | conversation_created | - And user "participant2" sees the following system messages in room "file last share room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | file last share room | users | participant1 | participant1-displayname | user_added | - | file last share room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Joining listed room - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" allows listing room "room" for "all" with 200 (v4) - When user "participant2" joins room "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant2 | participant2-displayname | user_added | - | room | users | participant1 | participant1-displayname | listable_all | - | room | users | participant1 | participant1-displayname | conversation_created | - And user "participant2" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant2 | participant2-displayname | user_added | - | room | users | participant1 | participant1-displayname | listable_all | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Ending call for all - 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" adds user "participant3" to room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "participant1" joins call "room" with 200 (v4) - And user "participant2" joins call "room" with 200 (v4) - And user "participant3" joins call "room" with 200 (v4) - When user "participant1" ends call "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | call_ended_everyone | - | room | users | participant3 | participant3-displayname | call_joined | - | room | users | participant2 | participant2-displayname | call_joined | - | room | users | participant1 | participant1-displayname | call_started | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - And user "participant2" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | call_ended_everyone | - | room | users | participant3 | participant3-displayname | call_joined | - | room | users | participant2 | participant2-displayname | call_joined | - | room | users | participant1 | participant1-displayname | call_started | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - And user "participant3" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | call_ended_everyone | - | room | users | participant3 | participant3-displayname | call_joined | - | room | users | participant2 | participant2-displayname | call_joined | - | room | users | participant1 | participant1-displayname | call_started | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Participant escalation - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | conversation_created | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - When user "participant1" promotes "participant2" in room "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | moderator_promoted | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - When user "participant1" demotes "participant2" in room "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | moderator_demoted | - | room | users | participant1 | participant1-displayname | moderator_promoted | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - When user "participant1" removes "participant2" from room "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | user_removed | - | room | users | participant1 | participant1-displayname | moderator_demoted | - | room | users | participant1 | participant1-displayname | moderator_promoted | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Changing listable scope of room - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" allows listing room "room" for "all" with 200 (v4) - And user "participant1" allows listing room "room" for "users" with 200 (v4) - And user "participant1" allows listing room "room" for "none" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | listable_none | - | room | users | participant1 | participant1-displayname | listable_users | - | room | users | participant1 | participant1-displayname | listable_all | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - And user "participant2" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | listable_none | - | room | users | participant1 | participant1-displayname | listable_users | - | room | users | participant1 | participant1-displayname | listable_all | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Locking a room - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" locks room "room" with 200 (v4) - And user "participant1" unlocks room "room" with 200 (v4) - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | read_only_off | - | room | users | participant1 | participant1-displayname | read_only | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | - And user "participant2" sees the following system messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | room | users | participant1 | participant1-displayname | read_only_off | - | room | users | participant1 | participant1-displayname | read_only | - | room | users | participant1 | participant1-displayname | user_added | - | room | users | participant1 | participant1-displayname | conversation_created | diff --git a/tests/integration/features/chat-2/typing-privacy.feature b/tests/integration/features/chat-2/typing-privacy.feature deleted file mode 100644 index 9a9bca6f5ad..00000000000 --- a/tests/integration/features/chat-2/typing-privacy.feature +++ /dev/null @@ -1,11 +0,0 @@ -Feature: chat-2/typing-privacy - Background: - Given user "participant1" exists - Scenario: User toggles the typing privacy - # Private - When user "participant1" sets setting "typing_privacy" to "1" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>chat=>typing-privacy" set to "1" - - # Public - When user "participant1" sets setting "typing_privacy" to "0" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>chat=>typing-privacy" set to "0" diff --git a/tests/integration/features/chat-2/unread-messages.feature b/tests/integration/features/chat-2/unread-messages.feature deleted file mode 100644 index ca91b95e474..00000000000 --- a/tests/integration/features/chat-2/unread-messages.feature +++ /dev/null @@ -1,204 +0,0 @@ -Feature: chat-2/unread-messages - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: sending a message clears unread counter for sender - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - When user "participant1" sends message "Message 1" to room "group room" with 201 - Then user "participant1" is participant of room "group room" (v4) - | unreadMessages | - | 0 | - And user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 1 | - - Scenario: sending several messages clears unread counter for sender - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - When user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant1" sends message "Message 2" to room "group room" with 201 - And user "participant1" sends message "Message 3" to room "group room" with 201 - Then user "participant1" is participant of room "group room" (v4) - | unreadMessages | - | 0 | - And user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 3 | - - Scenario: sending a message with previously unread messages clears unread counter for sender - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | 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 - And user "participant2" sends message "Message 2" to room "group room" with 201 - When user "participant1" sends message "Message 3" to room "group room" with 201 - Then user "participant1" is participant of room "group room" (v4) - | unreadMessages | - | 0 | - And user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 1 | - - - - Scenario: reading all messages clears unread counter for reader - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant1" sends message "Message 2" to room "group room" with 201 - And user "participant1" sends message "Message 3" to room "group room" with 201 - When user "participant2" reads message "Message 3" in room "group room" with 200 - Then user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 0 | - - Scenario: reading some messages reduces unread counter for reader - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant1" sends message "Message 2" to room "group room" with 201 - And user "participant1" sends message "Message 3" to room "group room" with 201 - When user "participant2" reads message "Message 2" in room "group room" with 200 - Then user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 1 | - When user "participant2" reads message "NULL" in room "group room" with 200 - Then user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 0 | - - - - Scenario: replies are taken into account in unread counter - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "group room" with 201 - When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "group room" with 201 - Then user "participant1" is participant of room "group room" (v4) - | unreadMessages | - | 0 | - And user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 2 | - - Scenario: rich object messages are taken into account in unread counter - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "group room" with 201 (v1) - Then user "participant1" is participant of room "group room" (v4) - | unreadMessages | - | 0 | - And user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 1 | - - Scenario: shared file messages are taken into account in unread counter - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "group room" - # Unread counter for sender is cleared in this case, as it is not - # possible to know whether the file was shared from Talk, which could clear - # the counter, or from the Files app, which should not clear it. - Then user "participant1" is participant of room "group room" (v4) - | unreadMessages | - | 0 | - And user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 1 | - - - - Scenario: system messages are not taken into account in unread counter - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - When user "participant1" makes room "group room" private with 200 (v4) - Then user "participant1" is participant of room "group room" (v4) - | unreadMessages | - | 0 | - And user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 0 | - - - - Scenario: marking conversation as unread marks last message as unread - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant1" sends message "Message 2" to room "group room" with 201 - And user "participant1" sends message "Message 3" to room "group room" with 201 - Then user "participant2" is participant of the following rooms (v4) - | id | unreadMessages | - | group room | 3 | - And wait for 2 seconds - Then user "participant2" is participant of the following modified-since rooms (v4) - And user "participant2" reads message "Message 3" in room "group room" with 200 - And wait for 2 seconds - Then user "participant2" is participant of the following modified-since rooms (v4) - | id | unreadMessages | - | group room | 0 | - Then user "participant2" is participant of the following modified-since rooms (v4) - When user "participant1" marks room "group room" as unread with 200 - And user "participant2" marks room "group room" as unread with 200 - And wait for 2 seconds - Then user "participant2" is participant of the following modified-since rooms (v4) - | id | unreadMessages | - | group room | 1 | - Then user "participant2" is participant of the following modified-since rooms (v4) - Then user "participant1" is participant of room "group room" (v4) - | unreadMessages | - | 1 | - And user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 1 | - - Scenario: marking conversation as unread marks last message as unread ignoring system messages - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant1" sends message "Message 2" to room "group room" with 201 - And user "participant1" sends message "Message 3" to room "group room" with 201 - And user "participant1" makes room "group room" public with 200 (v4) - And user "participant1" makes room "group room" private with 200 (v4) - And user "participant1" makes room "group room" public with 200 (v4) - When user "participant1" marks room "group room" as unread with 200 - Then user "participant1" is participant of room "group room" (v4) - | unreadMessages | - | 1 | - - Scenario: marking conversation as unread marks last message as unread even if there are other unread messages - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" sends message "Message 1" to room "group room" with 201 - And user "participant1" sends message "Message 2" to room "group room" with 201 - And user "participant1" sends message "Message 3" to room "group room" with 201 - And user "participant1" sends message "Message 4" to room "group room" with 201 - And user "participant2" reads message "Message 1" in room "group room" with 200 - When user "participant2" marks room "group room" as unread with 200 - Then user "participant2" is participant of room "group room" (v4) - | unreadMessages | - | 1 | diff --git a/tests/integration/features/command/active-calls.feature b/tests/integration/features/command/active-calls.feature deleted file mode 100644 index 920fa5e69cf..00000000000 --- a/tests/integration/features/command/active-calls.feature +++ /dev/null @@ -1,42 +0,0 @@ -Feature: command/active-calls - - Background: - Given user "participant1" exists - - Scenario: No call in progress - Given invoking occ with "talk:active-calls" - Then the command was successful - And the command output contains the text "No calls in progress" - - Scenario: Users only chatting - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - Then user "participant1" joins room "room" with 200 (v4) - - Given invoking occ with "talk:active-calls" - Then the command was successful - And the command output contains the text "No calls in progress" - - Then user "participant1" leaves room "room" with 200 (v4) - - - Scenario: Call in progress - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - - Then user "participant1" joins room "room" with 200 (v4) - And user "participant1" joins call "room" with 200 (v4) - - Given invoking occ with "talk:active-calls" - # It didn't really fail, it just has an exit code that is not 0 - Then the command failed with exit code 1 - And the command output contains the text "There are currently 1 calls in progress with 1 participants" - - Then user "participant1" leaves call "room" with 200 (v4) - And user "participant1" leaves room "room" with 200 (v4) - - Given invoking occ with "talk:active-calls" - Then the command was successful - And the command output contains the text "No calls in progress" diff --git a/tests/integration/features/command/create.feature b/tests/integration/features/command/create.feature deleted file mode 100644 index 1d167842834..00000000000 --- a/tests/integration/features/command/create.feature +++ /dev/null @@ -1,109 +0,0 @@ -Feature: command/create - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given group "group1" exists - Given user "participant2" is member of group "group1" - - Scenario: Create a group room for participant1 - Given invoking occ with "talk:room:create room1 --user participant1" - And the command output contains the text "Room token:" - And the command output contains the text "Room successfully created" - Then the command was successful - And user "participant1" is participant of the following rooms (v4) - | name | type | participantType | - | room1 | 2 | 3 | - And user "participant1" sees the following attendees in room "room1" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 3 | - - Scenario: Create a group room for participant1 as moderator - Given invoking occ with "talk:room:create room1 --user participant1 --moderator participant1" - And the command output contains the text "Room successfully created" - Then the command was successful - And user "participant1" is participant of the following rooms (v4) - | name | type | participantType | - | room1 | 2 | 2 | - And user "participant1" sees the following attendees in room "room1" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 2 | - - Scenario: Create a group room for participant1 as owner - Given invoking occ with "talk:room:create room1 --user participant1 --owner participant1" - And the command output contains the text "Room successfully created" - Then the command was successful - And user "participant1" is participant of the following rooms (v4) - | name | type | participantType | - | room1 | 2 | 1 | - And user "participant1" sees the following attendees in room "room1" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - - Scenario: Create a public room for participant1 as owner group1 as users - Given invoking occ with "talk:room:create room1 --user participant1 --owner participant1 --public --group group1" - And the command output contains the text "Room successfully created" - Then the command was successful - And user "participant1" is participant of the following rooms (v4) - | name | type | participantType | - | room1 | 3 | 1 | - And user "participant2" is participant of the following rooms (v4) - | name | type | participantType | - | room1 | 3 | 3 | - And user "participant1" sees the following attendees in room "room1" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - - Scenario: Create a public room for participant1 as owner group1 as users with password and readonly and listable - Given invoking occ with "talk:room:create room1 --user participant1 --owner participant1 --public --group group1 --readonly --listable 2 --password test" - And the command output contains the text "Room successfully created" - Then the command was successful - And user "participant1" is participant of the following rooms (v4) - | name | type | readOnly | hasPassword | participantType | - | room1 | 3 | 1 | 1 | 1 | - And user "participant2" is participant of the following rooms (v4) - | name | type | readOnly | hasPassword | participantType | - | room1 | 3 | 1 | 1 | 3 | - And user "participant1" sees the following attendees in room "room1" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - - - - Scenario: Create a public room for participant1 as owner with a description of 500 characters - When invoking occ with "talk:room:create room1 --user participant1 --owner participant1 --public --description 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C" - Then the command was successful - And the command output contains the text "Room successfully created" - And user "participant1" is participant of the following rooms (v4) - | name | type | participantType | description | - | room1 | 3 | 1 | 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C | - - Scenario: Create a public room for participant1 as owner with a description of more than 500 characters - When invoking occ with "talk:room:create room1 --user participant1 --owner participant1 --public --description 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C1" - Then the command failed with exit code 1 - And the command output contains the text "Invalid room description" - - Scenario: Create a public room for participant1 as owner with a description of 500 multibyte characters - When invoking occ with "talk:room:create room1 --user participant1 --owner participant1 --public --description ०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च" - Then the command was successful - And the command output contains the text "Room successfully created" - And user "participant1" is participant of the following rooms (v4) - | name | type | participantType | description | - | room1 | 3 | 1 | ०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च | - - Scenario: Create a public room for participant1 as owner with a description of more than 500 multibyte characters - When invoking occ with "talk:room:create room1 --user participant1 --owner participant1 --public --description ०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०" - Then the command failed with exit code 1 - And the command output contains the text "Invalid room description" - - Scenario: Create a public room with message expiration time - Given invoking occ with "talk:room:create room1 --user participant1 --owner participant1 --public --message-expiration=3" - And the command output contains the text "Room successfully created" - And the command was successful - And user "participant1" is participant of the following rooms (v4) - | name | messageExpiration | - | room1 | 3 | diff --git a/tests/integration/features/command/monitor-calls.feature b/tests/integration/features/command/monitor-calls.feature deleted file mode 100644 index 973a8e04d07..00000000000 --- a/tests/integration/features/command/monitor-calls.feature +++ /dev/null @@ -1,61 +0,0 @@ -Feature: command/monitor-calls - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: No call in progress - Given invoking occ with "talk:monitor:calls" - Then the command was successful - And the command output contains the text "No calls in progress" - - Scenario: Users only chatting - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - Then user "participant1" joins room "room" with 200 (v4) - - Given invoking occ with "talk:monitor:calls" - Then the command was successful - And the command output contains the text "No calls in progress" - - Then user "participant1" leaves room "room" with 200 (v4) - - - Scenario: Calls in progress - When user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - - Then user "participant1" joins room "room" with 200 (v4) - And user "participant1" joins call "room" with 200 (v4) - - Given invoking occ with "talk:monitor:calls" - Then the command was successful - And the command output contains the text "There are currently 1 calls in progress with 1 participants" - And the command output contains the list entry '"ROOM(room)"' with value '1' - - When user "participant3" creates room "room2" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant2" gets room "room2" with 200 (v4) - - And user "participant2" joins room "room2" with 200 (v4) - And user "participant3" joins room "room2" with 200 (v4) - And user "participant2" joins call "room2" with 200 (v4) - And user "participant3" joins call "room2" with 200 (v4) - - Given invoking occ with "talk:monitor:calls" - Then the command was successful - And the command output contains the text "There are currently 2 calls in progress with 3 participants" - And the command output contains the list entry '"ROOM(room)"' with value '1' - And the command output contains the list entry '"ROOM(room2)"' with value '2' - - Then user "participant1" leaves call "room" with 200 (v4) - And user "participant1" leaves room "room" with 200 (v4) - - Given invoking occ with "talk:monitor:calls" - Then the command was successful - And the command output contains the text "There are currently 1 calls in progress with 2 participants" - And the command output contains the list entry '"ROOM(room2)"' with value '2' diff --git a/tests/integration/features/command/monitor-room.feature b/tests/integration/features/command/monitor-room.feature deleted file mode 100644 index fa417dc20e0..00000000000 --- a/tests/integration/features/command/monitor-room.feature +++ /dev/null @@ -1,37 +0,0 @@ -Feature: command/monitor-room - - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: No call in progress - Given invoking occ with "talk:monitor:room abcdef" - Then the command failed with exit code 1 - And the command output contains the text "Room with token abcdef not found" - - Scenario: From nothing to calling - When 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" gets room "room" with 200 (v4) - - Given invoking occ with "talk:monitor:room room-name:room" - Then the command was successful - And the command output contains the text "The conversation has 2 attendees with 0 sessions of which 0 are in the call." - - Given user "participant1" joins room "room" with 200 (v4) - And invoking occ with "talk:monitor:room room-name:room" - Then the command was successful - And the command output contains the text "The conversation has 2 attendees with 1 sessions of which 0 are in the call." - - Given user "participant1" joins call "room" with 200 (v4) - And invoking occ with "talk:monitor:room room-name:room" - Then the command was successful - And the command output contains the text "The conversation has 2 attendees with 1 sessions of which 1 are in the call." - - Given user "participant2" joins room "room" with 200 (v4) - And user "participant2" joins call "room" with 200 (v4) - And invoking occ with "talk:monitor:room room-name:room" - Then the command was successful - And the command output contains the text "The conversation has 2 attendees with 2 sessions of which 2 are in the call." diff --git a/tests/integration/features/command/update.feature b/tests/integration/features/command/update.feature deleted file mode 100644 index 2765dc9b68d..00000000000 --- a/tests/integration/features/command/update.feature +++ /dev/null @@ -1,24 +0,0 @@ -Feature: command/update - - Background: - Given user "participant1" exists - - Scenario: Create a public room with message expiration time and update removing the expiration time - Given invoking occ with "talk:room:create room1 --user participant1 --owner participant1 --public --message-expiration=3" - And user "participant1" is participant of the following rooms (v4) - | name | messageExpiration | - | room1 | 3 | - And the command output contains the text "Room successfully created" - And the command was successful - And invoking occ with "talk:room:update room-name:room1 --message-expiration=0" - And the command output contains the text "Room successfully updated" - And the command was successful - And user "participant1" is participant of the following rooms (v4) - | name | messageExpiration | - | room1 | 0 | - And invoking occ with "talk:room:update room-name:room1 --message-expiration=4" - And the command output contains the text "Room successfully updated" - And the command was successful - And user "participant1" is participant of the following rooms (v4) - | name | messageExpiration | - | room1 | 4 | diff --git a/tests/integration/features/command/user-remove.feature b/tests/integration/features/command/user-remove.feature deleted file mode 100644 index f6d1d87d976..00000000000 --- a/tests/integration/features/command/user-remove.feature +++ /dev/null @@ -1,98 +0,0 @@ -Feature: command/user-remove - - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Remove a user from all their rooms - Given user "participant1" creates room "one-to-one" (v4) - | roomType | 1 | - | invite | participant2 | - 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) - Given user "participant1" creates room "private room" (v4) - | roomType | 2 | - | roomName | private room | - And user "participant1" adds user "participant2" to room "private room" with 200 (v4) - Given user "participant1" creates room "listable room" (v4) - | roomType | 2 | - | roomName | listable room | - And user "participant1" allows listing room "listable room" for "users" with 200 (v4) - And user "participant1" adds user "participant2" to room "listable room" with 200 (v4) - And user "participant2" is participant of the following unordered rooms (v4) - | id | name | type | participantType | readOnly | - | one-to-one | participant1 | 1 | 1 | 0 | - | public room | public room | 3 | 3 | 0 | - | private room | private room | 2 | 3 | 0 | - | listable room | listable room | 2 | 3 | 0 | - And user "participant1" is participant of the following unordered rooms (v4) - | id | name | type | participantType | readOnly | - | one-to-one | participant2 | 1 | 1 | 0 | - | public room | public room | 3 | 1 | 0 | - | private room | private room | 2 | 1 | 0 | - | listable room | listable room | 2 | 1 | 0 | - And invoking occ with "talk:user:remove --user participant2 --private-only" - And the command output contains the text "Users successfully removed from all rooms" - Then the command was successful - And user "participant2" is participant of the following unordered rooms (v4) - | id | name | type | participantType | readOnly | - | one-to-one | participant1 | 1 | 1 | 0 | - | public room | public room | 3 | 3 | 0 | - | listable room | listable room | 2 | 3 | 0 | - And user "participant1" is participant of the following unordered rooms (v4) - | id | name | type | participantType | readOnly | - | one-to-one | participant2 | 1 | 1 | 0 | - | public room | public room | 3 | 1 | 0 | - | private room | private room | 2 | 1 | 0 | - | listable room | listable room | 2 | 1 | 0 | - And invoking occ with "talk:user:remove --user participant2" - And the command output contains the text "Users successfully removed from all rooms" - Then the command was successful - And user "participant2" is participant of the following rooms (v4) - And user "participant2" is participant of the following unordered rooms (v4) - And user "participant1" is participant of the following unordered rooms (v4) - | id | name | type | participantType | readOnly | - | one-to-one | participant2-displayname | 5 | 1 | 1 | - | public room | public room | 3 | 1 | 0 | - | private room | private room | 2 | 1 | 0 | - | listable room | listable room | 2 | 1 | 0 | - And user "participant1" sees the following attendees in room "one-to-one" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - - Scenario: Remove a user after there was a missed call - Given signaling server is started - Given user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" joins room "room" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - Then user "participant1" leaves call "room" with 200 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - And reset signaling server requests - And invoking occ with "talk:user:remove --user participant2" - Then signaling server received the following requests - | token | data | - | room | {"type":"disinvite","disinvite":{"userids":["participant2"],"alluserids":["participant1"],"properties":{"name":"Private conversation","type":1,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"participant-list":"refresh"}}} | - # Type changed - | room | {"type":"update","update":{"userids":["participant1"],"properties":{"name":"Private conversation","type":5,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - # Name changed - | room | {"type":"update","update":{"userids":["participant1"],"properties":{"name":"Private conversation","type":5,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - | room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - # Read only changed - | room | {"type":"update","update":{"userids":["participant1"],"properties":{"name":"Private conversation","type":5,"lobby-state":0,"lobby-timer":null,"read-only":1,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - And the command output contains the text "Users successfully removed from all rooms" - Then the command was successful - And user "participant2" is participant of the following rooms (v4) - And user "participant1" is participant of the following rooms (v4) - | id | name | type | participantType | - | room | participant2-displayname | 5 | 1 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | guests | cli | read_only | An administrator locked the conversation | {"actor":{"type":"guest","id":"guest\/cli","name":"Guest"}} | - | room | users | participant1 | call_tried | You tried to call {user} | {"user":{"type":"highlight","id":"deleted_users","name":"participant2-displayname"}} | - | room | users | participant1 | call_left | You left the call | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - | room | users | participant1 | call_started | You started a call | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | diff --git a/tests/integration/features/command/user-transfer-ownership.feature b/tests/integration/features/command/user-transfer-ownership.feature deleted file mode 100644 index e8a69d67e96..00000000000 --- a/tests/integration/features/command/user-transfer-ownership.feature +++ /dev/null @@ -1,181 +0,0 @@ -Feature: command/user-remove - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - Given user "participant4" exists - - Scenario: Only transfer when moderator permissions - Given user "participant1" creates room "one-to-one" (v4) - | roomType | 1 | - | invite | participant2 | - Given user "participant4" creates room "one-to-one former" (v4) - | roomType | 1 | - | invite | participant2 | - Given user "participant1" creates room "user" (v4) - | roomType | 3 | - | roomName | user | - And user "participant1" adds user "participant2" to room "user" with 200 (v4) - Given user "participant1" creates room "moderator" (v4) - | roomType | 2 | - | roomName | moderator | - And user "participant1" adds user "participant2" to room "moderator" with 200 (v4) - And user "participant1" promotes "participant2" in room "moderator" with 200 (v4) - Given user "participant2" creates room "owner" (v4) - | roomType | 2 | - | roomName | owner | - Given user "participant1" creates room "self-joined" (v4) - | roomType | 3 | - | roomName | self-joined | - And user "participant2" joins room "self-joined" with 200 (v4) - And invoking occ with "talk:user:remove --user participant4" - And invoking occ with "talk:user:transfer-ownership participant2 participant3" - And the command output contains the text "Added or promoted user participant3 in 2 rooms." - Then the command was successful - And user "participant2" is participant of the following unordered rooms (v4) - | id | name | type | participantType | - | one-to-one | participant1 | 1 | 1 | - | one-to-one former | participant4-displayname | 5 | 1 | - | user | user | 3 | 3 | - | moderator | moderator | 2 | 2 | - | owner | owner | 2 | 1 | - | self-joined | self-joined | 3 | 5 | - And user "participant3" is participant of the following unordered rooms (v4) - | id | name | type | participantType | - | moderator | moderator | 2 | 2 | - | owner | owner | 2 | 1 | - - Scenario: Also transfer without moderator permissions - Given user "participant1" creates room "one-to-one" (v4) - | roomType | 1 | - | invite | participant2 | - Given user "participant4" creates room "one-to-one former" (v4) - | roomType | 1 | - | invite | participant2 | - Given user "participant1" creates room "user" (v4) - | roomType | 3 | - | roomName | user | - And user "participant1" adds user "participant2" to room "user" with 200 (v4) - Given user "participant1" creates room "moderator" (v4) - | roomType | 2 | - | roomName | moderator | - And user "participant1" adds user "participant2" to room "moderator" with 200 (v4) - And user "participant1" promotes "participant2" in room "moderator" with 200 (v4) - Given user "participant2" creates room "owner" (v4) - | roomType | 2 | - | roomName | owner | - Given user "participant1" creates room "self-joined" (v4) - | roomType | 3 | - | roomName | self-joined | - And user "participant2" joins room "self-joined" with 200 (v4) - And invoking occ with "talk:user:remove --user participant4" - And invoking occ with "talk:user:transfer-ownership --include-non-moderator participant2 participant3" - And the command output contains the text "Added or promoted user participant3 in 3 rooms." - Then the command was successful - And user "participant2" is participant of the following unordered rooms (v4) - | id | name | type | participantType | - | one-to-one | participant1 | 1 | 1 | - | one-to-one former | participant4-displayname | 5 | 1 | - | user | user | 3 | 3 | - | moderator | moderator | 2 | 2 | - | owner | owner | 2 | 1 | - | self-joined | self-joined | 3 | 5 | - And user "participant3" is participant of the following unordered rooms (v4) - | id | name | type | participantType | - | user | user | 3 | 3 | - | moderator | moderator | 2 | 2 | - | owner | owner | 2 | 1 | - - Scenario: Remove source user on successful transfer - Given user "participant1" creates room "one-to-one" (v4) - | roomType | 1 | - | invite | participant2 | - Given user "participant4" creates room "one-to-one former" (v4) - | roomType | 1 | - | invite | participant2 | - Given user "participant1" creates room "user" (v4) - | roomType | 3 | - | roomName | user | - And user "participant1" adds user "participant2" to room "user" with 200 (v4) - Given user "participant1" creates room "moderator" (v4) - | roomType | 2 | - | roomName | moderator | - And user "participant1" adds user "participant2" to room "moderator" with 200 (v4) - And user "participant1" promotes "participant2" in room "moderator" with 200 (v4) - Given user "participant2" creates room "owner" (v4) - | roomType | 2 | - | roomName | owner | - Given user "participant1" creates room "self-joined" (v4) - | roomType | 3 | - | roomName | self-joined | - And user "participant2" joins room "self-joined" with 200 (v4) - And invoking occ with "talk:user:remove --user participant4" - And invoking occ with "talk:user:transfer-ownership --remove-source-user participant2 participant3" - And the command output contains the text "Added or promoted user participant3 in 2 rooms." - Then the command was successful - And user "participant2" is participant of the following unordered rooms (v4) - | id | name | type | participantType | - | one-to-one | participant1 | 1 | 1 | - | one-to-one former | participant4-displayname | 5 | 1 | - | user | user | 3 | 3 | - | self-joined | self-joined | 3 | 5 | - And user "participant3" is participant of the following unordered rooms (v4) - | id | name | type | participantType | - | moderator | moderator | 2 | 2 | - | owner | owner | 2 | 1 | - - Scenario: Promote user if source had privileges - Given user "participant1" creates room "moderator" (v4) - | roomType | 2 | - | roomName | moderator | - And user "participant1" adds user "participant2" to room "moderator" with 200 (v4) - And user "participant1" promotes "participant2" in room "moderator" with 200 (v4) - Given user "participant2" creates room "owner" (v4) - | roomType | 2 | - | roomName | owner | - Given user "participant2" creates room "moderator to owner" (v4) - | roomType | 2 | - | roomName | moderator to owner | - And user "participant2" adds user "participant3" to room "moderator to owner" with 200 (v4) - And user "participant2" promotes "participant3" in room "moderator to owner" with 200 (v4) - Given user "participant1" creates room "from self-joined to moderator" (v4) - | roomType | 3 | - | roomName | from self-joined to moderator | - And user "participant1" adds user "participant2" to room "from self-joined to moderator" with 200 (v4) - And user "participant1" promotes "participant2" in room "from self-joined to moderator" with 200 (v4) - Given user "participant1" creates room "from self-joined to user" (v4) - | roomType | 3 | - | roomName | from self-joined to user | - And user "participant1" adds user "participant2" to room "from self-joined to user" with 200 (v4) - And user "participant3" is participant of the following rooms (v4) - | id | name | type | participantType | - | moderator to owner | moderator to owner | 2 | 2 | - And user "participant3" joins room "from self-joined to user" with 200 (v4) - And user "participant3" is participant of the following unordered rooms (v4) - | id | name | type | participantType | - | moderator to owner | moderator to owner | 2 | 2 | - | from self-joined to user | from self-joined to user | 3 | 5 | - And user "participant3" joins room "from self-joined to moderator" with 200 (v4) - And user "participant3" is participant of the following unordered rooms (v4) - | id | name | type | participantType | - | moderator to owner | moderator to owner | 2 | 2 | - | from self-joined to user | from self-joined to user | 3 | 5 | - | from self-joined to moderator | from self-joined to moderator | 3 | 5 | - And invoking occ with "talk:user:transfer-ownership --include-non-moderator participant2 participant3" - And the command output contains the text "Added or promoted user participant3 in 5 rooms." - Then the command was successful - And user "participant2" is participant of the following unordered rooms (v4) - | id | name | type | participantType | - | moderator | moderator | 2 | 2 | - | owner | owner | 2 | 1 | - | moderator to owner | moderator to owner | 2 | 1 | - | from self-joined to moderator | from self-joined to moderator | 3 | 2 | - | from self-joined to user | from self-joined to user | 3 | 3 | - And user "participant3" is participant of the following unordered rooms (v4) - | id | name | type | participantType | - | moderator | moderator | 2 | 2 | - | owner | owner | 2 | 1 | - | moderator to owner | moderator to owner | 2 | 1 | - | from self-joined to moderator | from self-joined to moderator | 3 | 2 | - | from self-joined to user | from self-joined to user | 3 | 3 | diff --git a/tests/integration/features/conversation-1/add-participant.feature b/tests/integration/features/conversation-1/add-participant.feature deleted file mode 100644 index 680c493d43a..00000000000 --- a/tests/integration/features/conversation-1/add-participant.feature +++ /dev/null @@ -1,184 +0,0 @@ -Feature: conversation/add-participant - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: Owner invites a user - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 1 | - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | room | room | participant1-displayname invited you to a group conversation: room | - And user "participant3" is not participant of room "room" (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - - Scenario: User invites a user - Given signaling server is started - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And reset signaling server requests - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then signaling server received the following requests - | token | data | - | room | {"type":"invite","invite":{"userids":["participant2"],"alluserids":["participant1","participant2"],"properties":{"name":"Private conversation","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"participant-list":"refresh"}}} | - | room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - And user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 1 | - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - And user "participant3" is not participant of room "room" (v4) - When user "participant2" adds user "participant3" to room "room" with 403 (v4) - Then user "participant3" has the following notifications - | app | object_type | object_id | subject | - And user "participant3" is not participant of room "room" (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - - Scenario: Moderator invites a user - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 1 | - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 2 | - And user "participant3" is not participant of room "room" (v4) - When user "participant2" adds user "participant3" to room "room" with 200 (v4) - Then user "participant3" has the following notifications - | app | object_type | object_id | subject | - | spreed | room | room | participant2-displayname invited you to a group conversation: room | - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 1 | - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 2 | - And user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 2 | - | users | participant3 | 3 | - - Scenario: Moderator invites a user who self-joined - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" joins room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 5 | - When user "participant1" adds user "participant2" to room "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - Then user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - - Scenario: Moderator invites a group containing a self-joined user - Given group "group1" exists - And user "participant2" is member of group "group1" - And user "participant3" is member of group "group1" - And user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" joins room "room" with 200 (v4) - # participant3 already present, so it will be skipped - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - When user "participant1" adds group "group1" to room "room" with 200 (v4) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | - Then user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - | groups | group1 | 3 | - | users | participant3 | 3 | - And user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - - Scenario: Stranger invites a user - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant3" adds user "participant2" to room "room" with 404 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - And user "participant2" is not participant of room "room" (v4) - And user "participant3" is not participant of room "room" (v4) - - Scenario: Getting participant suggestions in a private room - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" gets the following collaborator suggestions in room "room" for "particip" with 200 - | source | id | label | - | users | participant2 | participant2-displayname | - | users | participant3 | participant3-displayname | - And user "participant1" gets the following collaborator suggestions in room "room" for "participant2" with 200 - | source | id | label | - | users | participant2 | participant2-displayname | - And user "participant3" gets the following collaborator suggestions in room "room" for "participant2" with 200 - | source | id | label | - | users | participant2 | participant2-displayname | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" gets the following collaborator suggestions in room "room" for "participant2" with 200 - And user "participant3" gets the following collaborator suggestions in room "room" for "participant2" with 200 - | source | id | label | - | users | participant2 | participant2-displayname | - - Scenario: Getting participant suggestions in a public room - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" gets the following collaborator suggestions in room "room" for "particip" with 200 - | source | id | label | - | users | participant2 | participant2-displayname | - | users | participant3 | participant3-displayname | - And user "participant1" gets the following collaborator suggestions in room "room" for "participant2" with 200 - | source | id | label | - | users | participant2 | participant2-displayname | - And user "participant3" gets the following collaborator suggestions in room "room" for "participant2" with 200 - | source | id | label | - | users | participant2 | participant2-displayname | - And user "guest" joins room "room" with 200 (v4) - And user "guest" gets the following collaborator suggestions in room "room" for "participant2" with 401 - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" gets the following collaborator suggestions in room "room" for "participant2" with 200 - And user "participant3" gets the following collaborator suggestions in room "room" for "participant2" with 200 - | source | id | label | - | users | participant2 | participant2-displayname | - And user "guest" gets the following collaborator suggestions in room "room" for "participant2" with 401 diff --git a/tests/integration/features/conversation-1/avatar.feature b/tests/integration/features/conversation-1/avatar.feature deleted file mode 100644 index 4be4c165b86..00000000000 --- a/tests/integration/features/conversation-1/avatar.feature +++ /dev/null @@ -1,156 +0,0 @@ -Feature: conversation/avatar - Background: - Given user "participant1" exists - Given user "participant2" exists - And guest accounts can be created - And user "user-guest@example.com" is a guest account user - - Scenario: Misteps - Given user "participant1" creates room "room1" (v4) - | roomType | 3 | - | roomName | room1 | - Then user "participant1" uploads file "invalid" as avatar of room "room1" with 400 - And user "participant2" uploads file "/img/favicon.png" as avatar of room "room1" with 404 - And user "participant2" delete the avatar of room "room1" with 404 - - Scenario: Define an image as avatar with success - Given user "participant1" creates room "room2" (v4) - | roomType | 3 | - | roomName | room2 | - When user "participant1" uploads file "/img/favicon.png" as avatar of room "room2" with 200 - Then user "participant1" gets room "room2" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 1 | - And the room "room2" has not an svg as avatar with 200 - And user "participant1" sees the following system messages in room "room2" with 200 - | room | actorType | actorId | systemMessage | message | - | room2 | users | participant1 | avatar_set | You set the conversation picture | - | room2 | users | participant1 | conversation_created | You created the conversation | - When user "participant1" delete the avatar of room "room2" with 200 - Then user "participant1" sees the following system messages in room "room2" with 200 - | room | actorType | actorId | systemMessage | message | - | room2 | users | participant1 | avatar_removed | You removed the conversation picture | - | room2 | users | participant1 | avatar_set | You set the conversation picture | - | room2 | users | participant1 | conversation_created | You created the conversation | - And user "participant1" gets room "room2" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 0 | - Then the room "room2" has an avatar with 200 - - Scenario: Get avatar of conversation without custom avatar (fallback) - Given user "participant1" creates room "room3" (v4) - | roomType | 3 | - | roomName | room3 | - Then the room "room3" has an avatar with 200 - And user "participant1" gets room "room3" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 0 | - - Scenario: Get avatar of conversation without being a participant - Given user "participant1" creates room "room3" (v4) - | roomType | 3 | - | roomName | room3 | - Then the room "room3" has an avatar with 200 - And user "participant1" gets room "room3" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 0 | - And as user "participant2" - And the room "room3" has an avatar with 404 - And as user "user-guest@example.com" - And the room "room3" has an avatar with 404 - And as user "guest" - And the room "room3" has an avatar with 404 - When user "participant1" allows listing room "room3" for "users" with 200 (v4) - And as user "participant2" - And the room "room3" has an avatar with 200 - And as user "user-guest@example.com" - And the room "room3" has an avatar with 404 - And as user "guest" - And the room "room3" has an avatar with 404 - When user "participant1" allows listing room "room3" for "all" with 200 (v4) - And as user "participant2" - And the room "room3" has an avatar with 200 - And as user "user-guest@example.com" - And the room "room3" has an avatar with 200 - And as user "guest" - And the room "room3" has an avatar with 404 - - Scenario: Get avatar of one2one without custom avatar (fallback) - When user "participant1" creates room "one2one" (v4) - | roomType | 1 | - | invite | participant2 | - Then the room "one2one" has an avatar with 200 - And user "participant1" gets room "one2one" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 0 | - - Scenario: Try to change avatar of one2one without success - When user "participant1" creates room "one2one" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" uploads file "/img/favicon.png" as avatar of room "one2one" with 400 - And user "participant1" gets room "one2one" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 0 | - Then user "participant1" sets emoji "👋" with color "123456" as avatar of room "one2one" with 400 (v1) - And user "participant1" gets room "one2one" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 0 | - - Scenario: Conversation that the name start with emoji dont need to have custom avatar - Given user "participant1" creates room "room1" (v4) - | roomType | 3 | - | roomName | room1 | - And the room "room1" has an svg as avatar with 200 - And user "participant1" gets room "room1" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 0 | - | displayName | room1 | - And user "participant1" renames room "room1" to "💙room2" with 200 (v4) - Then user "participant1" gets room "room1" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 0 | - | displayName | 💙room2 | - And the room "room1" has an svg as avatar with 200 - And the avatar svg of room "room1" contains the string "💙" - When user "participant1" renames room "room1" to "room1" with 200 (v4) - Then user "participant1" gets room "room1" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 0 | - | displayName | room1 | - And the room "room1" has an svg as avatar with 200 - - Scenario: User should receive the room avatar when see a rich object at media tab - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | public room | - And user "participant1" uploads file "/img/favicon.png" as avatar of room "public room" with 200 - When user "participant1" shares rich-object "call" "R4nd0mT0k3n" '{"name":"Another room","call-type":"group"}' to room "public room" with 201 (v1) - Then user "participant1" sees the following shared other in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | {object} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"object":{"name":"Another room","call-type":"group","type":"call","id":"R4nd0mT0k3n","icon-url":"{VALIDATE_ICON_URL_PATTERN}"}} | - - Scenario: User sets emoji as avatar - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | public room | - Then user "participant1" sets emoji "👋🚀" with color "123456" as avatar of room "room" with 400 (v1) - And user "participant1" sets emoji "👋" with color "1234567" as avatar of room "room" with 400 (v1) - And user "participant1" sets emoji "👋" with color "GGGGGG" as avatar of room "room" with 400 (v1) - And user "participant1" gets room "room" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 0 | - Then user "participant1" sets emoji "👩🏽‍🚀" with color "123456" as avatar of room "room" with 200 (v1) - And user "participant1" gets room "room" with 200 (v4) - | avatarVersion | NOT_EMPTY | - | isCustomAvatar | 1 | - And the room "room" has an svg as avatar with 200 - And the avatar svg of room "room" contains the string "👩🏽‍🚀" - And the avatar svg of room "room" contains the string "123456" - Then user "participant1" sets emoji "🍏" with color "null" as avatar of room "room" with 200 (v1) - And the avatar svg of room "room" contains the string "🍏" - And the avatar svg of room "room" contains the string "6B6B6B" - And the avatar svg of room "room" not contains the string "3B3B3B" - And the dark avatar svg of room "room" contains the string "🍏" - And the dark avatar svg of room "room" not contains the string "6B6B6B" - And the dark avatar svg of room "room" contains the string "3B3B3B" diff --git a/tests/integration/features/conversation-1/breakout-rooms.feature b/tests/integration/features/conversation-1/breakout-rooms.feature deleted file mode 100644 index 05a7aa4d786..00000000000 --- a/tests/integration/features/conversation-1/breakout-rooms.feature +++ /dev/null @@ -1,947 +0,0 @@ -Feature: conversation/breakout-rooms - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - Given user "participant4" exists - Given group "group1" exists - - Scenario: Teacher creates manual breakout rooms - Given signaling server is started - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" adds user "participant3" to room "class room" with 200 (v4) - And user "participant1" adds user "participant4" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - | users | participant3 | 3 | - | users | participant4 | 3 | - When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1) - | users::participant2 | 0 | - | users::participant3 | 1 | - | users::participant4 | 2 | - Then user "participant1" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - | 2 | Room 2 | - | 2 | Room 3 | - Then user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - Then user "participant3" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 2 | - Then user "participant4" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 3 | - And user "participant1" sees the following attendees in breakout rooms for room "class room" with 200 (v4) - | roomToken | actorType | actorId | participantType | - | class room | users | participant1 | 1 | - | class room | users | participant2 | 3 | - | class room | users | participant3 | 3 | - | class room | users | participant4 | 3 | - | Room 1 | users | participant1 | 1 | - | Room 1 | users | participant2 | 3 | - | Room 2 | users | participant1 | 1 | - | Room 2 | users | participant3 | 3 | - | Room 3 | users | participant1 | 1 | - | Room 3 | users | participant4 | 3 | - And user "participant2" sees the following attendees in breakout rooms for room "class room" with 400 (v4) - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - And user "participant2" sees the following attendees in breakout rooms for room "class room" with 200 (v4) - | roomToken | actorType | actorId | participantType | - | class room | users | participant1 | 1 | - | class room | users | participant2 | 3 | - | class room | users | participant3 | 3 | - | class room | users | participant4 | 3 | - | Room 1 | users | participant1 | 1 | - | Room 1 | users | participant2 | 3 | - And user "participant2" joins room "class room" with 200 (v4) - And user "participant3" joins room "class room" with 200 (v4) - And user "participant4" joins room "class room" with 200 (v4) - And reset signaling server requests - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - Then signaling server received the following requests - | token | data | - | Room 1 | {"type":"update","update":{"userids":["participant1","participant2"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - | Room 2 | {"type":"update","update":{"userids":["participant1","participant3"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - | Room 3 | {"type":"update","update":{"userids":["participant1","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - | class room | {"type":"switchto","switchto":{"roomid":"ROOM(Room 1)","sessions":["SESSION(participant2)"]}} | - | class room | {"type":"switchto","switchto":{"roomid":"ROOM(Room 2)","sessions":["SESSION(participant3)"]}} | - | class room | {"type":"switchto","switchto":{"roomid":"ROOM(Room 3)","sessions":["SESSION(participant4)"]}} | - | class room | {"type":"update","update":{"userids":["participant1","participant2","participant3","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - And user "participant2" leaves room "class room" with 200 (v4) - And user "participant3" leaves room "class room" with 200 (v4) - And user "participant4" leaves room "class room" with 200 (v4) - And user "participant2" joins room "Room 1" with 200 (v4) - And user "participant3" joins room "Room 2" with 200 (v4) - And user "participant4" joins room "Room 3" with 200 (v4) - And reset signaling server requests - And user "participant1" stops breakout rooms in room "class room" with 200 (v1) - Then signaling server received the following requests - | token | data | - | Room 1 | {"type":"switchto","switchto":{"roomid":"ROOM(class room)","sessions":["SESSION(participant2)"]}} | - | Room 2 | {"type":"switchto","switchto":{"roomid":"ROOM(class room)","sessions":["SESSION(participant3)"]}} | - | Room 3 | {"type":"switchto","switchto":{"roomid":"ROOM(class room)","sessions":["SESSION(participant4)"]}} | - | class room | {"type":"update","update":{"userids":["participant1","participant2","participant3","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - | Room 1 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - | Room 1 | {"type":"update","update":{"userids":["participant1","participant2"],"properties":{"name":"Private conversation","type":2,"lobby-state":1,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - | Room 2 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - | Room 2 | {"type":"update","update":{"userids":["participant1","participant3"],"properties":{"name":"Private conversation","type":2,"lobby-state":1,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - | Room 3 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - | Room 3 | {"type":"update","update":{"userids":["participant1","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":1,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - - Scenario: Teacher creates automatic breakout rooms - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" adds user "participant3" to room "class room" with 200 (v4) - And user "participant1" adds user "participant4" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - | users | participant3 | 3 | - | users | participant4 | 3 | - When user "participant1" creates 3 automatic breakout rooms for "class room" with 200 (v1) - Then user "participant1" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - | 2 | Room 2 | - | 2 | Room 3 | - And user "participant1" sees the following attendees in room "Room 1" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | /^participant\d$/ | 3 | - And user "participant1" sees the following attendees in room "Room 2" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | /^participant\d$/ | 3 | - And user "participant1" sees the following attendees in room "Room 3" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | /^participant\d$/ | 3 | - Then user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | /^Room \d$/ | - Then user "participant3" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | /^Room \d$/ | - Then user "participant4" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | /^Room \d$/ | - - Scenario: Co-teachers are promoted and removed in all breakout rooms - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1) - | users::participant2 | 0 | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - | 2 | Room 2 | - | 2 | Room 3 | - And user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - When user "participant1" promotes "participant2" in room "class room" with 200 (v4) - Then user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - | 2 | Room 2 | - | 2 | Room 3 | - And user "participant1" sees the following attendees in room "Room 1" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 2 | - And user "participant1" sees the following attendees in room "Room 2" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 2 | - And user "participant1" sees the following attendees in room "Room 3" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 2 | - When user "participant1" demotes "participant2" in room "class room" with 200 (v4) - Then user "participant2" is participant of the following rooms (v4) - | type | name | - | 2 | class room | - And user "participant1" sees the following attendees in room "Room 1" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - And user "participant1" sees the following attendees in room "Room 2" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - And user "participant1" sees the following attendees in room "Room 3" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - - Scenario: Can not nest breakout rooms - When user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - | 2 | Room 2 | - | 2 | Room 3 | - And user "participant1" creates 3 manual breakout rooms for "Room 1" with 400 (v1) - - Scenario: Can not create breakout rooms in one-to-one - When user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" creates 3 manual breakout rooms for "one-to-one room" with 400 (v1) - - Scenario: Can not create more than 20 breakout rooms - When user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" creates 21 manual breakout rooms for "class room" with 400 (v1) - - Scenario: Can not create less than 1 breakout rooms - When user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" creates 0 manual breakout rooms for "class room" with 400 (v1) - - Scenario: Invalid breakout room number in attendee map (low) - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - When user "participant1" creates 3 manual breakout rooms for "class room" with 400 (v1) - | users::participant2 | -1 | - - Scenario: Invalid breakout room number in attendee map (high) - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - When user "participant1" creates 3 manual breakout rooms for "class room" with 400 (v1) - | users::participant2 | 4 | - - Scenario: Breakout rooms are disabled - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And the following "spreed" app config is set - | breakout_rooms | no | - When user "participant1" creates 3 manual breakout rooms for "class room" with 400 (v1) - | users::participant2 | 1 | - - Scenario: Broadcast chat message to all breakout room - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - | 2 | Room 2 | - | 2 | Room 3 | - And user "participant1" broadcasts message "Hello rooms 1-3" to room "class room" with 201 (v1) - Then user "participant1" sees the following messages in room "Room 1" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | Room 1 | users | participant1 | participant1-displayname | Hello rooms 1-3 | [] | - Then user "participant1" sees the following messages in room "Room 2" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | Room 2 | users | participant1 | participant1-displayname | Hello rooms 1-3 | [] | - Then user "participant1" sees the following messages in room "Room 3" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | Room 3 | users | participant1 | participant1-displayname | Hello rooms 1-3 | [] | - - Scenario: Can not broadcast chat message in a non-breakout room - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" broadcasts message "Does not work" to room "room" with 400 (v1) - - Scenario: Can not start in a non-breakout room - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" starts breakout rooms in room "room" with 400 (v1) - And user "participant1" stops breakout rooms in room "room" with 400 (v1) - - Scenario: Moderator starts and stops breakout rooms - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 2 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - | 2 | Room 3 | 1 | 0 | 0 | - Then user "participant1" sees the following system messages in room "Room 1" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | Room 1 | users | participant1 | participant1-displayname | conversation_created | - Then user "participant1" sees the following system messages in room "Room 2" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | Room 2 | users | participant1 | participant1-displayname | conversation_created | - Then user "participant1" sees the following system messages in room "Room 3" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | Room 3 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 2 | 1 | - | 2 | Room 1 | 0 | 0 | 0 | - | 2 | Room 2 | 0 | 0 | 0 | - | 2 | Room 3 | 0 | 0 | 0 | - Then user "participant1" sees the following system messages in room "Room 1" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | Room 1 | users | participant1 | participant1-displayname | breakout_rooms_started | - | Room 1 | users | participant1 | participant1-displayname | conversation_created | - Then user "participant1" sees the following system messages in room "Room 2" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | Room 2 | users | participant1 | participant1-displayname | breakout_rooms_started | - | Room 2 | users | participant1 | participant1-displayname | conversation_created | - Then user "participant1" sees the following system messages in room "Room 3" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | Room 3 | users | participant1 | participant1-displayname | breakout_rooms_started | - | Room 3 | users | participant1 | participant1-displayname | conversation_created | - And user "participant1" stops breakout rooms in room "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 2 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - | 2 | Room 3 | 1 | 0 | 0 | - Then user "participant1" sees the following system messages in room "Room 1" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | Room 1 | users | participant1 | participant1-displayname | breakout_rooms_stopped | - | Room 1 | users | participant1 | participant1-displayname | breakout_rooms_started | - | Room 1 | users | participant1 | participant1-displayname | conversation_created | - Then user "participant1" sees the following system messages in room "Room 2" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | Room 2 | users | participant1 | participant1-displayname | breakout_rooms_stopped | - | Room 2 | users | participant1 | participant1-displayname | breakout_rooms_started | - | Room 2 | users | participant1 | participant1-displayname | conversation_created | - Then user "participant1" sees the following system messages in room "Room 3" with 200 - | room | actorType | actorId | actorDisplayName | systemMessage | - | Room 3 | users | participant1 | participant1-displayname | breakout_rooms_stopped | - | Room 3 | users | participant1 | participant1-displayname | breakout_rooms_started | - | Room 3 | users | participant1 | participant1-displayname | conversation_created | - - Scenario: Request assistance and cancel it - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - When user "participant1" creates 1 automatic breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - And user "participant2" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 1 | - | 2 | Room 1 | 0 | 0 | 0 | - And user "participant2" requests assistance in room "Room 1" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 1 | - | 2 | Room 1 | 0 | 0 | 2 | - And user "participant2" cancels request for assistance in room "Room 1" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 1 | - | 2 | Room 1 | 0 | 0 | 0 | - And user "participant2" requests assistance in room "Room 1" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 1 | - | 2 | Room 1 | 0 | 0 | 2 | - And user "participant1" cancels request for assistance in room "Room 1" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 1 | - | 2 | Room 1 | 0 | 0 | 0 | - - Scenario: Teacher creates free breakout rooms - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" creates 2 free breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 3 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - Then user "participant2" sees the following breakout rooms for room "class room" with 404 (v4) - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - Then user "participant2" sees the following breakout rooms for room "class room" with 400 (v4) - Then user "participant1" sees the following breakout rooms for room "class room" with 200 (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - Then user "participant2" sees the following breakout rooms for room "class room" with 200 (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | Room 1 | 0 | 0 | 0 | - | 2 | Room 2 | 0 | 0 | 0 | - - Scenario: Student can only get their own breakout room when non-free - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1) - | users::participant2 | 0 | - Then user "participant1" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - | 2 | Room 2 | - | 2 | Room 3 | - Then user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - Then user "participant1" sees the following breakout rooms for room "class room" with 200 (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - | 2 | Room 3 | 1 | 0 | 0 | - Then user "participant2" sees the following breakout rooms for room "class room" with 400 (v4) - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - Then user "participant2" sees the following breakout rooms for room "class room" with 200 (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | Room 1 | 0 | 0 | 0 | - - Scenario: Teachers can not "switch" breakout rooms as they are in all of them - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" creates 2 free breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 3 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - When user "participant1" switches in room "class room" to breakout room "Room 1" with 400 (v1) - - Scenario: Student switching breakout room in free selection - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" creates 2 free breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 3 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - Then user "participant2" is participant of the following rooms (v4) - | type | name | - | 2 | class room | - When user "participant2" switches in room "class room" to breakout room "Room 1" with 400 (v1) - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - When user "participant2" switches in room "class room" to breakout room "Room 1" with 200 (v1) - Then user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - When user "participant2" switches in room "class room" to breakout room "Room 2" with 200 (v1) - Then user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 2 | - - Scenario: Student can not switch on manual breakout rooms - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant1" creates 2 manual breakout rooms for "class room" with 200 (v1) - | users::participant2 | 0 | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 2 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - Then user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - When user "participant2" switches in room "class room" to breakout room "Room 1" with 400 (v1) - - Scenario: Student can not switch on automatic breakout rooms - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1) - | users::participant2 | 0 | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - Then user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - When user "participant2" switches in room "class room" to breakout room "Room 1" with 400 (v1) - - Scenario: Deleting the parent also deletes all breakout rooms - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1) - | users::participant2 | 0 | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - And user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - When user "participant1" deletes room "class room" with 200 (v4) - And user "participant1" is participant of the following rooms (v4) - And user "participant2" is participant of the following rooms (v4) - - Scenario: Removing breakout rooms also stops them on the parent - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 0 | 0 | - And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1) - | users::participant2 | 0 | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 1 | - | 2 | Room 1 | 0 | 0 | 0 | - | 2 | Room 2 | 0 | 0 | 0 | - And user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - When user "participant1" removes breakout rooms from "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 0 | 0 | - - Scenario: Deleting a single breakout room unassigned the students from the mapping - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" adds user "participant3" to room "class room" with 200 (v4) - And user "participant1" adds user "participant4" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - | users | participant3 | 3 | - | users | participant4 | 3 | - And user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1) - | users::participant2 | 0 | - | users::participant3 | 1 | - | users::participant4 | 2 | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - | 2 | Room 2 | - | 2 | Room 3 | - And user "participant2" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - And user "participant3" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 2 | - And user "participant4" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 3 | - When user "participant1" deletes room "Room 2" with 200 (v4) - Then user "participant1" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - | 2 | Room 3 | - And user "participant3" is participant of the following rooms (v4) - | type | name | - | 2 | class room | - - Scenario: Create an additional breakout room on the fly - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" promotes "participant2" in room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 2 | - And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - And user "participant2" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - # Can not nest breakout rooms - Given user "participant1" creates room "Room 3" with 400 (v4) - | roomType | 2 | - | roomName | Room 3 | - | objectType | room | - | objectId | ROOM(Room 2) | - # Can not create room for other object types - Given user "participant1" creates room "Room 3" with 400 (v4) - | roomType | 2 | - | roomName | Room 3 | - | objectType | files | - | objectId | ROOM(class room) | - Given user "participant1" creates room "Room 3" with 201 (v4) - | roomType | 2 | - | roomName | Room 3 | - | objectType | room | - | objectId | ROOM(class room) | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - | 2 | Room 3 | 1 | 0 | 0 | - And user "participant2" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - | 2 | Room 3 | 1 | 0 | 0 | - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 1 | - | 2 | Room 1 | 0 | 0 | 0 | - | 2 | Room 2 | 0 | 0 | 0 | - | 2 | Room 3 | 0 | 0 | 0 | - Given user "participant1" creates room "Room 3" with 201 (v4) - | roomType | 2 | - | roomName | Room 4 | - | objectType | room | - | objectId | ROOM(class room) | - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 1 | - | 2 | Room 1 | 0 | 0 | 0 | - | 2 | Room 2 | 0 | 0 | 0 | - | 2 | Room 3 | 0 | 0 | 0 | - | 2 | Room 4 | 0 | 0 | 0 | - - Scenario: Adding a user directly to a breakout room adds them to the parent as well - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - When user "participant1" adds user "participant2" to room "Room 2" with 200 (v4) - Then user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant1" sees the following attendees in room "Room 2" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant2" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - - Scenario: Adding a user directly to a breakout room adds them to the parent as well - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - When user "participant1" adds user "participant2" to room "Room 2" with 200 (v4) - Then user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant1" sees the following attendees in room "Room 2" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant2" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - - Scenario: Removing a user from the parent also removes them from the breakout room - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - When user "participant1" adds user "participant2" to room "class room" with 200 (v4) - When user "participant1" adds user "participant3" to room "class room" with 200 (v4) - When user "participant1" adds user "participant4" to room "class room" with 200 (v4) - Then user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - | users | participant3 | 3 | - | users | participant4 | 3 | - And user "participant1" promotes "participant2" in room "class room" with 200 (v4) - When user "participant1" creates 2 manual breakout rooms for "class room" with 200 (v1) - | users::participant3 | 0 | - | users::participant4 | 1 | - And user "participant2" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 2 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - And user "participant3" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 2 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - And user "participant4" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 2 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - When user "participant1" removes user "participant2" from room "class room" with 200 (v4) - And user "participant1" removes user "participant3" from room "class room" with 200 (v4) - And user "participant4" removes themselves from room "class room" with 200 (v4) - Then user "participant2" is participant of the following rooms (v4) - And user "participant3" is participant of the following rooms (v4) - And user "participant4" is participant of the following rooms (v4) - - Scenario: Only users with normal level can be moved between breakout rooms - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - When user "participant1" adds user "participant2" to room "class room" with 200 (v4) - Then user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant1" promotes "participant2" in room "class room" with 200 (v4) - And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - # Can not "move" moderators - When user "participant1" adds user "participant2" to room "Room 2" with 400 (v4) - # Can not "add" groups - When user "participant1" adds group "group1" to room "Room 2" with 400 (v4) - - Scenario: Teacher applies a new attendee map - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" adds user "participant2" to room "class room" with 200 (v4) - And user "participant1" adds user "participant3" to room "class room" with 200 (v4) - And user "participant1" adds user "participant4" to room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - | users | participant3 | 3 | - | users | participant4 | 3 | - And user "participant1" promotes "participant2" in room "class room" with 200 (v4) - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 2 | - | users | participant3 | 3 | - | users | participant4 | 3 | - When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1) - | users::participant3 | 0 | - | users::participant4 | 1 | - Then user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 2 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - | 2 | Room 3 | 1 | 0 | 0 | - Then user "participant3" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 1 | - Then user "participant4" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 2 | - When user "participant1" moves participants into different breakout rooms for "class room" with 400 (v1) - | users::participant2 | 0 | - | users::participant3 | 2 | - | users::participant4 | 1 | - When user "participant1" moves participants into different breakout rooms for "class room" with 400 (v1) - | users::participant3 | -2 | - | users::participant4 | 1 | - When user "participant1" moves participants into different breakout rooms for "class room" with 400 (v1) - | users::participant3 | 3 | - | users::participant4 | 1 | - When user "participant1" moves participants into different breakout rooms for "class room" with 200 (v1) - | users::participant3 | 2 | - | users::participant4 | 1 | - Then user "participant3" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 3 | - Then user "participant4" is participant of the following unordered rooms (v4) - | type | name | - | 2 | class room | - | 2 | Room 2 | - - Scenario: Can not change various settings in breakout rooms directly - Given user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | - | 2 | class room | 0 | 1 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | - # Can not disable lobby - Then user "participant1" sets lobby state for room "Room 1" to "no lobby" with 400 (v4) - # Can not enable listing - And user "participant1" allows listing room "Room 1" for "all" with 400 (v4) - # Can not allow guests - And user "participant1" makes room "Room 1" public with 400 (v4) - # Can not set password - Currently 403 because it's not a public room, once they are supported as breakout rooms we need to check for 400 here. - And user "participant1" sets password "Test123!" for room "Room 1" with 403 (v4) - # Can not set message expiration - And user "participant1" set the message expiration to 3600 of room "Room 1" with 400 (v4) - # Can enable recording consent - Given recording server is started - And the following "spreed" app config is set - | recording_consent | 2 | - Then user "participant1" sets the recording consent to 1 for room "Room 1" with 400 (v4) - - Scenario: Handle recording consent for all breakout rooms on the parent - Given recording server is started - And the following "spreed" app config is set - | recording_consent | 2 | - And user "participant1" creates room "class room" (v4) - | roomType | 2 | - | roomName | class room | - And user "participant1" sees the following attendees in room "class room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | recordingConsent | - | 2 | class room | 0 | 1 | 0 | 0 | - | 2 | Room 1 | 1 | 0 | 0 | 0 | - | 2 | Room 2 | 1 | 0 | 0 | 0 | - # Enabling recording consent on the parent is not allowed with breakout rooms running - And user "participant1" starts breakout rooms in room "class room" with 200 (v1) - Then user "participant1" sets the recording consent to 1 for room "class room" with 400 (v4) - And user "participant1" stops breakout rooms in room "class room" with 200 (v1) - # Enabling recording consent on the parent updates all breakout rooms - Then user "participant1" sets the recording consent to 1 for room "class room" with 200 (v4) - And user "participant1" is participant of the following unordered rooms (v4) - | type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | recordingConsent | - | 2 | class room | 0 | 1 | 0 | 1 | - | 2 | Room 1 | 1 | 0 | 0 | 1 | - | 2 | Room 2 | 1 | 0 | 0 | 1 | diff --git a/tests/integration/features/conversation-1/bruteforce-protection.feature b/tests/integration/features/conversation-1/bruteforce-protection.feature deleted file mode 100644 index 7f15ee33c98..00000000000 --- a/tests/integration/features/conversation-1/bruteforce-protection.feature +++ /dev/null @@ -1,99 +0,0 @@ -Feature: conversation/bruteforce-protection - Background: - Given user "participant1" exists - Given user "participant2" exists - Given group "group1" exists - - # Does not log an attempt but shows the password form - Scenario: User opens the call/{token} URL of a password protected public room - Given enable brute force protection - And user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - Then the following brute force attempts are registered - When user "participant2" views call-URL of room "room" with 200 - | This conversation is password-protected. | - Then the following brute force attempts are registered - And disable brute force protection - - Scenario: User opens the call/{token} URL of a private room - Given enable brute force protection - And user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - Then the following brute force attempts are registered - When user "participant2" views call-URL of room "room" with 200 - Then the following brute force attempts are registered - | talkRoomToken | 1 | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant2" views call-URL of room "room" with 200 - Then the following brute force attempts are registered - | talkRoomToken | 1 | - Then user "participant2" joins room "room" with 200 (v4) - Then the following brute force attempts are registered - And disable brute force protection - - Scenario: User opens the call/{token} URL with invalid token - Given enable brute force protection - Then the following brute force attempts are registered - When user "participant2" views call-URL of room "invalid" with 200 - Then the following brute force attempts are registered - | talkRoomToken | 1 | - And disable brute force protection - - Scenario: User joins a password protected public room - Given enable brute force protection - And user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - Then the following brute force attempts are registered - # Joining without password - When user "participant2" joins room "room" with 403 (v4) - Then the following brute force attempts are registered - | talkRoomPassword | 1 | - # Joining with wrong password - Then user "participant2" joins room "room" with 403 (v4) - | password | wrong | - Then the following brute force attempts are registered - | talkRoomPassword | 2 | - Then user "participant2" joins room "room" with 200 (v4) - | password | foobar | - Then the following brute force attempts are registered - And disable brute force protection - - Scenario: User gets blocked after some attempts - Given enable brute force protection - Then the following brute force attempts are registered - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 200 - When user "participant2" views call-URL of room "invalid" with 429 - Then the following brute force attempts are registered - | talkRoomToken | 11 | - And disable brute force protection - - Scenario: Prevent brute forcing on an endpoint that is not meant to handle the password - Given enable brute force protection - And user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - Then the following brute force attempts are registered - And user "participant2" joins room "room" with 403 (v4) - Then the following brute force attempts are registered - | talkRoomPassword | 1 | - When user "participant2" views URL "apps/spreed" with query parameters and status code 200 - | token | room | - | password | foobar | - Then the following brute force attempts are registered - | talkRoomPassword | 1 | - And disable brute force protection diff --git a/tests/integration/features/conversation-1/delete-room.feature b/tests/integration/features/conversation-1/delete-room.feature deleted file mode 100644 index c9b2f8b6543..00000000000 --- a/tests/integration/features/conversation-1/delete-room.feature +++ /dev/null @@ -1,61 +0,0 @@ -Feature: conversation/delete-room - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: Owner deletes - Given signaling server is started - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 1 | - And user "participant2" is not participant of room "room" (v4) - And user "participant3" is not participant of room "room" (v4) - And reset signaling server requests - When user "participant1" deletes room "room" with 200 (v4) - Then signaling server received the following requests - | token | data | - | room | {"type":"delete","delete":{"userids":["participant1"]}} | - Then user "participant1" is not participant of room "room" (v4) - - Scenario: Moderator deletes - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 2 | - And user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant2" deletes room "room" with 200 (v4) - Then user "participant1" is not participant of room "room" (v4) - And user "participant2" is not participant of room "room" (v4) - - Scenario: User deletes - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - And user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant2" deletes room "room" with 403 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - - Scenario: Stranger deletes - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" is participant of room "room" (v4) - And user "participant2" is not participant of room "room" (v4) - When user "participant2" deletes room "room" with 404 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is not participant of room "room" (v4) diff --git a/tests/integration/features/conversation-1/delete-user.feature b/tests/integration/features/conversation-1/delete-user.feature deleted file mode 100644 index fcc2f3467fe..00000000000 --- a/tests/integration/features/conversation-1/delete-user.feature +++ /dev/null @@ -1,70 +0,0 @@ -Feature: conversation/delete-user - - Background: - Given user "participant1" exists - Given user "participant2" exists - - # There is no way to check that the room is deleted if the deleted user is the - # last one in a one-to-one or group room. - - Scenario: delete user who is in a one-to-one room - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant2" sends message "Message 1" to room "one-to-one room" with 201 - Then user "participant1" is participant of the following rooms (v4) - | name | type | readOnly | - | participant2 | 1 | 0 | - When user "participant2" is deleted - Then user "participant1" sees the following messages in room "one-to-one room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | one-to-one room | deleted_users | deleted_users | | Message 1 | [] | - Then user "participant1" is participant of the following rooms (v4) - | name | type | readOnly | - | participant2-displayname | 5 | 1 | - - Scenario: delete user who left a one-to-one room - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant2" sends message "Message 1" to room "one-to-one room" with 201 - Then user "participant1" is participant of the following rooms (v4) - | name | type | readOnly | - | participant2 | 1 | 0 | - When user "participant2" leaves room "one-to-one room" with 200 (v4) - When user "participant2" is deleted - Then user "participant1" sees the following messages in room "one-to-one room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | one-to-one room | deleted_users | deleted_users | | Message 1 | [] | - Then user "participant1" is participant of the following rooms (v4) - | name | type | readOnly | - | participant2-displayname | 5 | 1 | - - Scenario: delete user who is in a group room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | group room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "group room" with 201 - When user "participant2" is deleted - Then user "participant1" sees the following messages in room "group room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | group room | deleted_users | deleted_users | | Message 1 | [] | - - Scenario: delete user who is in a public room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | public room | - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "public room" with 201 - When user "participant2" is deleted - Then user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | deleted_users | deleted_users | | Message 1 | [] | - - Scenario: delete user who is the last participant in a public room - Given user "participant2" creates room "public room" (v4) - | roomType | 3 | - | roomName | public room | - When user "participant2" is deleted - Then user "participant1" joins room "public room" with 404 (v4) diff --git a/tests/integration/features/conversation-2/files.feature b/tests/integration/features/conversation-2/files.feature deleted file mode 100644 index d8a4aeb17cc..00000000000 --- a/tests/integration/features/conversation-2/files.feature +++ /dev/null @@ -1,525 +0,0 @@ -Feature: conversation/files - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - And group "group1" exists - And user "participant2" is member of group "group1" - - # When "user XXX gets the room for path YYY with 200" succeeds the room token - # can later be used by any participant using the "file YYY room" identifier. - - Scenario: get room for file not shared - When user "participant1" gets the room for path "welcome.txt" with 404 (v1) - - - - Scenario: get room for file shared with user - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - Then user "participant1" is not participant of room "file welcome (2).txt room" (v4) - And user "participant2" is not participant of room "file welcome (2).txt room" (v4) - - Scenario: get room for folder shared with user - Given user "participant1" creates folder "/test" - And user "participant1" shares "test" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant1" gets the room for path "test" with 404 (v1) - And user "participant2" gets the room for path "test" with 404 (v1) - - Scenario: get room for file in folder shared with user - Given user "participant1" creates folder "/test" - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant1" shares "test" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant1" gets the room for path "test/renamed.txt" with 200 (v1) - And user "participant2" gets the room for path "test/renamed.txt" with 200 (v1) - Then user "participant1" is not participant of room "file test/renamed.txt room" (v4) - And user "participant2" is not participant of room "file test/renamed.txt room" (v4) - - Scenario: get room for file in folder reshared with user - Given user "participant1" creates folder "/test" - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant1" shares "test" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "test" with user "participant3" with OCS 100 - And user "participant3" accepts last share - When user "participant1" gets the room for path "test/renamed.txt" with 200 (v1) - And user "participant2" gets the room for path "test/renamed.txt" with 200 (v1) - And user "participant3" gets the room for path "test/renamed.txt" with 200 (v1) - Then user "participant1" is not participant of room "file test/renamed.txt room" (v4) - And user "participant2" is not participant of room "file test/renamed.txt room" (v4) - And user "participant3" is not participant of room "file test/renamed.txt room" (v4) - - Scenario: get room for file no longer shared - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" deletes last share - When user "participant1" gets the room for path "welcome.txt" with 404 (v1) - - - - Scenario: get room for file shared with group - Given user "participant1" shares "welcome.txt" with group "group1" with OCS 100 - And user "participant2" accepts last share - When user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - Then user "participant1" is not participant of room "file welcome (2).txt room" (v4) - And user "participant2" is not participant of room "file welcome (2).txt room" (v4) - - Scenario: get room for file shared with user and group - Given user "participant1" shares "welcome.txt" with group "group1" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - When user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant3" gets the room for path "welcome (2).txt" with 200 (v1) - Then user "participant1" is not participant of room "file welcome (2).txt room" (v4) - And user "participant2" is not participant of room "file welcome (2).txt room" (v4) - And user "participant3" is not participant of room "file welcome (2).txt room" (v4) - - - - Scenario: get room for link share - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - When user "participant1" gets the room for last share with 200 (v1) - And user "participant2" gets the room for last share with 200 (v1) - And user "participant3" gets the room for last share with 200 (v1) - And user "guest" gets the room for last share with 200 (v1) - Then user "participant1" is not participant of room "file last share room" (v4) - And user "participant2" is not participant of room "file last share room" (v4) - And user "participant3" is not participant of room "file last share room" (v4) - And user "guest" is not participant of room "file last share room" (v4) - - Scenario: get room for link share protected by password - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - | password | 123456 | - When user "participant1" gets the room for last share with 404 (v1) - And user "participant2" gets the room for last share with 404 (v1) - And user "participant3" gets the room for last share with 404 (v1) - And user "guest" gets the room for last share with 404 (v1) - - Scenario: get room for link share of a folder - Given user "participant1" creates folder "/test" - And user "participant1" shares "test" by link with OCS 100 - When user "participant1" gets the room for last share with 404 (v1) - And user "participant2" gets the room for last share with 404 (v1) - And user "guest" gets the room for last share with 404 (v1) - - Scenario: get room for link no longer shared - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant1" deletes last share - When user "participant1" gets the room for last share with 404 (v1) - And user "participant2" gets the room for last share with 404 (v1) - And user "participant3" gets the room for last share with 404 (v1) - And user "guest" gets the room for last share with 404 (v1) - - Scenario: get room for file shared by link - Given user "participant1" shares "welcome.txt" by link with OCS 100 - When user "participant1" gets the room for path "welcome.txt" with 200 (v1) - Then user "participant1" is not participant of room "file welcome.txt room" (v4) - - Scenario: get room for file shared by link and protected by password - Given user "participant1" shares "welcome.txt" by link with OCS 100 - | password | 123456 | - When user "participant1" gets the room for path "welcome.txt" with 200 (v1) - Then user "participant1" is not participant of room "file welcome.txt room" (v4) - - Scenario: get room for folder shared by link - Given user "participant1" creates folder "/test" - And user "participant1" shares "test" by link with OCS 100 - When user "participant1" gets the room for path "test" with 404 (v1) - - Scenario: get room for file in folder shared by link - Given user "participant1" creates folder "/test" - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant1" shares "test" by link with OCS 100 - When user "participant1" gets the room for path "test/renamed.txt" with 404 (v1) - - Scenario: get room for file in folder shared by link and reshared with user - Given user "participant1" creates folder "/test" - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant1" shares "test" by link with OCS 100 - And user "participant1" shares "test" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant1" gets the room for path "test/renamed.txt" with 200 (v1) - And user "participant2" gets the room for path "test/renamed.txt" with 200 (v1) - Then user "participant1" is not participant of room "file test/renamed.txt room" (v4) - And user "participant2" is not participant of room "file test/renamed.txt room" (v4) - - Scenario: get room for file shared with user and by link - Given user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - Then user "participant1" is not participant of room "file welcome (2).txt room" (v4) - And user "participant2" is not participant of room "file welcome (2).txt room" (v4) - - Scenario: get room for last link share also shared with user - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - When user "participant1" gets the room for last share with 200 (v1) - And user "participant2" gets the room for last share with 200 (v1) - Then user "participant1" is not participant of room "file welcome (2).txt room" (v4) - And user "participant2" is not participant of room "file welcome (2).txt room" (v4) - - - - Scenario: owner of a shared file can join its room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - When user "participant1" joins room "file welcome (2).txt room" with 200 (v4) - Then user "participant1" is participant of room "file welcome (2).txt room" (v4) - - Scenario: user with access to a file can join its room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - When user "participant2" joins room "file welcome.txt room" with 200 (v4) - Then user "participant2" is participant of room "file welcome.txt room" (v4) - - Scenario: owner of a file in a shared folder can join its room - Given user "participant1" creates folder "/test" - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant1" shares "test" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" gets the room for path "test/renamed.txt" with 200 (v1) - When user "participant1" joins room "file test/renamed.txt room" with 200 (v4) - Then user "participant1" is participant of room "file test/renamed.txt room" (v4) - - Scenario: user with access to a file in a shared folder can join its room - Given user "participant1" creates folder "/test" - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant1" shares "test" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" gets the room for path "test/renamed.txt" with 200 (v1) - When user "participant2" joins room "file test/renamed.txt room" with 200 (v4) - Then user "participant2" is participant of room "file test/renamed.txt room" (v4) - - Scenario: user with access to a file in a reshared folder can join its room - Given user "participant1" creates folder "/test" - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant1" shares "test" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "test" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" gets the room for path "test/renamed.txt" with 200 (v1) - When user "participant3" joins room "file test/renamed.txt room" with 200 (v4) - Then user "participant3" is participant of room "file test/renamed.txt room" (v4) - - Scenario: owner of a no longer shared file can join its room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant1" deletes last share - When user "participant1" joins room "file welcome (2).txt room" with 200 (v4) - Then user "participant1" is participant of room "file welcome (2).txt room" (v4) - - Scenario: user no longer with access to a file can not join its room - Given user "participant1" shares "welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant1" deletes last share - When user "participant2" joins room "file welcome.txt room" with 404 (v4) - Then user "participant2" is not participant of room "file welcome.txt room" (v4) - - Scenario: user without access to a file can not join its room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - When user "participant3" joins room "file welcome.txt room" with 404 (v4) - Then user "participant3" is not participant of room "file welcome.txt room" (v4) - - Scenario: guest can not join a file room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - When user "guest" joins room "file welcome.txt room" with 404 (v4) - - - - Scenario: join room for file shared with group - Given user "participant1" shares "welcome.txt" with group "group1" with OCS 100 - And user "participant2" accepts last share - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - When user "participant1" joins room "file welcome.txt room" with 200 (v4) - And user "participant2" joins room "file welcome.txt room" with 200 (v4) - Then user "participant1" is participant of room "file welcome (2).txt room" (v4) - And user "participant2" is participant of room "file welcome (2).txt room" (v4) - - Scenario: join room for file shared with user and group - Given user "participant1" shares "welcome.txt" with group "group1" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant3" gets the room for path "welcome (2).txt" with 200 (v1) - When user "participant1" joins room "file welcome.txt room" with 200 (v4) - And user "participant2" joins room "file welcome.txt room" with 200 (v4) - And user "participant3" joins room "file welcome.txt room" with 200 (v4) - Then user "participant1" is participant of room "file welcome (2).txt room" (v4) - And user "participant2" is participant of room "file welcome (2).txt room" (v4) - And user "participant3" is participant of room "file welcome (2).txt room" (v4) - - - - Scenario: owner of a file shared by link can join its room - Given user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant1" gets the room for last share with 200 (v1) - When user "participant1" joins room "file last share room" with 200 (v4) - Then user "participant1" is participant of room "file last share room" (v4) - - Scenario: user with access to a file shared by link can join its room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant2" gets the room for last share with 200 (v1) - When user "participant2" joins room "file last share room" with 200 (v4) - Then user "participant2" is participant of room "file last share room" (v4) - - Scenario: user without access to a file shared by link can join its room - Given user "participant1" shares "welcome.txt" by link with OCS 100 - # Users without access to a file shared by link need to log in (so further - # requests keep the same session) and get the room (so the share token is - # stored in the session) to be able to join it. - And user "participant2" logs in - And user "participant2" gets the room for last share with 200 (v1) - When user "participant2" joins room "file last share room" with 200 (v4) - Then user "participant2" is participant of room "file last share room" (v4) - - Scenario: guest can join the room of a file shared by link - Given user "participant1" shares "welcome.txt" by link with OCS 100 - And user "guest" gets the room for last share with 200 (v1) - When user "guest" joins room "file last share room" with 200 (v4) - And user "guest" is participant of room "file last share room" (v4) - - - - Scenario: owner of a shared file is not removed from its room after leaving it - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - # Note that the room token is got by a different user than the one that - # joins the room - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant1" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant1" is participant of room "file welcome (2).txt room" (v4) - When user "participant1" leaves room "file welcome (2).txt room" with 200 (v4) - Then user "participant1" is participant of room "file welcome (2).txt room" (v4) - - Scenario: user with access to a file is not removed from its room after leaving it - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - # Note that the room token is got by a different user than the one that - # joins the room - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant2" joins room "file welcome.txt room" with 200 (v4) - And user "participant2" is participant of room "file welcome.txt room" (v4) - When user "participant2" leaves room "file welcome.txt room" with 200 (v4) - Then user "participant2" is participant of room "file welcome.txt room" (v4) - - - - Scenario: owner of a file shared by link is not removed from its room after leaving it - Given user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant1" gets the room for last share with 200 (v1) - And user "participant1" joins room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - When user "participant1" leaves room "file last share room" with 200 (v4) - Then user "participant1" is participant of room "file last share room" (v4) - - Scenario: user with access to a file shared by link is not removed from its room after leaving it - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant2" gets the room for last share with 200 (v1) - And user "participant2" joins room "file last share room" with 200 (v4) - And user "participant2" is participant of room "file last share room" (v4) - When user "participant2" leaves room "file last share room" with 200 (v4) - Then user "participant2" is participant of room "file last share room" (v4) - - Scenario: user without access to a file shared by link is removed from its room after leaving it - Given user "participant1" shares "welcome.txt" by link with OCS 100 - # Users without access to a file shared by link need to log in (so further - # requests keep the same session) and get the room (so the share token is - # stored in the session) to be able to join it. - And user "participant2" logs in - And user "participant2" gets the room for last share with 200 (v1) - And user "participant2" joins room "file last share room" with 200 (v4) - And user "participant2" is participant of room "file last share room" (v4) - When user "participant2" leaves room "file last share room" with 200 (v4) - Then user "participant2" is not participant of room "file last share room" (v4) - - Scenario: guest is removed from the room of a file shared by link after leaving it - Given user "participant1" shares "welcome.txt" by link with OCS 100 - And user "guest" gets the room for last share with 200 (v1) - And user "guest" joins room "file last share room" with 200 (v4) - And user "guest" is participant of room "file last share room" (v4) - When user "guest" leaves room "file last share room" with 200 (v4) - And user "guest" is not participant of room "file last share room" (v4) - - - - Scenario: owner of a shared file can join its room again after removing self from it - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - # Note that the room token is got by a different user than the one that - # joins the room - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant1" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant1" is participant of room "file welcome (2).txt room" (v4) - When user "participant1" removes themselves from room "file welcome (2).txt room" with 200 (v4) - And user "participant1" is not participant of room "file welcome (2).txt room" (v4) - And user "participant1" joins room "file welcome (2).txt room" with 200 (v4) - Then user "participant1" is participant of room "file welcome (2).txt room" (v4) - - Scenario: user with access to a file can join its room again after removing self from it - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - # Note that the room token is got by a different user than the one that - # joins the room - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant2" joins room "file welcome.txt room" with 200 (v4) - And user "participant2" is participant of room "file welcome.txt room" (v4) - When user "participant2" removes themselves from room "file welcome.txt room" with 200 (v4) - And user "participant2" is not participant of room "file welcome.txt room" (v4) - And user "participant2" joins room "file welcome.txt room" with 200 (v4) - Then user "participant2" is participant of room "file welcome.txt room" (v4) - - - - Scenario: owner of a file shared by link can join its room again after removing self from it - Given user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant1" gets the room for last share with 200 (v1) - And user "participant1" joins room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - When user "participant1" removes themselves from room "file last share room" with 200 (v4) - And user "participant1" is not participant of room "file last share room" (v4) - And user "participant1" joins room "file last share room" with 200 (v4) - Then user "participant1" is participant of room "file last share room" (v4) - - Scenario: user with access to a file shared by link can join its room again after removing self from it - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant2" gets the room for last share with 200 (v1) - And user "participant2" joins room "file last share room" with 200 (v4) - And user "participant2" is participant of room "file last share room" (v4) - When user "participant2" removes themselves from room "file last share room" with 200 (v4) - And user "participant2" is not participant of room "file last share room" (v4) - And user "participant2" joins room "file last share room" with 200 (v4) - Then user "participant2" is participant of room "file last share room" (v4) - - Scenario: user without access to a file shared by link can join its room again after removing self from it - Given user "participant1" shares "welcome.txt" by link with OCS 100 - # Users without access to a file shared by link need to log in (so further - # requests keep the same session) and get the room (so the share token is - # stored in the session) to be able to join it. - And user "participant2" logs in - And user "participant2" gets the room for last share with 200 (v1) - And user "participant2" joins room "file last share room" with 200 (v4) - And user "participant2" is participant of room "file last share room" (v4) - When user "participant2" removes themselves from room "file last share room" with 200 (v4) - And user "participant2" is not participant of room "file last share room" (v4) - And user "participant2" joins room "file last share room" with 200 (v4) - Then user "participant2" is participant of room "file last share room" (v4) - - # Guests can not remove themselves from a room. - - - - # Participants are removed from the room for a no longer shared file once they - # try to join the room again, but not when the file is unshared. - - Scenario: owner is participant of room for file no longer shared - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant1" joins room "file welcome.txt room" with 200 (v4) - And user "participant1" leaves room "file welcome.txt room" with 200 (v4) - And user "participant1" is participant of room "file welcome.txt room" (v4) - When user "participant1" deletes last share - Then user "participant1" is participant of room "file welcome.txt room" (v4) - And user "participant1" joins room "file welcome.txt room" with 200 (v4) - And user "participant1" is participant of room "file welcome.txt room" (v4) - - Scenario: user is not participant of room for file no longer with access to it - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant2" joins room "file welcome (2).txt room" with 200 (v4) - And user "participant2" leaves room "file welcome (2).txt room" with 200 (v4) - And user "participant2" is participant of room "file welcome (2).txt room" (v4) - When user "participant1" deletes last share - Then user "participant2" is participant of room "file welcome (2).txt room" (v4) - And user "participant2" joins room "file welcome (2).txt room" with 404 (v4) - And user "participant2" is not participant of room "file welcome (2).txt room" (v4) - - - - Scenario: owner is participant of room for file no longer shared by link - Given user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant1" gets the room for last share with 200 (v1) - And user "participant1" joins room "file last share room" with 200 (v4) - And user "participant1" leaves room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - When user "participant1" deletes last share - Then user "participant1" is participant of room "file last share room" (v4) - And user "participant1" joins room "file last share room" with 200 (v4) - And user "participant1" is participant of room "file last share room" (v4) - - Scenario: user is participant of room for file no longer shared by link but with access to it - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" by link with OCS 100 - And user "participant2" gets the room for last share with 200 (v1) - And user "participant2" joins room "file last share room" with 200 (v4) - And user "participant2" leaves room "file last share room" with 200 (v4) - And user "participant2" is participant of room "file last share room" (v4) - When user "participant1" deletes last share - Then user "participant2" is participant of room "file last share room" (v4) - # Although the room was created for the shared link it will still be - # available to other types of shares after the shared link is deleted. - And user "participant2" joins room "file last share room" with 200 (v4) - And user "participant2" is participant of room "file last share room" (v4) - - Scenario: user is not participant of room for file no longer shared by link and without access to it - Given user "participant1" shares "welcome.txt" by link with OCS 100 - # Users without access to a file shared by link need to log in (so further - # requests keep the same session) and get the room (so the share token is - # stored in the session) to be able to join it. - And user "participant2" logs in - And user "participant2" gets the room for last share with 200 (v1) - And user "participant2" joins room "file last share room" with 200 (v4) - And user "participant2" leaves room "file last share room" with 200 (v4) - And user "participant2" is not participant of room "file last share room" (v4) - When user "participant1" deletes last share - Then user "participant2" is not participant of room "file last share room" (v4) - And user "participant2" joins room "file last share room" with 404 (v4) - And user "participant2" is not participant of room "file last share room" (v4) - - Scenario: guest is not participant of room for file no longer shared by link - Given user "participant1" shares "welcome.txt" by link with OCS 100 - And user "guest" gets the room for last share with 200 (v1) - And user "guest" joins room "file last share room" with 200 (v4) - And user "guest" leaves room "file last share room" with 200 (v4) - When user "participant1" deletes last share - Then user "guest" is not participant of room "file last share room" (v4) - And user "guest" joins room "file last share room" with 404 (v4) - And user "guest" is not participant of room "file last share room" (v4) diff --git a/tests/integration/features/conversation-2/find-listed.feature b/tests/integration/features/conversation-2/find-listed.feature deleted file mode 100644 index 64b3cb9557a..00000000000 --- a/tests/integration/features/conversation-2/find-listed.feature +++ /dev/null @@ -1,128 +0,0 @@ -Feature: conversation/find-listed - Background: - Given user "creator" exists - And user "regular-user" exists - And guest accounts can be created - And user "user-guest@example.com" is a guest account user - - Scenario Outline: Nobody can find non-listed rooms - Given user "creator" creates room "group-room" (v4) - | roomType | 2 | - | roomName | group-room | - And user "creator" creates room "public-room" (v4) - | roomType | 3 | - | roomName | public-room | - When user "creator" allows listing room "group-room" for "none" with 200 (v4) - And user "creator" allows listing room "public-room" for "none" with 200 (v4) - Then user "" cannot find any listed rooms (v4) - Examples: - | user | - | creator | - | regular-user | - | user-guest@example.com | - - Scenario: Regular users can find user-listed rooms - Given user "creator" creates room "group-room" (v4) - | roomType | 2 | - | roomName | group-room | - And user "creator" creates room "public-room" (v4) - | roomType | 3 | - | roomName | public-room | - And user "creator" sets description for room "group-room" to "the group-room description" with 200 (v4) - And user "creator" sets description for room "public-room" to "the public-room description" with 200 (v4) - When user "creator" allows listing room "group-room" for "users" with 200 (v4) - And user "creator" allows listing room "public-room" for "users" with 200 (v4) - Then user "regular-user" can find listed rooms (v4) - | name | listable | description | - | group-room | 1 | the group-room description | - | public-room | 1 | the public-room description | - And user "user-guest@example.com" cannot find any listed rooms (v4) - - Scenario: All users can find all-listed rooms - Given user "creator" creates room "group-room" (v4) - | roomType | 2 | - | roomName | group-room | - And user "creator" creates room "public-room" (v4) - | roomType | 3 | - | roomName | public-room | - When user "creator" allows listing room "group-room" for "all" with 200 (v4) - And user "creator" allows listing room "public-room" for "all" with 200 (v4) - Then user "regular-user" can find listed rooms (v4) - | name | listable | - | group-room | 2 | - | public-room | 2 | - And user "user-guest@example.com" can find listed rooms (v4) - | name | listable | - | group-room | 2 | - | public-room | 2 | - - Scenario: Participants cannot search for already joined listed rooms - Given user "creator" creates room "group-room" (v4) - | roomType | 2 | - | roomName | group-room | - And user "creator" creates room "public-room" (v4) - | roomType | 3 | - | roomName | public-room | - And user "creator" allows listing room "group-room" for "users" with 200 (v4) - And user "creator" allows listing room "public-room" for "users" with 200 (v4) - When user "regular-user" joins room "group-room" with 200 (v4) - And user "regular-user" joins room "public-room" with 200 (v4) - Then user "regular-user" cannot find any listed rooms (v4) - - Scenario: Participants cannot search for already joined listed rooms - Given user "creator" creates room "group-room" (v4) - | roomType | 2 | - | roomName | group-room | - And user "creator" creates room "public-room" (v4) - | roomType | 3 | - | roomName | public-room | - And user "creator" allows listing room "group-room" for "users" with 200 (v4) - And user "creator" allows listing room "public-room" for "users" with 200 (v4) - When user "regular-user" joins room "group-room" with 200 (v4) - And user "regular-user" joins room "public-room" with 200 (v4) - Then user "regular-user" cannot find any listed rooms (v4) - - Scenario: Users can use search terms to find listed rooms - Given user "creator" creates room "group-room" (v4) - | roomType | 2 | - | roomName | group-room | - And user "creator" creates room "group-the-cool-room" (v4) - | roomType | 2 | - | roomName | group-the-cool-room | - And user "creator" creates room "public-room" (v4) - | roomType | 3 | - | roomName | public-room | - And user "creator" creates room "public-the-cool-room" (v4) - | roomType | 3 | - | roomName | public-the-cool-room | - When user "creator" allows listing room "group-room" for "all" with 200 (v4) - And user "creator" allows listing room "public-room" for "all" with 200 (v4) - And user "creator" allows listing room "group-the-cool-room" for "all" with 200 (v4) - And user "creator" allows listing room "public-the-cool-room" for "all" with 200 (v4) - Then user "regular-user" can find listed rooms with term "cool" (v4) - | name | listable | - | group-the-cool-room | 2 | - | public-the-cool-room | 2 | - And user "user-guest@example.com" can find listed rooms with term "cool" (v4) - | name | listable | - | group-the-cool-room | 2 | - | public-the-cool-room | 2 | - - Scenario: Searching for a listable room by unknown term returns no results - Given user "creator" creates room "group-room" (v4) - | roomType | 2 | - | roomName | group-room | - When user "creator" allows listing room "group-room" for "all" with 200 (v4) - Then user "regular-user" cannot find any listed rooms with term "cool" (v4) - And user "user-guest@example.com" cannot find any listed rooms with term "cool" (v4) - - Scenario: Guest users without accounts cannot search for listed rooms - Given user "creator" creates room "public-room" (v4) - | roomType | 3 | - | roomName | public-room | - And user "creator" creates room "public-room-listed" (v4) - | roomType | 3 | - | roomName | public-room-listed | - And user "creator" allows listing room "public-room-listed" for "all" with 200 (v4) - When user "guest" joins room "public-room" with 200 (v4) - Then user "guest" cannot find any listed rooms with 401 (v4) diff --git a/tests/integration/features/conversation-2/join-listable.feature b/tests/integration/features/conversation-2/join-listable.feature deleted file mode 100644 index 9200263c2ad..00000000000 --- a/tests/integration/features/conversation-2/join-listable.feature +++ /dev/null @@ -1,112 +0,0 @@ -Feature: conversation/join-listable - Background: - Given user "creator" exists - And user "regular-user" exists - And guest accounts can be created - And user "user-guest@example.com" is a guest account user - # implicit: And user "guest" is a guest user with no account - - # ----------------------------------------------------------------------------- - # Non-listed rooms - # ----------------------------------------------------------------------------- - Scenario: Nobody can join a non-listed group room - Given user "creator" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - When user "creator" allows listing room "room" for "none" with 200 (v4) - Then user "regular-user" joins room "room" with 404 (v4) - And user "user-guest@example.com" joins room "room" with 404 (v4) - And user "guest" joins room "room" with 404 (v4) - - Scenario: Anyone can join a non-listed public room - Given user "creator" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "creator" allows listing room "room" for "none" with 200 (v4) - When user "regular-user" joins 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) - Then user "creator" sees the following attendees in room "room" with 200 (v4) - | actorId | participantType | actorType | - | creator | OWNER | users | - | regular-user | USER_SELF_JOINED | users | - | user-guest@example.com | USER_SELF_JOINED | users | - | "guest" | GUEST | guests | - - # ----------------------------------------------------------------------------- - # User-listed rooms - # ----------------------------------------------------------------------------- - Scenario: Only regular users can join a user-listed group room - Given user "creator" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "creator" allows listing room "room" for "users" with 200 (v4) - When user "regular-user" joins room "room" with 200 (v4) - And user "user-guest@example.com" joins room "room" with 404 (v4) - And user "guest" joins room "room" with 404 (v4) - Then user "creator" sees the following attendees in room "room" with 200 (v4) - | actorId | participantType | actorType | - | creator | OWNER | users | - | regular-user | USER | users | - - Scenario: Anyone can join a user-listed public room - Given user "creator" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "creator" allows listing room "room" for "users" with 200 (v4) - When user "regular-user" joins 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) - Then user "creator" sees the following attendees in room "room" with 200 (v4) - | actorId | participantType | actorType | - | creator | OWNER | users | - | regular-user | USER | users | - | user-guest@example.com | USER_SELF_JOINED | users | - | "guest" | GUEST | guests | - - # ----------------------------------------------------------------------------- - # All-listed rooms - # ----------------------------------------------------------------------------- - Scenario: Only users with accounts can join an all-listed group room - Given user "creator" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "creator" allows listing room "room" for "all" with 200 (v4) - When user "regular-user" joins room "room" with 200 (v4) - And user "user-guest@example.com" joins room "room" with 200 (v4) - And user "guest" joins room "room" with 404 (v4) - Then user "creator" sees the following attendees in room "room" with 200 (v4) - | actorId | participantType | actorType | - | creator | OWNER | users | - | regular-user | USER | users | - | user-guest@example.com | USER | users | - - Scenario: Anyone can join an all-listed public room - Given user "creator" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "creator" allows listing room "room" for "all" with 200 (v4) - When user "regular-user" joins 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) - Then user "creator" sees the following attendees in room "room" with 200 (v4) - | actorId | participantType | actorType | - | creator | OWNER | users | - | regular-user | USER | users | - | user-guest@example.com | USER | users | - | "guest" | GUEST | guests | - - # ----------------------------------------------------------------------------- - # Join listed conversation which has a password - # ----------------------------------------------------------------------------- - Scenario: Only users with accounts can join an all-listed group room - Given user "creator" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - When user "creator" sets password "foobar" for room "room" with 200 (v4) - And user "creator" allows listing room "room" for "all" with 200 (v4) - When user "regular-user" joins room "room" with 200 (v4) - Then user "creator" sees the following attendees in room "room" with 200 (v4) - | actorId | participantType | actorType | - | creator | OWNER | users | - | regular-user | USER | users | diff --git a/tests/integration/features/conversation-3/group-participants.feature b/tests/integration/features/conversation-3/group-participants.feature deleted file mode 100644 index cb62e6bc128..00000000000 --- a/tests/integration/features/conversation-3/group-participants.feature +++ /dev/null @@ -1,280 +0,0 @@ -Feature: conversation/group-participants - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - And group "group1" exists - And group "group2" exists - And group "rename-group" exists - And user "participant2" is member of group "group1" - - Scenario: Owner invites a group - 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 group "group1" to room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - - Scenario: Owner start a chat with a group - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | source | group | - | invite |group1 | - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - - Scenario: User is added to a group which is a member of a chat - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | source | group | - | invite |group1 | - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - And user "participant3" is member of group "group1" - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - | users | participant3 | 3 | - - Scenario: User is removed from a group which is a member of a chat - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | source | group | - | invite |group1 | - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - And user "participant2" is not member of group "group1" - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - - Scenario: User is removed from a group which is a member of a chat but has a second group - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | source | group | - | invite |group1 | - And user "participant2" is member of group "group2" - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - And user "participant1" adds group "group2" to room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - | groups | group2 | 3 | - And user "participant2" is not member of group "group1" - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - | groups | group2 | 3 | - - Scenario: User is not removed from a chat when one group is removed but has a second group - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | source | group | - | invite |group1 | - And user "participant2" is member of group "group2" - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - And user "participant1" adds group "group2" to room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - | groups | group2 | 3 | - And user "participant1" removes group "group1" from room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - | groups | group2 | 3 | - - Scenario: User is removed from when their last group which is a member of a chat is removed - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | source | group | - | invite |group1 | - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - And user "participant1" removes group "group1" from room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - - Scenario: Moderator is removed from a group which is a member of a chat but stays in the chat - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | source | group | - | invite |group1 | - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 2 | - And user "participant2" is not member of group "group1" - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 2 | - - Scenario: Group of a moderator is removed from a chat but moderator stays in the chat - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | source | group | - | invite |group1 | - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 2 | - And user "participant1" removes group "group1" from room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 2 | - - Scenario: User that was already a member has their group added to a chat - 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" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - And user "participant1" adds group "group1" to room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - | groups | group1 | 3 | - - Scenario: User that was self-joined has their group added to a chat - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" joins room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 5 | - And user "participant1" adds group "group1" to room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - | groups | group1 | 3 | - - Scenario: User that was already a member is added to a group which is a member of a chat - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | source | group | - | invite |group1 | - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - | users | participant3 | 3 | - And user "participant3" is member of group "group1" - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - | users | participant3 | 3 | - - Scenario: User that was self-joined is added to a group which is a member of a chat - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds group "group1" to room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - | users | participant3 | 5 | - And user "participant3" is member of group "group1" - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - | users | participant2 | 3 | - | users | participant3 | 3 | - - Scenario: User that was already a member is removed from a group which is a member of a chat - # This might not be what most people desire but fixing this would mean we - # need to keep multiple records per user whether they were added manually before etc. - 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" adds group "group1" to room "room" with 200 (v4) - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 3 | - | groups | group1 | 3 | - And user "participant2" is not member of group "group1" - And user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | groups | group1 | 3 | - - Scenario: Renaming a group reflects in the participant list - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds group "rename-group" 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 | - | groups | rename-group | 3 | rename-group | - When set display name of group "rename-group" to "rename-group-displayname" - Then user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | displayName | - | users | participant1 | 1 | participant1-displayname | - | groups | rename-group | 3 | rename-group-displayname | diff --git a/tests/integration/features/conversation-3/invite-email.feature b/tests/integration/features/conversation-3/invite-email.feature deleted file mode 100644 index acaf529d3dd..00000000000 --- a/tests/integration/features/conversation-3/invite-email.feature +++ /dev/null @@ -1,24 +0,0 @@ -Feature: conversation/invite-email - Background: - Given user "participant1" exists - - Scenario: Resend email invites - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" adds email "test@example.tld" to room "room" with 200 (v4) - # Adding the same email again should not error to help the Calendar integration - # Ref https://github.com/nextcloud/calendar/pull/5380 - When user "participant1" adds email "test@example.tld" to room "room" with 200 (v4) - Then user "participant1" sees the following attendees in room "room" with 200 (v4) - | participantType | inCall | actorType | actorId | - | 4 | 0 | emails | test@example.tld | - | 1 | 0 | users | participant1 | - # Reinvite all emails - When user "participant1" resends invite for room "room" with 200 (v4) - # Reinvite only one - When user "participant1" resends invite for room "room" with 200 (v4) - | attendeeId | test@example.tld | - # Reinvite failure - When user "participant1" resends invite for room "room" with 404 (v4) - | attendeeId | not-found@example.tld | diff --git a/tests/integration/features/conversation-3/join-leave.feature b/tests/integration/features/conversation-3/join-leave.feature deleted file mode 100644 index 89b025f9fbf..00000000000 --- a/tests/integration/features/conversation-3/join-leave.feature +++ /dev/null @@ -1,112 +0,0 @@ -Feature: conversation/join-leave - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: join a one-to-one room - Given user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 404 (v4) - And user "guest" joins room "room" with 404 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - And user "participant3" is not participant of room "room" (v4) - And user "guest" is not participant of room "room" (v4) - - Scenario: leave a one-to-one room - Given user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - When user "participant1" leaves room "room" with 200 (v4) - And user "participant2" leaves room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - - - - Scenario: join a group room - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 404 (v4) - And user "guest" joins room "room" with 404 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - And user "participant3" is not participant of room "room" (v4) - And user "guest" is not participant of room "room" (v4) - - Scenario: leave a group room - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - When user "participant1" leaves room "room" with 200 (v4) - And user "participant2" leaves room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - - - - Scenario: join a public room - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "guest" joins room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - And user "participant3" is participant of room "room" (v4) - And user "guest" is participant of room "room" (v4) - - Scenario: leave a public room - Given signaling server is started - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And reset signaling server requests - And user "participant1" joins room "room" with 200 (v4) session name "old" - And user "participant1" joins room "room" with 200 (v4) session name "new" - # Rejoining the same room disinvites the previous session - Then signaling server received the following requests - | token | data | - | room | {"type":"disinvite","disinvite":{"sessionids":["SESSION(participant1#old)"],"alluserids":["participant1","participant2"],"properties":{"name":"Private conversation","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"participant-list":"refresh"}}} | - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "guest" joins room "room" with 200 (v4) - And reset signaling server requests - When user "participant1" leaves room "room" with 200 (v4) - # No signaling message when a normal user leaves - Then signaling server received the following requests - And user "participant2" leaves room "room" with 200 (v4) - And reset signaling server requests - And user "participant3" leaves room "room" with 200 (v4) - # Signaling message when a self-joined user leaves - Then signaling server received the following requests - | token | data | - | room | {"type":"disinvite","disinvite":{"userids":["participant3"],"alluserids":["participant1","participant2"],"properties":{"name":"Private conversation","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"participant-list":"refresh"}}} | - And reset signaling server requests - And user "guest" leaves room "room" with 200 (v4) - # Signaling message when a guest leaves - Then signaling server received the following requests - | token | data | - | room | {"type":"disinvite","disinvite":{"sessionids":["SESSION(guest)"],"alluserids":["participant1","participant2"],"properties":{"name":"Private conversation","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"participant-list":"refresh"}}} | - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - And user "participant3" is not participant of room "room" (v4) - And user "guest" is not participant of room "room" (v4) diff --git a/tests/integration/features/conversation-3/limit-creation.feature b/tests/integration/features/conversation-3/limit-creation.feature deleted file mode 100644 index dbd8d5c4177..00000000000 --- a/tests/integration/features/conversation-3/limit-creation.feature +++ /dev/null @@ -1,35 +0,0 @@ -Feature: conversation/limit-creation - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - Given group "group1" exists - - Scenario: User can not create group conversations - Given the following "spreed" app config is set - | start_conversations | ["group1"] | - Then user "participant1" creates room "room" with 403 (v4) - | roomType | 2 | - | roomName | room | - Given user "participant1" is member of group "group1" - Then user "participant1" creates room "room" with 201 (v4) - | roomType | 2 | - | roomName | room | - - Scenario: User can not create public conversations - Given the following "spreed" app config is set - | start_conversations | ["group1"] | - Then user "participant1" creates room "room" with 403 (v4) - | roomType | 3 | - | roomName | room | - Given user "participant1" is member of group "group1" - Then user "participant1" creates room "room" with 201 (v4) - | roomType | 3 | - | roomName | room | - - Scenario: User can still do one-to-one conversations - Given the following "spreed" app config is set - | start_conversations | ["group1"] | - Then user "participant1" creates room "room" with 201 (v4) - | roomType | 1 | - | invite | participant2 | diff --git a/tests/integration/features/conversation-3/lobby.feature b/tests/integration/features/conversation-3/lobby.feature deleted file mode 100644 index 8ea69ed0955..00000000000 --- a/tests/integration/features/conversation-3/lobby.feature +++ /dev/null @@ -1,281 +0,0 @@ -Feature: conversation/lobby - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - Given user "participant4" exists - - Scenario: set lobby state in group room - Given signaling server is started - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - And reset signaling server requests - When user "participant1" sets lobby state for room "room" to "non moderators" 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","participant2","participant3"],"properties":{"name":"Private conversation","type":2,"lobby-state":1,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - And reset signaling server requests - And user "participant1" sets lobby state for room "room" to "no lobby" 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","participant2","participant3"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - And user "participant2" sets lobby state for room "room" to "non moderators" with 200 (v4) - And user "participant2" sets lobby state for room "room" to "no lobby" with 200 (v4) - And user "participant3" sets lobby state for room "room" to "non moderators" with 403 (v4) - And user "participant3" sets lobby state for room "room" to "no lobby" with 403 (v4) - - Scenario: set lobby state in public room - 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 "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant4" joins room "room" with 200 (v4) - And user "guest" joins room "room" with 200 (v4) - And user "participant1" promotes "guest" in room "room" with 200 (v4) - And user "guest2" joins room "room" with 200 (v4) - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - And user "participant1" sets lobby state for room "room" to "no lobby" with 200 (v4) - And user "participant2" sets lobby state for room "room" to "non moderators" with 200 (v4) - And user "participant2" sets lobby state for room "room" to "no lobby" with 200 (v4) - And user "participant3" sets lobby state for room "room" to "non moderators" with 403 (v4) - And user "participant3" sets lobby state for room "room" to "no lobby" with 403 (v4) - And user "participant4" sets lobby state for room "room" to "non moderators" with 403 (v4) - And user "participant4" sets lobby state for room "room" to "no lobby" with 403 (v4) - And user "guest" sets lobby state for room "room" to "non moderators" with 401 (v4) - And user "guest" sets lobby state for room "room" to "no lobby" with 401 (v4) - And user "guest2" sets lobby state for room "room" to "non moderators" with 401 (v4) - And user "guest2" sets lobby state for room "room" to "no lobby" with 401 (v4) - - Scenario: set lobby state in one-to-one room - Given user "participant1" creates room "room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant1" sets lobby state for room "room" to "non moderators" with 400 (v4) - And user "participant1" sets lobby state for room "room" to "no lobby" with 400 (v4) - And user "participant2" sets lobby state for room "room" to "non moderators" with 400 (v4) - And user "participant2" sets lobby state for room "room" to "no lobby" with 400 (v4) - - Scenario: set lobby state in file room - Given user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" gets the room for path "welcome.txt" with 200 (v1) - And user "participant2" gets the room for path "welcome (2).txt" with 200 (v1) - And user "participant1" joins room "file welcome.txt room" with 200 (v4) - And user "participant2" joins room "file welcome (2).txt room" with 200 (v4) - When user "participant1" sets lobby state for room "file welcome.txt room" to "non moderators" with 403 (v4) - And user "participant1" sets lobby state for room "file welcome.txt room" to "no lobby" with 403 (v4) - And user "participant2" sets lobby state for room "file welcome (2).txt room" to "non moderators" with 403 (v4) - And user "participant2" sets lobby state for room "file welcome (2).txt room" to "no lobby" with 403 (v4) - - Scenario: set lobby state of a room not joined to - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant2" sets lobby state for room "room" to "non moderators" with 404 (v4) - And user "participant2" sets lobby state for room "room" to "no lobby" with 404 (v4) - - - - Scenario: participants can join the room when the lobby is active - 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 "participant1" adds user "participant3" to room "room" with 200 (v4) - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - Then user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "participant4" joins room "room" with 200 (v4) - And user "guest" joins room "room" with 200 (v4) - And user "participant1" promotes "guest" in room "room" with 200 (v4) - And user "guest2" joins room "room" with 200 (v4) - - Scenario: participants can join a password protected room when the lobby is active - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" sets password "foobar" for room "room" with 200 (v4) - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - Then user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "participant4" joins room "room" with 200 (v4) - | password | foobar | - And user "guest" joins room "room" with 200 (v4) - | password | foobar | - And user "participant1" promotes "guest" in room "room" with 200 (v4) - And user "guest2" joins room "room" with 200 (v4) - | password | foobar | - - Scenario: lobby prevents chats for non moderators - 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 "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "participant4" joins room "room" with 200 (v4) - And user "guest" joins room "room" with 200 (v4) - And user "participant1" promotes "guest" in room "room" with 200 (v4) - And user "guest2" joins room "room" with 200 (v4) - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - Then user "participant1" sends message "Message 1" to room "room" with 201 - And user "participant2" sends message "Message 2" to room "room" with 201 - And user "participant3" sends message "Message 3" to room "room" with 412 - And user "participant4" sends message "Message 4" to room "room" with 412 - And user "guest" sends message "Message 5" to room "room" with 201 - And user "guest2" sends message "Message 6" to room "room" with 412 - And user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | guests | guest | | Message 5 | [] | - | room | users | participant2 | participant2-displayname | Message 2 | [] | - | room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant2" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | guests | guest | | Message 5 | [] | - | room | users | participant2 | participant2-displayname | Message 2 | [] | - | room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "participant3" sees the following messages in room "room" with 412 - And user "participant4" sees the following messages in room "room" with 412 - And user "guest" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | guests | guest | | Message 5 | [] | - | room | users | participant2 | participant2-displayname | Message 2 | [] | - | room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "guest2" sees the following messages in room "room" with 412 - - Scenario: lobby prevents calls for non moderators - 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 "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "participant4" joins room "room" with 200 (v4) - And user "guest" joins room "room" with 200 (v4) - And user "participant1" promotes "guest" in room "room" with 200 (v4) - And user "guest2" joins room "room" with 200 (v4) - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - Then user "participant1" joins call "room" with 200 (v4) - And user "participant2" joins call "room" with 200 (v4) - And user "participant3" joins call "room" with 412 (v4) - And user "participant4" joins call "room" with 412 (v4) - And user "guest" joins call "room" with 200 (v4) - And user "guest2" joins call "room" with 412 (v4) - And user "participant1" sees 3 peers in call "room" with 200 (v4) - And user "participant2" sees 3 peers in call "room" with 200 (v4) - And user "participant3" sees 0 peers in call "room" with 412 (v4) - And user "participant4" sees 0 peers in call "room" with 412 (v4) - And user "guest" sees 3 peers in call "room" with 200 (v4) - And user "guest2" sees 0 peers in call "room" with 412 (v4) - And user "participant1" leaves call "room" with 200 (v4) - And user "participant2" leaves call "room" with 200 (v4) - And user "guest" leaves call "room" with 200 (v4) - - Scenario: lobby prevents some room actions for non moderators - 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 "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "participant4" joins room "room" with 200 (v4) - And user "guest" joins room "room" with 200 (v4) - And user "participant1" promotes "guest" in room "room" with 200 (v4) - And user "guest2" joins room "room" with 200 (v4) - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - Then user "participant1" leaves room "room" with 200 (v4) - And user "participant2" leaves room "room" with 200 (v4) - And user "participant3" leaves room "room" with 200 (v4) - And user "participant4" leaves room "room" with 200 (v4) - And user "guest" leaves room "room" with 200 (v4) - And user "guest2" leaves room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "participant4" joins room "room" with 200 (v4) - And user "guest" joins room "room" with 200 (v4) - And user "guest2" joins room "room" with 200 (v4) - And user "participant2" removes themselves from room "room" with 200 (v4) - And user "participant3" removes themselves from room "room" with 200 (v4) - - - - # Not all the values are checked in the test, only the most relevant ones - Scenario: participants can get some room information when the lobby is active - 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 "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant1" joins room "room" with 200 (v4) - And user "participant2" joins room "room" with 200 (v4) - And user "participant3" joins room "room" with 200 (v4) - And user "participant4" joins room "room" with 200 (v4) - And user "guest" joins room "room" with 200 (v4) - And user "participant1" promotes "guest" in room "room" with 200 (v4) - And user "guest2" joins room "room" with 200 (v4) - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - And user "participant1" sends message "Message 1" to room "room" with 201 - And user "participant1" sets description for room "room" to "the description" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - | name | description | type | participantType | lastMessage | - | room | the description | 3 | 1 | You set the description | - And user "participant2" is participant of room "room" (v4) - | name | description | type | participantType | lastMessage | - | room | the description | 3 | 2 | {actor} set the description | - And user "participant3" is participant of room "room" (v4) - | name | description | type | participantType | lastMessage | - | room | the description | 3 | 3 | | - And user "participant4" is participant of room "room" (v4) - | name | description | type | participantType | lastMessage | - | room | the description | 3 | 5 | | - And user "guest" is participant of room "room" (v4) - | name | description | type | participantType | lastMessage | - | room | the description | 3 | 6 | {actor} set the description | - And user "guest2" is participant of room "room" (v4) - | name | description | type | participantType | lastMessage | - | room | the description | 3 | 4 | | - - - # Not all the values are checked in the test, only the most relevant ones - Scenario: Make sure resetting the lobby timer works on the room list - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - Then user "participant1" is participant of room "room" (v4) - | name | lobbyState | - | room | 0 | - When user "participant1" sets lobby state for room "room" to "non moderators" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - | name | lobbyState | - | room | 1 | - When user "participant1" sets lobby state for room "room" to "non moderators" for 5 seconds with 200 (v4) - When wait for 10 second - Then user "participant1" is participant of room "room" (v4) - | name | lobbyState | - | room | 0 | diff --git a/tests/integration/features/conversation-3/one-to-one.feature b/tests/integration/features/conversation-3/one-to-one.feature deleted file mode 100644 index b053ad93d8d..00000000000 --- a/tests/integration/features/conversation-3/one-to-one.feature +++ /dev/null @@ -1,209 +0,0 @@ -Feature: conversation-2/one-to-one - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: User has no rooms - Then user "participant1" is participant of the following rooms (v4) - Then user "participant2" is participant of the following rooms (v4) - Then user "participant3" is participant of the following rooms (v4) - - Scenario: User1 invites themself to a one2one room - When user "participant1" tries to create room with 403 (v4) - | roomType | 1 | - | invite | participant1 | - - Scenario: User1 invites user2 to a one2one room and user3 is not part of it - When user "participant1" creates room "room1" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room1 | 1 | 1 | - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room1 | 1 | 1 | - And user "participant3" is participant of the following rooms (v4) - And user "participant1" is participant of room "room1" (v4) - And user "participant2" is participant of room "room1" (v4) - And user "participant3" is not participant of room "room1" (v4) - - Scenario: User1 invites user2 to a one2one room and leaves it - Given user "participant1" creates room "room2" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room2" (v4) - And user "participant2" is participant of room "room2" (v4) - When user "participant1" removes themselves from room "room2" with 200 (v4) - Then user "participant1" is not participant of room "room2" (v4) - And user "participant1" is participant of the following rooms (v4) - And user "participant2" is participant of room "room2" (v4) - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room2 | 1 | 1 | - And user "participant2" sees the following attendees in room "room2" with 200 (v4) - | actorType | actorId | participantType | - | users | participant2 | 1 | - - Scenario: User1 invites user2 to a one2one room and tries to delete it - Given user "participant1" creates room "room3" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" is participant of room "room3" (v4) - And user "participant2" is participant of room "room3" (v4) - When user "participant1" deletes room "room3" with 400 (v4) - Then user "participant1" is participant of room "room3" (v4) - And user "participant2" is participant of room "room3" (v4) - - Scenario: User1 invites user2 to a one2one room and tries to remove user2 - Given user "participant1" creates room "room4" (v4) - | roomType | 1 | - | invite | participant2 | - Then user "participant1" is participant of room "room4" (v4) - And user "participant2" is participant of room "room4" (v4) - And user "participant1" loads attendees attendee ids in room "room4" (v4) - When user "participant1" removes "participant2" from room "room4" with 400 (v4) - Then user "participant1" is participant of room "room4" (v4) - And user "participant2" is participant of room "room4" (v4) - - Scenario: User1 invites user2 to a one2one room and tries to rename it - Given user "participant1" creates room "room5" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room5" (v4) - And user "participant2" is participant of room "room5" (v4) - When user "participant1" renames room "room5" to "new name" with 400 (v4) - - Scenario: User1 invites user2 to a one2one room and tries to make it public - Given user "participant1" creates room "room6" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room6" (v4) - And user "participant2" is participant of room "room6" (v4) - When user "participant1" makes room "room6" public with 400 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room6 | 1 | 1 | - - Scenario: User1 invites user2 to a one2one room and tries to invite user3 - Given user "participant1" creates room "room7" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room7" (v4) - And user "participant2" is participant of room "room7" (v4) - And user "participant3" is not participant of room "room7" (v4) - When user "participant1" adds user "participant3" to room "room7" with 400 (v4) - And user "participant3" is not participant of room "room7" (v4) - And user "participant1" sees the following attendees in room "room7" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 1 | - - Scenario: User1 invites user2 to a one2one room and promote user2 to moderator - Given user "participant1" creates room "room8" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room8" (v4) - And user "participant2" is participant of room "room8" (v4) - And user "participant1" loads attendees attendee ids in room "room8" (v4) - When user "participant1" promotes "participant2" in room "room8" with 400 (v4) - - Scenario: User1 invites user2 to a one2one room and demote user2 to moderator - Given user "participant1" creates room "room9" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room9" (v4) - And user "participant2" is participant of room "room9" (v4) - And user "participant1" loads attendees attendee ids in room "room9" (v4) - When user "participant1" demotes "participant2" in room "room9" with 400 (v4) - - Scenario: User1 invites user2 to a one2one room and promote non-invited user - Given user "participant1" creates room "room10" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room10" (v4) - And user "participant3" is not participant of room "room10" (v4) - And user "participant1" loads attendees attendee ids in room "room10" (v4) - When user "participant1" promotes "stranger" in room "room10" with 404 (v4) - - Scenario: User1 invites user2 to a one2one room and demote non-invited user - Given user "participant1" creates room "room11" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room11" (v4) - And user "participant3" is not participant of room "room11" (v4) - And user "participant1" loads attendees attendee ids in room "room11" (v4) - When user "participant1" demotes "stranger" in room "room11" with 404 (v4) - - Scenario: User1 invites user2 to a one2one room twice, it's the same room - Given user "participant1" creates room "room12" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room12" (v4) - And user "participant2" is participant of room "room12" (v4) - And user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room12 | 1 | 1 | - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room12 | 1 | 1 | - When user "participant1" creates room "room13" with 200 (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room12" (v4) - And user "participant2" is participant of room "room12" (v4) - And user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room12 | 1 | 1 | - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room12 | 1 | 1 | - - Scenario: User1 invites user2 to a one2one room, leaves and does it again, it's the same room - Given user "participant1" creates room "room14" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room14" (v4) - And user "participant2" is participant of room "room14" (v4) - And user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room14 | 1 | 1 | - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room14 | 1 | 1 | - When user "participant1" removes themselves from room "room14" with 200 (v4) - Then user "participant1" is not participant of room "room14" (v4) - And user "participant1" is participant of the following rooms (v4) - And user "participant2" is participant of room "room14" (v4) - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room14 | 1 | 1 | - And user "participant2" sees the following attendees in room "room14" with 200 (v4) - | actorType | actorId | participantType | - | users | participant2 | 1 | - When user "participant1" creates room "room15" with 200 (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" is participant of room "room14" (v4) - And user "participant2" is participant of room "room14" (v4) - And user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room14 | 1 | 1 | - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room14 | 1 | 1 | - And user "participant2" sees the following attendees in room "room14" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 1 | - - Scenario: Check share restrictions on one to one conversatio - Given the following "core" app config is set - | shareapi_restrict_user_enumeration_full_match | no | - | shareapi_allow_share_dialog_user_enumeration | yes | - | shareapi_restrict_user_enumeration_to_group | yes | - | shareapi_restrict_user_enumeration_to_phone | yes | - And user "participant1" creates room "room15" with 403 (v4) - | roomType | 1 | - | invite | participant2 | diff --git a/tests/integration/features/conversation-3/public-private.feature b/tests/integration/features/conversation-3/public-private.feature deleted file mode 100644 index 08b98fff777..00000000000 --- a/tests/integration/features/conversation-3/public-private.feature +++ /dev/null @@ -1,91 +0,0 @@ -Feature: conversation-2/public-private - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: Owner makes room private/public - 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" makes room "room" private 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":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 2 | 1 | - And reset signaling server requests - When user "participant1" makes room "room" public 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 "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 1 | - - Scenario: Moderator makes room private/public - 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" makes room "room" private with 200 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 2 | 1 | - When user "participant2" makes room "room" public with 200 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 1 | - - Scenario: User makes room private/public - 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" makes room "room" private with 403 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 1 | - When user "participant1" makes room "room" private with 200 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 2 | 1 | - When user "participant2" makes room "room" public with 403 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 2 | 1 | - - Scenario: Stranger makes room private/public - 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" makes room "room" private with 404 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 1 | - When user "participant1" makes room "room" private with 200 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 2 | 1 | - When user "participant2" makes room "room" public with 404 (v4) - Then user "participant1" is participant of the following rooms (v4) - | id | type | participantType | - | room | 2 | 1 | diff --git a/tests/integration/features/conversation-4/password-request.feature b/tests/integration/features/conversation-4/password-request.feature deleted file mode 100644 index 1c8bfab024a..00000000000 --- a/tests/integration/features/conversation-4/password-request.feature +++ /dev/null @@ -1,211 +0,0 @@ -Feature: conversation-2/password-request - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: create password-request room for file shared by link - Given user "participant1" shares "welcome.txt" by link with OCS 100 - | password | 123456 | - | sendPasswordByTalk | true | - When user "guest" creates the password request room for last share with 201 (v1) - Then user "participant1" is participant of room "password request for last share room" (v4) - | name | type | participantType | - | welcome.txt | 3 | 1 | - And user "participant1" sees the following attendees in room "welcome.txt" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - And user "guest" is not participant of room "password request for last share room" (v4) - - Scenario: create password-request room for folder shared by link - Given user "participant1" creates folder "/test" - And user "participant1" shares "test" by link with OCS 100 - | password | 123456 | - | sendPasswordByTalk | true | - When user "guest" creates the password request room for last share with 201 (v1) - Then user "participant1" is participant of room "password request for last share room" (v4) - | name | type | participantType | - | test | 3 | 1 | - And user "participant1" sees the following attendees in room "test" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - And user "guest" is not participant of room "password request for last share room" (v4) - - Scenario: create password-request room for folder reshared by link - Given user "participant1" creates folder "/test" - And user "participant1" shares "test" with user "participant2" with OCS 100 - And user "participant2" shares "test" by link with OCS 100 - | password | 123456 | - | sendPasswordByTalk | true | - When user "guest" creates the password request room for last share with 201 (v1) - Then user "participant2" is participant of room "password request for last share room" (v4) - | name | type | participantType | - | test | 3 | 1 | - And user "participant2" sees the following attendees in room "test" with 200 (v4) - | actorType | actorId | participantType | - | users | participant2 | 1 | - And user "participant1" is not participant of room "password request for last share room" (v4) - And user "guest" is not participant of room "password request for last share room" (v4) - - Scenario: create password-request room for file shared by link but not protected by Talk - Given user "participant1" shares "welcome.txt" by link with OCS 100 - | password | 123456 | - When user "guest" creates the password request room for last share with 404 (v1) - - - - # Creating and joining the password request room is a two steps process. - # Technically one guest or user could create the room and a different one - # join it, but it does not really matter who created the room, only who joins - # it and talks with the owner (and, besides that, the WebUI joins the room - # immediately after creating it). - - Scenario: guest can join the password request room - Given user "participant1" 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) - When user "guest" joins room "password request for last share room" with 200 (v4) - Then user "guest" is participant of room "password request for last share room" (v4) - - Scenario: user can join the password request room - Given user "participant1" shares "welcome.txt" by link with OCS 100 - | password | 123456 | - | sendPasswordByTalk | true | - And user "participant2" creates the password request room for last share with 201 (v1) - When user "participant2" joins room "password request for last share room" with 200 (v4) - Then user "participant2" is participant of room "password request for last share room" (v4) - - Scenario: owner can join the password request room - Given user "participant1" 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) - When user "participant1" joins room "password request for last share room" with 200 (v4) - - Scenario: other guests can not join the password request room when a guest already joined - Given user "participant1" 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) - When user "guest2" joins room "password request for last share room" with 404 (v4) - Then user "guest2" is not participant of room "password request for last share room" (v4) - - Scenario: other guests can not join the password request room when a user already joined - Given user "participant1" shares "welcome.txt" by link with OCS 100 - | password | 123456 | - | sendPasswordByTalk | true | - And user "participant2" creates the password request room for last share with 201 (v1) - And user "participant2" joins room "password request for last share room" with 200 (v4) - When user "guest" joins room "password request for last share room" with 404 (v4) - Then user "guest" is not participant of room "password request for last share room" (v4) - - Scenario: other users can not join the password request room when a guest already joined - Given user "participant1" 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) - When user "participant2" joins room "password request for last share room" with 404 (v4) - Then user "participant2" is not participant of room "password request for last share room" (v4) - - Scenario: other users can not join the password request room when a user already joined - Given user "participant1" shares "welcome.txt" by link with OCS 100 - | password | 123456 | - | sendPasswordByTalk | true | - And user "participant2" creates the password request room for last share with 201 (v1) - And user "participant2" joins room "password request for last share room" with 200 (v4) - When user "participant3" joins room "password request for last share room" with 404 (v4) - Then user "participant3" is not participant of room "password request for last share room" (v4) - - - - Scenario: owner can not add other users to a password request room - Given user "participant1" 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 "participant1" joins room "password request for last share room" with 200 (v4) - When user "participant1" adds user "participant2" to room "password request for last share room" with 400 (v4) - Then user "participant2" is not participant of room "password request for last share room" (v4) - - - - Scenario: guest leaves the password request room - Given user "participant1" 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 "participant1" joins room "password request for last share room" with 200 (v4) - When user "guest" leaves room "password request for last share room" with 200 (v4) - Then user "participant1" is not participant of room "password request for last share room" (v4) - And user "guest" is not participant of room "password request for last share room" (v4) - - Scenario: user leaves the password request room - Given user "participant1" shares "welcome.txt" by link with OCS 100 - | password | 123456 | - | sendPasswordByTalk | true | - And user "participant2" creates the password request room for last share with 201 (v1) - And user "participant2" joins room "password request for last share room" with 200 (v4) - And user "participant1" joins room "password request for last share room" with 200 (v4) - When user "participant2" leaves room "password request for last share room" with 200 (v4) - Then user "participant1" is not participant of room "password request for last share room" (v4) - And user "participant2" is not participant of room "password request for last share room" (v4) - - Scenario: owner leaves the password request room - Given user "participant1" 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 "participant1" joins room "password request for last share room" with 200 (v4) - When user "participant1" leaves room "password request for last share room" with 200 (v4) - Then user "participant1" is not participant of room "password request for last share room" (v4) - And user "guest" is not participant of room "password request for last share room" (v4) - - - - Scenario: guest can start a call - Given user "participant1" 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) - When user "guest" joins call "password request for last share room" with 200 (v4) - Then user "guest" sees 1 peers in call "password request for last share room" with 200 (v4) - And user "participant1" sees 1 peers in call "password request for last share room" with 200 (v4) - - Scenario: owner can join a call - Given user "participant1" 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 "participant1" joins room "password request for last share room" with 200 (v4) - And user "guest" joins call "password request for last share room" with 200 (v4) - When user "participant1" joins call "password request for last share room" with 200 (v4) - Then user "guest" sees 2 peers in call "password request for last share room" with 200 (v4) - And user "participant1" sees 2 peers in call "password request for last share room" with 200 (v4) - - - - Scenario: participants can send and receive chat messages - Given user "participant1" 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 "participant1" joins room "password request for last share room" with 200 (v4) - And user "guest" joins room "password request for last share room" with 200 (v4) - When user "participant1" sends message "Message 1" to room "password request for last share room" with 201 - And user "guest" sends message "Message 2" to room "password request for last share room" with 201 - Then user "participant1" sees the following messages in room "password request for last share room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | password request for last share room | guests | guest | | Message 2 | [] | - | password request for last share room | users | participant1 | participant1-displayname | Message 1 | [] | - And user "guest" sees the following messages in room "password request for last share room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | password request for last share room | guests | guest | | Message 2 | [] | - | password request for last share room | users | participant1 | participant1-displayname | Message 1 | [] | diff --git a/tests/integration/features/conversation-4/promotion-demotion.feature b/tests/integration/features/conversation-4/promotion-demotion.feature deleted file mode 100644 index 9913f479cf5..00000000000 --- a/tests/integration/features/conversation-4/promotion-demotion.feature +++ /dev/null @@ -1,117 +0,0 @@ -Feature: conversation-2/promotion-demotion - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: Owner promotes/demotes moderator - Given signaling server is started - 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" loads attendees attendee ids in room "room" (v4) - And reset signaling server requests - When user "participant1" promotes "participant2" in room "room" with 200 (v4) - Then signaling server received the following requests - | token | data | - | room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - # TODO remove handler with "roomModified" in favour of handler with - # "participantsModified" once the clients no longer expect a - # "roomModified" message for participant type changes. - | room | {"type":"update","update":{"userids":["participant1","participant2"],"properties":{"name":"Private conversation","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - | room | {"type":"participants","participants":{"changed":[],"users":[{"inCall":0,"lastPing":0,"sessionId":"0","participantType":1,"participantPermissions":1,"displayName":"participant1-displayname","userId":"participant1"},{"inCall":0,"lastPing":0,"sessionId":"0","participantType":2,"participantPermissions":1,"displayName":"participant2-displayname","userId":"participant2"}]}} | - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 2 | - And user "participant1" demotes "participant2" in room "room" with 200 (v4) - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - - Scenario: Moderator promotes/demotes moderator - 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" adds user "participant3" to room "room" with 200 (v4) - And user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - And user "participant1" loads attendees attendee ids in room "room" (v4) - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant1" sets permissions for "participant3" in room "room" to "L" with 200 (v4) - Then user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | permissions | - | users | participant1 | SJLAVPM | - | users | participant2 | SJLAVPM | - | users | participant3 | CL | - Then user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - When user "participant2" promotes "participant3" in room "room" with 200 (v4) - Then user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 2 | - Then user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | permissions | - | users | participant1 | SJLAVPM | - | users | participant2 | SJLAVPM | - | users | participant3 | SJLAVPM | - When user "participant2" demotes "participant3" in room "room" with 200 (v4) - Then user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - Then user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | permissions | - | users | participant1 | SJLAVPM | - | users | participant2 | SJLAVPM | - | users | participant3 | SJAVPM | - - Scenario: User promotes/demotes moderator - 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" adds user "participant3" to room "room" with 200 (v4) - And user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - And user "participant1" loads attendees attendee ids in room "room" (v4) - When user "participant2" promotes "participant3" in room "room" with 403 (v4) - Then user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - When user "participant1" promotes "participant3" in room "room" with 200 (v4) - Then user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 2 | - When user "participant2" demotes "participant3" in room "room" with 403 (v4) - Then user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 2 | - - Scenario: Stranger promotes/demotes moderator - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - And user "participant1" loads attendees attendee ids in room "room" (v4) - When user "participant2" promotes "participant3" in room "room" with 404 (v4) - Then user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 3 | - When user "participant1" promotes "participant3" in room "room" with 200 (v4) - Then user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 2 | - When user "participant2" demotes "participant3" in room "room" with 404 (v4) - Then user "participant3" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 2 | diff --git a/tests/integration/features/conversation-4/remove-participant.feature b/tests/integration/features/conversation-4/remove-participant.feature deleted file mode 100644 index 3e88dd29c9f..00000000000 --- a/tests/integration/features/conversation-4/remove-participant.feature +++ /dev/null @@ -1,217 +0,0 @@ -Feature: conversation-2/remove-participant - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - -# -# Removing an owner -# - Scenario: Owner removes self participant from empty public room - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" is participant of room "room" (v4) - When user "participant1" removes "participant1" from room "room" with 200 (v4) - Then user "participant1" is not participant of room "room" (v4) - - Scenario: Owner removes self participant from public room when there are other users in the room - 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" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - And user "participant1" loads attendees attendee ids in room "room" (v4) - When user "participant1" removes "participant1" from room "room" with 400 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - - Scenario: Owner removes self participant from public room when there are other moderators in the room - 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 "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant1" removes "participant1" from room "room" with 200 (v4) - Then user "participant1" is not participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - -# -# Removing a moderator -# - Scenario: Owner removes moderator - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant1" promotes "participant3" in room "room" with 200 (v4) - And user "participant3" is participant of room "room" (v4) - When user "participant1" removes "participant3" from room "room" with 200 (v4) - Then user "participant3" is not participant of room "room" (v4) - - Scenario: Moderator removes moderator - 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 "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant1" promotes "participant3" in room "room" with 200 (v4) - And user "participant3" is participant of room "room" (v4) - When user "participant2" removes "participant3" from room "room" with 200 (v4) - Then user "participant3" is not participant of room "room" (v4) - - Scenario: Moderator removes self participant from empty public room - 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 "participant1" removes "participant1" from room "room" with 200 (v4) - And user "participant1" is not participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant2" removes "participant2" from room "room" with 200 (v4) - Then user "participant2" is not participant of room "room" (v4) - - Scenario: Moderator removes self participant from public room when there are other users in the room - 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 "participant1" removes "participant1" from room "room" with 200 (v4) - And user "participant1" is not participant of room "room" (v4) - And user "participant2" adds user "participant3" to room "room" with 200 (v4) - And user "participant2" is participant of room "room" (v4) - And user "participant3" is participant of room "room" (v4) - When user "participant2" removes "participant2" from room "room" with 400 (v4) - Then user "participant2" is participant of room "room" (v4) - And user "participant3" is participant of room "room" (v4) - - Scenario: Moderator removes self participant from public room when there are other moderators in the room - Given signaling server is started - 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 reset signaling server requests - And user "participant1" removes "participant1" from 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":"disinvite","disinvite":{"userids":["participant1"],"alluserids":["participant2"],"properties":{"name":"Private conversation","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"participant-list":"refresh"}}} | - And user "participant1" is not participant of room "room" (v4) - And user "participant2" adds user "participant3" to room "room" with 200 (v4) - And user "participant2" promotes "participant3" in room "room" with 200 (v4) - And user "participant2" is participant of room "room" (v4) - And user "participant3" is participant of room "room" (v4) - When user "participant2" removes "participant2" from room "room" with 200 (v4) - Then user "participant2" is not participant of room "room" (v4) - And user "participant3" is participant of room "room" (v4) - - Scenario: User removes moderator - 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" adds user "participant3" to room "room" with 200 (v4) - And user "participant1" promotes "participant3" in room "room" with 200 (v4) - And user "participant3" is participant of room "room" (v4) - When user "participant2" removes "participant3" from room "room" with 403 (v4) - Then user "participant3" is participant of room "room" (v4) - - Scenario: Stranger removes moderator - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant1" promotes "participant3" in room "room" with 200 (v4) - And user "participant3" is participant of room "room" (v4) - When user "participant2" removes "participant3" from room "room" with 404 (v4) - Then user "participant3" is participant of room "room" (v4) - -# -# Removing a user -# - Scenario: Owner removes user - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant3" is participant of room "room" (v4) - When user "participant1" removes "participant3" from room "room" with 200 (v4) - Then user "participant3" is not participant of room "room" (v4) - - Scenario: Moderator removes user - 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 "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant3" is participant of room "room" (v4) - When user "participant2" removes "participant3" from room "room" with 200 (v4) - Then user "participant3" is not participant of room "room" (v4) - - Scenario: User removes user - 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" adds user "participant3" to room "room" with 200 (v4) - And user "participant3" is participant of room "room" (v4) - And user "participant1" loads attendees attendee ids in room "room" (v4) - When user "participant2" removes "participant3" from room "room" with 403 (v4) - Then user "participant3" is participant of room "room" (v4) - - Scenario: Stranger removes user - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant3" is participant of room "room" (v4) - And user "participant1" loads attendees attendee ids in room "room" (v4) - When user "participant2" removes "participant3" from room "room" with 404 (v4) - Then user "participant3" is participant of room "room" (v4) - -# -# Removing a stranger -# - Scenario: Owner removes stranger - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant3" is not participant of room "room" (v4) - When user "participant1" removes "stranger" from room "room" with 404 (v4) - Then user "participant3" is not participant of room "room" (v4) - - Scenario: Moderator removes stranger - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - When user "participant1" promotes "participant2" in room "room" with 200 (v4) - And user "participant3" is not participant of room "room" (v4) - When user "participant2" removes "stranger" from room "room" with 404 (v4) - Then user "participant3" is not participant of room "room" (v4) - - Scenario: User removes stranger - 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 "participant3" is not participant of room "room" (v4) - When user "participant2" removes "stranger" from room "room" with 403 (v4) - And user "participant3" is not participant of room "room" (v4) - - Scenario: Stranger removes stranger - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant3" is not participant of room "room" (v4) - When user "participant2" removes "stranger" from room "room" with 404 (v4) - And user "participant3" is not participant of room "room" (v4) diff --git a/tests/integration/features/conversation-4/remove-self.feature b/tests/integration/features/conversation-4/remove-self.feature deleted file mode 100644 index caa7e9dd730..00000000000 --- a/tests/integration/features/conversation-4/remove-self.feature +++ /dev/null @@ -1,81 +0,0 @@ -Feature: conversation-2/remove-self - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: Owner removes the room from their room list - 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) - When user "participant1" removes themselves from room "room" with 200 (v4) - Then user "participant1" is not participant of room "room" (v4) - - Scenario: Moderator removes the room from their room list - 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 "participant2" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | users | participant2 | 2 | - And user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant2" removes themselves from room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is not participant of room "room" (v4) - - Scenario: Last moderator removes the room from their room list - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" removes themselves from room "room" with 200 (v4) - Then user "participant2" gets room "room" with 404 (v4) - - Scenario: User removes the room from their room list - 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" removes themselves from room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is not participant of room "room" (v4) - - Scenario: Self joined user removes the room from their room list - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" joins room "room" with 200 (v4) - And user "participant2" is participant of the following rooms (v4) - | id | type | participantType | - | room | 3 | 5 | - And user "participant1" is participant of room "room" (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant2" removes themselves from room "room" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is not participant of room "room" (v4) - - Scenario: Stranger removes the room from their room list - 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" removes themselves from room "room" with 404 (v4) - Then user "participant1" is participant of room "room" (v4) - And user "participant2" is not participant of room "room" (v4) diff --git a/tests/integration/features/conversation-4/rename-room.feature b/tests/integration/features/conversation-4/rename-room.feature deleted file mode 100644 index 8539fc4f7c3..00000000000 --- a/tests/integration/features/conversation-4/rename-room.feature +++ /dev/null @@ -1,46 +0,0 @@ -Feature: conversation-2/rename-room - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: Owner renames - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" is participant of room "room" (v4) - When user "participant1" renames room "room" to "new name" with 200 (v4) - Then user "participant1" is participant of room "room" (v4) - - Scenario: Moderator renames - Given signaling server is started - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" is participant of room "room" (v4) - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant2" is participant of room "room" (v4) - And user "participant1" promotes "participant2" in room "room" with 200 (v4) - And reset signaling server requests - When user "participant2" renames room "room" to "new name" 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","participant2"],"properties":{"name":"Private conversation","type":3,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} | - - Scenario: User renames - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" is participant of room "room" (v4) - And user "participant1" adds user "participant2" to room "room" with 200 (v4) - And user "participant2" is participant of room "room" (v4) - When user "participant2" renames room "room" to "new name" with 403 (v4) - - Scenario: Stranger renames - 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" renames room "room" to "new name" with 404 (v4) diff --git a/tests/integration/features/conversation-5/set-description.feature b/tests/integration/features/conversation-5/set-description.feature deleted file mode 100644 index bc5dab67622..00000000000 --- a/tests/integration/features/conversation-5/set-description.feature +++ /dev/null @@ -1,352 +0,0 @@ -Feature: conversation-2/set-description - Background: - Given user "owner" exists - Given user "moderator" exists - Given user "invited user" exists - Given user "not invited user" exists - Given user "not invited but joined user" exists - Given user "not joined user" exists - - Scenario: a description of 500 characters can be set - Given signaling server is started - Given user "owner" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And reset signaling server requests - When user "owner" sets description for room "group room" to "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C" with 200 (v4) - Then signaling server received the following requests - | token | data | - | group room | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} | - | group room | {"type":"update","update":{"userids":["owner"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":"012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C"}}} | - Then user "owner" is participant of room "group room" (v4) - | description | - | 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C | - - Scenario: a description longer than 500 characters can not be set - Given user "owner" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "owner" sets description for room "group room" to "the description" with 200 (v4) - When user "owner" sets description for room "group room" to "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678C0" with 400 (v4) - Then user "owner" is participant of room "group room" (v4) - | description | - | the description | - - Scenario: a description of 500 multibyte characters can be set - Given user "owner" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - When user "owner" sets description for room "group room" to "०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च" with 200 (v4) - Then user "owner" is participant of room "group room" (v4) - | description | - | ०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च | - - Scenario: a description longer than 500 multibyte characters can not be set - Given user "owner" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "owner" sets description for room "group room" to "the description" with 200 (v4) - When user "owner" sets description for room "group room" to "०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८९०१२३४५६७८च०" with 400 (v4) - Then user "owner" is participant of room "group room" (v4) - | description | - | the description | - - - - Scenario: owner can not set description in one-to-one room - Given user "owner" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | moderator | - When user "owner" sets description for room "one-to-one room" to "the description" with 400 (v4) - And user "moderator" sets description for room "one-to-one room" to "the description" with 400 (v4) - Then user "owner" is participant of room "one-to-one room" (v4) - | description | - | | - And user "moderator" is participant of room "one-to-one room" (v4) - | description | - | | - - - - Scenario: owner can set description 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) - When user "owner" sets description for room "group room" to "the description" with 200 (v4) - Then user "owner" is participant of room "group room" (v4) - | description | - | the description | - And user "moderator" is participant of room "group room" (v4) - | description | - | the description | - And user "invited user" is participant of room "group room" (v4) - | description | - | the description | - - Scenario: moderator can set description 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) - When user "moderator" sets description for room "group room" to "the description" with 200 (v4) - Then user "owner" is participant of room "group room" (v4) - | description | - | the description | - And user "moderator" is participant of room "group room" (v4) - | description | - | the description | - And user "invited user" is participant of room "group room" (v4) - | description | - | the description | - - Scenario: others can not set description 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" sets description for room "group room" to "the description" with 200 (v4) - When user "invited user" sets description for room "group room" to "invited user description" with 403 (v4) - And user "not invited user" sets description for room "group room" to "not invited user description" with 404 (v4) - # Guest user names in tests must being with "guest" - And user "guest not joined" sets description for room "group room" to "guest not joined description" with 404 (v4) - Then user "owner" is participant of room "group room" (v4) - | description | - | the description | - And user "moderator" is participant of room "group room" (v4) - | description | - | the description | - And user "invited user" is participant of room "group room" (v4) - | description | - | the description | - - - - Scenario: owner can set description 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) - When user "owner" sets description for room "public room" to "the description" with 200 (v4) - Then user "owner" is participant of room "public room" (v4) - | description | - | the description | - And user "moderator" is participant of room "public room" (v4) - | description | - | the description | - And user "invited user" is participant of room "public room" (v4) - | description | - | the description | - And user "not invited but joined user" is participant of room "public room" (v4) - | description | - | the description | - And user "guest moderator" is participant of room "public room" (v4) - | description | - | the description | - And user "guest" is participant of room "public room" (v4) - | description | - | the description | - - Scenario: moderator can set description 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) - When user "moderator" sets description for room "public room" to "the description" with 200 (v4) - Then user "owner" is participant of room "public room" (v4) - | description | - | the description | - And user "moderator" is participant of room "public room" (v4) - | description | - | the description | - And user "invited user" is participant of room "public room" (v4) - | description | - | the description | - And user "not invited but joined user" is participant of room "public room" (v4) - | description | - | the description | - And user "guest moderator" is participant of room "public room" (v4) - | description | - | the description | - And user "guest" is participant of room "public room" (v4) - | description | - | the description | - - Scenario: guest moderator can set description 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) - When user "guest moderator" sets description for room "public room" to "the description" with 200 (v4) - Then user "owner" is participant of room "public room" (v4) - | description | - | the description | - And user "moderator" is participant of room "public room" (v4) - | description | - | the description | - And user "invited user" is participant of room "public room" (v4) - | description | - | the description | - And user "not invited but joined user" is participant of room "public room" (v4) - | description | - | the description | - And user "guest moderator" is participant of room "public room" (v4) - | description | - | the description | - And user "guest" is participant of room "public room" (v4) - | description | - | the description | - - Scenario: others can not set description 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" sets description for room "public room" to "the description" with 200 (v4) - When user "invited user" sets description for room "public room" to "invited user description" with 403 (v4) - And user "not invited but joined user" sets description for room "public room" to "not invited but joined description" with 403 (v4) - And user "not joined user" sets description for room "public room" to "not joined user description" with 404 (v4) - And user "guest" sets description for room "public room" to "guest description" with 403 (v4) - # Guest user names in tests must being with "guest" - And user "guest not joined" sets description for room "public room" to "guest not joined description" with 404 (v4) - Then user "owner" is participant of room "public room" (v4) - | description | - | the description | - And user "moderator" is participant of room "public room" (v4) - | description | - | the description | - And user "invited user" is participant of room "public room" (v4) - | description | - | the description | - And user "not invited but joined user" is participant of room "public room" (v4) - | description | - | the description | - And user "guest moderator" is participant of room "public room" (v4) - | description | - | the description | - And user "guest" is participant of room "public room" (v4) - | description | - | the description | - - - - Scenario: participants can not set description 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) - When user "owner of file" sets description for room "file last share room" to "owner of file description" with 403 (v4) - And user "user with access to file" sets description for room "file last share room" to "user with access to file description" with 403 (v4) - And user "guest" sets description for room "file last share room" to "guest description" with 403 (v4) - Then user "owner of file" is participant of room "file last share room" (v4) - | description | - | | - And user "user with access to file" is participant of room "file last share room" (v4) - | description | - | | - And user "guest" is participant of room "file last share room" (v4) - | description | - | | - - - - Scenario: owner can set description 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) - When user "owner of file" sets description for room "password request for last share room" to "the description" with 200 (v4) - Then user "owner of file" is participant of room "password request for last share room" (v4) - | description | - | the description | - And user "guest" is participant of room "password request for last share room" (v4) - | description | - | the description | - - - - Scenario: room list returns the description if the description is set - Given user "owner" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "owner" adds user "moderator" to room "public room" with 200 (v4) - And user "owner" promotes "moderator" in room "public room" with 200 (v4) - And user "owner" adds user "invited user" to room "public room" with 200 (v4) - And user "not invited but joined user" joins room "public room" with 200 (v4) - When user "owner" sets description for room "public room" to "the description" with 200 (v4) - Then user "owner" is participant of the following rooms (v4) - | name | description | - | room | the description | - And user "moderator" is participant of the following rooms (v4) - | name | description | - | room | the description | - And user "invited user" is participant of the following rooms (v4) - | name | description | - | room | the description | - And user "not invited but joined user" is participant of the following rooms (v4) - | name | description | - | room | the description | - - Scenario: room list returns an empty value if the description is not set - Given user "owner" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "owner" adds user "moderator" to room "public room" with 200 (v4) - And user "owner" promotes "moderator" in room "public room" with 200 (v4) - And user "owner" adds user "invited user" to room "public room" with 200 (v4) - And user "not invited but joined user" joins room "public room" with 200 (v4) - When user "owner" sets description for room "public room" to "" with 200 (v4) - Then user "owner" is participant of the following rooms (v4) - | name | description | - | room | | - And user "moderator" is participant of the following rooms (v4) - | name | description | - | room | | - And user "invited user" is participant of the following rooms (v4) - | name | description | - | room | | - And user "not invited but joined user" is participant of the following rooms (v4) - | name | description | - | room | | diff --git a/tests/integration/features/conversation-5/set-listable.feature b/tests/integration/features/conversation-5/set-listable.feature deleted file mode 100644 index a5c648a29b0..00000000000 --- a/tests/integration/features/conversation-5/set-listable.feature +++ /dev/null @@ -1,68 +0,0 @@ -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 "" with 200 (v4) - Then user "creator" is participant of the following rooms (v4) - | id | type | listable | - | room | 2 | | - 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 | - 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) diff --git a/tests/integration/features/conversation-5/set-participant-permissions.feature b/tests/integration/features/conversation-5/set-participant-permissions.feature deleted file mode 100644 index 5a402928aa7..00000000000 --- a/tests/integration/features/conversation-5/set-participant-permissions.feature +++ /dev/null @@ -1,431 +0,0 @@ -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 | - 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 | diff --git a/tests/integration/features/conversation-5/set-password.feature b/tests/integration/features/conversation-5/set-password.feature deleted file mode 100644 index 054041705e6..00000000000 --- a/tests/integration/features/conversation-5/set-password.feature +++ /dev/null @@ -1,80 +0,0 @@ -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) diff --git a/tests/integration/features/conversation-5/set-permissions.feature b/tests/integration/features/conversation-5/set-permissions.feature deleted file mode 100644 index 1005cda7ad2..00000000000 --- a/tests/integration/features/conversation-5/set-permissions.feature +++ /dev/null @@ -1,151 +0,0 @@ -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: Owner and moderators can set call 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) - When user "owner" sets call permissions for room "group room" to "S" with 200 (v4) - When user "moderator" sets call permissions for room "group room" to "AV" with 200 (v4) - When user "invited user" sets call 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 | - When user "owner" sets call 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 | - | users | owner | SJLAVPM | - | users | invited user | CA | - 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 | CA | - When user "owner" sets call 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 | 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 call 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 call 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 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 default permissions does not reset call 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 call permissions for 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 | D | - 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 | CV | 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 | diff --git a/tests/integration/features/conversation-5/sip-dialin.feature b/tests/integration/features/conversation-5/sip-dialin.feature deleted file mode 100644 index 1d70da42113..00000000000 --- a/tests/integration/features/conversation-5/sip-dialin.feature +++ /dev/null @@ -1,75 +0,0 @@ -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 | 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 | 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 | 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 | 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 | | diff --git a/tests/integration/features/conversation-5/sip-dialout.feature b/tests/integration/features/conversation-5/sip-dialout.feature deleted file mode 100644 index 5ad447fe940..00000000000 --- a/tests/integration/features/conversation-5/sip-dialout.feature +++ /dev/null @@ -1,41 +0,0 @@ -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) diff --git a/tests/integration/features/federation/chat.feature b/tests/integration/features/federation/chat.feature deleted file mode 100644 index 616e91ec749..00000000000 --- a/tests/integration/features/federation/chat.feature +++ /dev/null @@ -1,427 +0,0 @@ -Feature: federation/chat - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: Get mention suggestions (translating local users to federated users) - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 2 | - And user "participant1" gets the following candidate mentions in room "room" for "" with 200 - | source | id | label | mentionId | - | calls | all | room | all | - | federated_users | participant2@{$REMOTE_URL} | participant2-displayname | federated_user/participant2@{$REMOTE_URL} | - | users | participant3 | participant3-displayname | participant3 | - And user "participant2" gets the following candidate mentions in room "LOCAL::room" for "" with 200 - | source | id | label | mentionId | - | calls | all | room | all | - | federated_users | participant1@{$BASE_URL} | participant1-displayname | participant1 | - | federated_users | participant3@{$BASE_URL} | participant3-displayname | participant3 | - - Scenario: Get mention suggestions (translating federated users of the same server to local users) - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant1" adds federated_user "participant3" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - And user "participant3" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant3" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 2 | - And user "participant1" gets the following candidate mentions in room "room" for "" with 200 - | source | id | label | mentionId | - | calls | all | room | all | - | federated_users | participant2@{$REMOTE_URL} | participant2-displayname | federated_user/participant2@{$REMOTE_URL} | - | federated_users | participant3@{$REMOTE_URL} | participant3-displayname | federated_user/participant3@{$REMOTE_URL} | - And user "participant2" gets the following candidate mentions in room "LOCAL::room" for "" with 200 - | source | id | label | mentionId | - | calls | all | room | all | - | federated_users | participant1@{$BASE_URL} | participant1-displayname | participant1 | - | users | participant3 | participant3-displayname | federated_user/participant3@{$REMOTE_URL} | - - Scenario: Basic chatting including posting, getting, editing and deleting - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant1" adds federated_user "participant3" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - And user "participant3" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant3" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | lastMessage | - | room | 2 | {federated_user} accepted the invitation | - And user "participant1" sends message "Message 1" to room "room" with 201 - Then user "participant2" is participant of the following rooms (v4) - | id | type | lastMessage | - | room | 2 | Message 1 | - When user "participant2" sends reply "Message 1-1" on message "Message 1" to room "LOCAL::room" with 201 - Then user "participant2" is participant of the following rooms (v4) - | id | type | lastMessage | - | room | 2 | Message 1-1 | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | federated_users | participant2@{$REMOTE_URL} | participant2-displayname | Message 1-1 | [] | Message 1 | - | room | users | participant1 | participant1-displayname | Message 1 | [] | | - When next message request has the following parameters set - | timeout | 0 | - And user "participant2" sees the following messages in room "LOCAL::room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant2 | participant2-displayname | Message 1-1 | [] | Message 1 | - | room | federated_users | participant1@{$BASE_URL} | participant1-displayname | Message 1 | [] | | - And user "participant1" edits message "Message 1" in room "room" to "Message 1 - Edit 1" with 200 - And user "participant2" edits message "Message 1-1" in room "LOCAL::room" to "Message 1-1 - Edit 1" with 200 - Then user "participant2" is participant of the following rooms (v4) - | id | type | lastMessage | - | room | 2 | Message 1-1 - Edit 1 | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | lastEditActorType | lastEditActorId | lastEditActorDisplayName | - | room | federated_users | participant2@{$REMOTE_URL} | participant2-displayname | Message 1-1 - Edit 1 | [] | Message 1 - Edit 1 | federated_users | participant2@{$REMOTE_URL} | participant2-displayname | - | room | users | participant1 | participant1-displayname | Message 1 - Edit 1 | [] | | users | participant1 | participant1-displayname | - When next message request has the following parameters set - | timeout | 0 | - And user "participant2" sees the following messages in room "LOCAL::room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | lastEditActorType | lastEditActorId | lastEditActorDisplayName | - | room | users | participant2 | participant2-displayname | Message 1-1 - Edit 1 | [] | Message 1 - Edit 1 | users | participant2 | participant2-displayname | - | room | federated_users | participant1@{$BASE_URL} | participant1-displayname | Message 1 - Edit 1 | [] | | federated_users | participant1@{$BASE_URL} | participant1-displayname | - And user "participant1" deletes message "Message 1 - Edit 1" from room "room" with 200 - And user "participant2" deletes message "Message 1-1 - Edit 1" from room "LOCAL::room" with 200 - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | federated_users | participant2@{$REMOTE_URL} | participant2-displayname | Message deleted by author | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname","server":"{$REMOTE_URL}"}} | Message deleted by you | - | room | users | participant1 | participant1-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | | - When next message request has the following parameters set - | timeout | 0 | - And user "participant2" sees the following messages in room "LOCAL::room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | parentMessage | - | room | users | participant2 | participant2-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname"}} | Message deleted by author | - | room | federated_users | participant1@{$BASE_URL} | participant1-displayname | Message deleted by author | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname","server":"{$BASE_URL}"}} | | - Then user "participant2" is participant of the following rooms (v4) - | id | type | lastMessage | - | room | 2 | Message deleted by author | - - Scenario: Last message actor when the same user ID is present - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant1" to room "room" with 200 (v4) - And user "participant1" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant1" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant1" is participant of the following unordered rooms (v4) - | id | name | type | remoteServer | remoteToken | lastMessage | - | room | room | 2 | | | {actor} invited you | - | room | room | 2 | LOCAL | room | {federated_user} accepted the invitation | - And user "participant1" sends message "Message 1" to room "room" with 201 - Then user "participant1" is participant of the following unordered rooms (v4) - | id | name | type | remoteServer | remoteToken | lastMessage | lastMessageActorType | lastMessageActorId | - | room | room | 2 | | | Message 1 | users | participant1 | - | room | room | 2 | LOCAL | room | Message 1 | federated_users | participant1@{$BASE_URL} | - When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "LOCAL::room" with 201 - Then user "participant1" is participant of the following unordered rooms (v4) - | id | name | type | remoteServer | remoteToken | lastMessage | lastMessageActorType | lastMessageActorId | - | room | room | 2 | | | Message 1-1 | federated_users | participant1@{$REMOTE_URL} | - | room | room | 2 | LOCAL | room | Message 1-1 | users | participant1 | - - Scenario: Read marker checking - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant1" adds federated_user "participant3" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - And user "participant3" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant3" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | lastReadMessage | unreadMessages | unreadMention | unreadMentionDirect | - | room | 2 | UNKNOWN_MESSAGE | 0 | 0 | 0 | - And user "participant1" sends message "Message 1" to room "room" with 201 - And user "participant1" sends message "Message 2" to room "room" with 201 - When user "participant2" marks room "LOCAL::room" as unread with 200 (v1) - Then user "participant2" is participant of the following rooms (v4) - | id | type | lastReadMessage | unreadMessages | unreadMention | unreadMentionDirect | - | room | 2 | Message 1 | 1 | 0 | 0 | - When user "participant2" reads message "NULL" in room "LOCAL::room" with 200 (v1) - Then user "participant2" is participant of the following rooms (v4) - | id | type | lastReadMessage | unreadMessages | unreadMention | unreadMentionDirect | - | room | 2 | Message 2 | 0 | 0 | 0 | - When user "participant2" reads message "Message 1" in room "LOCAL::room" with 200 (v1) - Then user "participant2" is participant of the following rooms (v4) - | id | type | lastReadMessage | unreadMessages | unreadMention | unreadMentionDirect | - | room | 2 | Message 1 | 1 | 0 | 0 | - When user "participant2" reads message "Message 2" in room "LOCAL::room" with 200 (v1) - Then user "participant2" is participant of the following rooms (v4) - | id | type | lastReadMessage | unreadMessages | unreadMention | unreadMentionDirect | - | room | 2 | Message 2 | 0 | 0 | 0 | - - Scenario: Error handling of chatting (posting a too long message) - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 2 | - And user "participant2" sends message "413 Payload Too Large" to room "LOCAL::room" with 413 - - Scenario: Mentioning a federated user triggers a notification for them - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "LOCAL::room" with 200 (v4) - Given user "participant2" leaves room "LOCAL::room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "LOCAL::room" with 201 - Then user "participant2" sees the following entries for dashboard widgets "spreed" (v1) - | title | subtitle | link | iconUrl | sinceId | overlayIconUrl | - Then user "participant2" sees the following entries for dashboard widgets "spreed" (v2) - | title | subtitle | link | iconUrl | sinceId | overlayIconUrl | - | room | Message 1 | LOCAL::room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - When user "participant1" sends reply "Message 1-1" on message "Message 1" to room "room" with 201 - Then user "participant2" sees the following entries for dashboard widgets "spreed" (v1) - | title | subtitle | link | iconUrl | sinceId | overlayIconUrl | - | room | You were mentioned | LOCAL::room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - Then user "participant2" sees the following entries for dashboard widgets "spreed" (v2) - | title | subtitle | link | iconUrl | sinceId | overlayIconUrl | - | room | You were mentioned | LOCAL::room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - And user "participant1" sends message 'Hi @"federated_user/participant2@{$REMOTE_URL}" bye' to room "room" with 201 - And user "participant1" sends message 'Hi @all bye' to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | chat | room/Hi @all bye | participant1-displayname mentioned everyone in conversation room | Hi room bye | - | spreed | chat | room/Hi @"federated_user/participant2@{$REMOTE_URL}" bye | participant1-displayname mentioned you in conversation room | Hi @participant2-displayname bye | - | spreed | chat | room/Message 1-1 | participant1-displayname replied to your message in conversation room | Message 1-1 | - When next message request has the following parameters set - | timeout | 0 | - | lookIntoFuture | 1 | - | lastKnownMessageId | Hi @all bye | - And user "participant2" sees the following messages in room "LOCAL::room" with 304 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - - Scenario: Mentioning a federated user as a guest also triggers a notification for them - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 3 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 3 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "LOCAL::room" with 200 (v4) - Given user "participant2" leaves room "LOCAL::room" with 200 (v4) - And user "guest" joins room "room" with 200 (v4) - When user "guest" sends message 'Hi @"federated_user/participant2@{$REMOTE_URL}" bye' to room "room" with 201 - When user "guest" sends message "Message 2" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | chat | room/Hi @"federated_user/participant2@{$REMOTE_URL}" bye | A guest mentioned you in conversation room | Hi @participant2-displayname bye | - Then user "participant2" reads message "Message 2" in room "LOCAL::room" with 200 (v1) - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - - Scenario: Mentioning a federated user as a federated user that is a local user to the mentioned one also triggers a notification for them - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 3 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 3 | - And user "participant1" adds federated_user "participant3" to room "room" with 200 (v4) - And user "participant3" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant3" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 3 | LOCAL | room | - Then user "participant3" is participant of the following rooms (v4) - | id | type | - | room | 3 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "LOCAL::room" with 200 (v4) - Given user "participant2" leaves room "LOCAL::room" with 200 (v4) - When user "participant3" sends message 'Hi @"federated_user/participant2@{$REMOTE_URL}" bye' to room "LOCAL::room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | chat | room/Hi @"federated_user/participant2@{$REMOTE_URL}" bye | participant3-displayname mentioned you in conversation room | Hi @participant2-displayname bye | - - Scenario: Mentioning and replying to self does not do notifications - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 3 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 3 | - And user "participant1" adds federated_user "participant3" to room "room" with 200 (v4) - And user "participant3" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant3" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 3 | LOCAL | room | - Then user "participant3" is participant of the following rooms (v4) - | id | type | - | room | 3 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "LOCAL::room" with 200 (v4) - Given user "participant2" leaves room "LOCAL::room" with 200 (v4) - When user "participant2" sends message 'Hi @"federated_user/participant2@{$REMOTE_URL}" bye' to room "LOCAL::room" with 201 - And user "participant2" sends message "Message 1" to room "LOCAL::room" with 201 - When user "participant2" sends reply "Message 1-1" on message "Message 1" to room "LOCAL::room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - - Scenario: System messages don't trigger notifications - Given the following "spreed" app config is set - | federation_enabled | yes | - And user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 3 | LOCAL | room | - And user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 3 | - And user "participant1" sends message "Message 1" to room "room" with 201 - When user "participant2" sets notifications to all for room "LOCAL::room" (v4) - And user "participant1" sets description for room "room" to "the description" with 200 (v4) - And user "participant1" react with "🚀" on message "Message 1" to room "room" with 201 - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - - Scenario: Reaction on federated chat messages - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 2 | - # Join and leave to clear the invite notification - Given user "participant2" joins room "LOCAL::room" with 200 (v4) - Given user "participant2" leaves room "LOCAL::room" with 200 (v4) - And user "participant2" sends message "Message 1" to room "LOCAL::room" with 201 - And user "participant1" react with "🚀" on message "Message 1" to room "room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | users | participant1 | participant1-displayname | 🚀 | - And user "participant2" react with "🚀" on message "Message 1" to room "LOCAL::room" with 201 - | actorType | actorId | actorDisplayName | reaction | - | federated_users | participant1@{$BASE_URL} | participant1-displayname | 🚀 | - | users | participant2 | participant2-displayname | 🚀 | - And user "participant1" retrieve reactions "all" of message "Message 1" in room "room" with 200 - | actorType | actorId | actorDisplayName | reaction | - | users | participant1 | participant1-displayname | 🚀 | - | federated_users | participant2@{$REMOTE_URL} | participant2-displayname | 🚀 | diff --git a/tests/integration/features/federation/invite.feature b/tests/integration/features/federation/invite.feature deleted file mode 100644 index 43308d2cf4e..00000000000 --- a/tests/integration/features/federation/invite.feature +++ /dev/null @@ -1,325 +0,0 @@ -Feature: federation/invite - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Federation is disabled - Given the following "spreed" app config is set - | federation_enabled | no | - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 501 (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - - Scenario: Invite an invalid user - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "invalid-user" to room "room" with 404 (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - - Scenario: Accepting an invite - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | federated_users | participant2 | 3 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - Then user "participant2" is participant of the following rooms (v4) - | id | name | type | - Then last response has federation invites header set to "1" - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | federated_users | participant2 | 3 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - And force run "OCA\Talk\BackgroundJob\RemoveEmptyRooms" background jobs - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | remote_talk_share | INVITE_ID(LOCAL::room) | @participant1-displayname invited you to a federated conversation | @participant1-displayname invited you to join room on http://localhost:8080 | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 3 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | name | type | remoteServer | remoteToken | - | room | room | 3 | LOCAL | room | - Then last response has federation invites header set to "NULL" - And user "participant2" accepts invite to room "room" of server "LOCAL" with 400 (v1) - | error | state | - And user "participant2" declines invite to room "room" of server "LOCAL" with 400 (v1) - | error | state | - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 1 | participant1@http://localhost:8080 | participant1-displayname | - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | federated_users | participant2 | 3 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | federated_users | participant2@http://localhost:8180 | federated_user_added | {federated_user} accepted the invitation | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname","server":"http:\/\/localhost:8180"},"federated_user":{"type":"user","id":"participant2","name":"participant2-displayname","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2-displayname","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - # Remove a remote user after they joined - When user "participant1" removes remote "participant2" from room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - Then user "participant2" is participant of the following rooms (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_removed | You removed {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | federated_users | participant2@http://localhost:8180 | federated_user_added | {federated_user} accepted the invitation | {"actor":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Invite user with wrong casing - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "PARTICIPANT2" to room "room" with 200 (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | federated_users | PARTICIPANT2 | 3 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"PARTICIPANT2","name":"PARTICIPANT2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - And user "participant1" adds federated_user "participant2" to room "room" with 404 (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | federated_users | PARTICIPANT2 | 3 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"PARTICIPANT2","name":"PARTICIPANT2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - And force run "OCA\Talk\BackgroundJob\RemoveEmptyRooms" background jobs - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | localCloudId | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | PARTICIPANT2@http://localhost:8180 | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | remote_talk_share | INVITE_ID(LOCAL::room) | @participant1-displayname invited you to a federated conversation | @participant1-displayname invited you to join room on http://localhost:8080 | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 3 | LOCAL | room | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 400 (v1) - | error | state | - And user "participant2" declines invite to room "room" of server "LOCAL" with 400 (v1) - | error | state | - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 1 | participant1@http://localhost:8080 | participant1-displayname | - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | federated_users | participant2 | 3 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | federated_users | participant2@http://localhost:8180 | federated_user_added | {federated_user} accepted the invitation | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname","server":"http:\/\/localhost:8180"},"federated_user":{"type":"user","id":"participant2","name":"participant2-displayname","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"PARTICIPANT2","name":"PARTICIPANT2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - # Remove a remote user after they joined - When user "participant1" removes remote "participant2" from room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - Then user "participant2" is participant of the following rooms (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_removed | You removed {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | federated_users | participant2@http://localhost:8180 | federated_user_added | {federated_user} accepted the invitation | {"actor":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"PARTICIPANT2","name":"PARTICIPANT2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Declining an invite - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | federated_users | participant2 | 3 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | remote_talk_share | INVITE_ID(LOCAL::room) | @participant1-displayname invited you to a federated conversation | @participant1-displayname invited you to join room on http://localhost:8080 | - And user "participant2" declines invite to room "room" of server "LOCAL" with 200 (v1) - And user "participant2" declines invite to room "room" of server "LOCAL" with 404 (v1) - | error | invitation | - And user "participant2" has the following invitations (v1) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | federated_users | participant2@http://localhost:8180 | federated_user_removed | {federated_user} declined the invitation | {"actor":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Remove remote user before they accept - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | federated_users | participant2 | 3 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - And force run "OCA\Talk\BackgroundJob\RemoveEmptyRooms" background jobs - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | remote_talk_share | INVITE_ID(LOCAL::room) | @participant1-displayname invited you to a federated conversation | @participant1-displayname invited you to join room on http://localhost:8080 | - When user "participant1" removes remote "participant2" from room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - Then user "participant2" is participant of the following rooms (v4) - Then user "participant2" has the following notifications - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_removed | You removed {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: User leaves after accepting - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | federated_users | participant2 | 3 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - | federated_users | participant2 | 3 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - And force run "OCA\Talk\BackgroundJob\RemoveEmptyRooms" background jobs - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - Then user "participant2" has the following notifications - | app | object_type | object_id | subject | message | - | spreed | remote_talk_share | INVITE_ID(LOCAL::room) | @participant1-displayname invited you to a federated conversation | @participant1-displayname invited you to join room on http://localhost:8080 | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 3 | LOCAL | room | - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 1 | participant1@http://localhost:8080 | participant1-displayname | - # Remote user removes themselves after they joined - And user "participant2" removes themselves from room "LOCAL::room" with 200 (v4) - And user "participant2" has the following invitations (v1) - Then user "participant2" is participant of the following rooms (v4) - When user "participant1" sees the following attendees in room "room" with 200 (v4) - | actorType | actorId | participantType | - | users | participant1 | 1 | - Then user "participant1" sees the following system messages in room "room" with 200 - | room | actorType | actorId | systemMessage | message | messageParameters | - | room | federated_users | participant2@http://localhost:8180 | federated_user_removed | {federated_user} declined the invitation | {"actor":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | federated_users | participant2@http://localhost:8180 | federated_user_added | {federated_user} accepted the invitation | {"actor":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | federated_user_added | You invited {federated_user} | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"},"federated_user":{"type":"user","id":"participant2","name":"participant2@localhost:8180","server":"http:\/\/localhost:8180"}} | - | room | users | participant1 | conversation_created | You created the conversation | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | - - Scenario: Federate conversation meta data - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | name | type | - | room | room | 2 | - And user "participant1" renames room "room" to "Federated room" with 200 (v4) - Then user "participant2" is participant of the following rooms (v4) - | id | name | type | - | room | Federated room | 2 | - - Scenario: Allow accessing conversation and room avatars for invited users - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - When as user "participant2" - Then the room "LOCAL::room" has an avatar with 200 - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - When as user "participant2" - Then the room "LOCAL::room" has an avatar with 200 - And user "participant2" removes themselves from room "LOCAL::room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - When as user "participant2" - Then the room "LOCAL::room" has an avatar with 404 diff --git a/tests/integration/features/federation/ocm.feature b/tests/integration/features/federation/ocm.feature deleted file mode 100644 index 9333e9f3e6e..00000000000 --- a/tests/integration/features/federation/ocm.feature +++ /dev/null @@ -1,17 +0,0 @@ -Feature: federation/ocm - Background: - Given user "participant1" exists - - Scenario: Check that the OCM resource is not registered when federation is disabled - Given the following "spreed" app config is set - | federation_enabled | no | - Then OCM provider does not have the following resource types - | name | shareTypes | protocols | - | talk-room | ["user"] | {"talk-v1":"/ocs/v2.php/apps/spreed/api/"} | - - Scenario: Check that the OCM resource is registered when federation is enabled - Given the following "spreed" app config is set - | federation_enabled | yes | - Given OCM provider has the following resource types - | name | shareTypes | protocols | - | talk-room | ["user"] | {"talk-v1":"/ocs/v2.php/apps/spreed/api/"} | diff --git a/tests/integration/features/federation/poll.feature b/tests/integration/features/federation/poll.feature deleted file mode 100644 index 89925cdf2ec..00000000000 --- a/tests/integration/features/federation/poll.feature +++ /dev/null @@ -1,109 +0,0 @@ -Feature: federation/poll - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Create a public poll without max votes limit - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 2 | - When user "participant2" creates a poll in room "LOCAL::room" with 201 - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | resultMode | public | - | maxVotes | unlimited | - Then user "participant1" sees the following messages in room "room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | room | federated_users | participant2@{$REMOTE_URL} | participant2-displayname | {object} | {"actor":{"type":"user","id":"participant2","name":"participant2-displayname","server":"http:\/\/localhost:8180"},"object":{"type":"talk-poll","id":POLL_ID(What is the question?),"name":"What is the question?"}} | - Then user "participant2" sees poll "What is the question?" in room "LOCAL::room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 0 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant2 | - | actorDisplayName | participant2-displayname | - | status | open | - | votedSelf | not voted | - Then user "participant1" votes for options "[1]" on poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | federated_users | - | actorId | participant2@{$REMOTE_URL} | - | actorDisplayName | participant2-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant1" sees poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | federated_users | - | actorId | participant2@{$REMOTE_URL} | - | actorDisplayName | participant2-displayname | - | status | open | - | votedSelf | [1] | - Then user "participant2" sees poll "What is the question?" in room "LOCAL::room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | [] | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant2 | - | actorDisplayName | participant2-displayname | - | status | open | - | votedSelf | not voted | - Then user "participant2" closes poll "What is the question?" in room "LOCAL::room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | users | - | actorId | participant2 | - | actorDisplayName | participant2-displayname | - | status | closed | - | votedSelf | not voted | - | details | [{"actorType":"federated_users","actorId":"participant1@{$BASE_URL}","actorDisplayName":"participant1-displayname","optionId":1}] | - Then user "participant1" sees poll "What is the question?" in room "room" with 200 - | id | POLL_ID(What is the question?) | - | question | What is the question? | - | options | ["Where are you?","How much is the fish?"] | - | votes | {"option-1":1} | - | numVoters | 1 | - | resultMode | public | - | maxVotes | unlimited | - | actorType | federated_users | - | actorId | participant2@{$REMOTE_URL} | - | actorDisplayName | participant2-displayname | - | status | closed | - | votedSelf | [1] | - | details | [{"actorType":"users","actorId":"participant1","actorDisplayName":"participant1-displayname","optionId":1}] | diff --git a/tests/integration/features/federation/reminder.feature b/tests/integration/features/federation/reminder.feature deleted file mode 100644 index 7dc4af5aea6..00000000000 --- a/tests/integration/features/federation/reminder.feature +++ /dev/null @@ -1,75 +0,0 @@ -Feature: federation/reminder - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: Get mention suggestions (translating local users to federated users) - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" sends message "Message 1" to room "room" with 201 - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 2 | - And user "participant2" joins room "LOCAL::room" with 200 (v4) - And user "participant2" leaves room "LOCAL::room" with 200 (v4) - And user "participant2" sends message "Message 2" to room "LOCAL::room" with 201 - When user "participant1" sets reminder for message "Message 2" in room "room" for time 2133349024 with 201 (v1) - And user "participant2" sets reminder for message "Message 1" in room "LOCAL::room" for time 1234567 with 201 (v1) - And user "participant1" has the following notifications - | app | object_type | object_id | subject | - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - And force run "OCA\Talk\BackgroundJob\Reminder" background jobs - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 1 | Reminder: participant1-displayname in conversation room | - # Participant1 sets timestamp to past so it should trigger now - When user "participant1" sets reminder for message "Message 2" in room "room" for time 1234567 with 201 (v1) - And force run "OCA\Talk\BackgroundJob\Reminder" background jobs - Then user "participant1" has the following notifications - | app | object_type | object_id | subject | - | spreed | reminder | room/Message 2 | Reminder: participant2-displayname in conversation room | - And user "participant2" deletes reminder for message "Message 1" in room "LOCAL::room" with 200 (v1) - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - - Scenario: Deleting reminder before the job is executed never triggers a notification - Given the following "spreed" app config is set - | federation_enabled | yes | - Given user "participant1" creates room "room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" sends message "Message 1" to room "room" with 201 - And user "participant1" adds federated_user "participant2" to room "room" with 200 (v4) - And user "participant1" adds user "participant3" to room "room" with 200 (v4) - And user "participant2" has the following invitations (v1) - | remoteServerUrl | remoteToken | state | inviterCloudId | inviterDisplayName | - | LOCAL | room | 0 | participant1@http://localhost:8080 | participant1-displayname | - And user "participant2" accepts invite to room "room" of server "LOCAL" with 200 (v1) - | id | name | type | remoteServer | remoteToken | - | room | room | 2 | LOCAL | room | - Then user "participant2" is participant of the following rooms (v4) - | id | type | - | room | 2 | - And user "participant2" joins room "LOCAL::room" with 200 (v4) - And user "participant2" leaves room "LOCAL::room" with 200 (v4) - When user "participant2" sets reminder for message "Message 1" in room "LOCAL::room" for time 1234567 with 201 (v1) - And user "participant2" deletes reminder for message "Message 1" in room "LOCAL::room" with 200 (v1) - And user "participant2" has the following notifications - | app | object_type | object_id | subject | - And force run "OCA\Talk\BackgroundJob\Reminder" background jobs - And user "participant2" has the following notifications - | app | object_type | object_id | subject | diff --git a/tests/integration/features/integration/capabilities.feature b/tests/integration/features/integration/capabilities.feature deleted file mode 100644 index 15fa0dda0a7..00000000000 --- a/tests/integration/features/integration/capabilities.feature +++ /dev/null @@ -1,8 +0,0 @@ -Feature: integration/dashboard - Background: - Given user "participant1" exists - - Scenario: Check that users can read the capabilities as XML - Given as user "participant1" - When sending "GET" to "/cloud/capabilities" for xml with - Then last response body contains "\n 1_office.jpg" with newlines diff --git a/tests/integration/features/integration/dashboard.feature b/tests/integration/features/integration/dashboard.feature deleted file mode 100644 index da51558ae14..00000000000 --- a/tests/integration/features/integration/dashboard.feature +++ /dev/null @@ -1,72 +0,0 @@ -Feature: integration/dashboard - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: User gets the available dashboard widgets - When user "participant1" sees the following entry when loading the list of dashboard widgets (v1) - | id | title | icon_class | icon_url | widget_url | item_icons_round | order | buttons | item_api_versions | reload_interval | - | spreed | Talk mentions | dashboard-talk-icon | img/app-dark.svg | {$BASE_URL}index.php/apps/spreed/ | true | 10 | [{"type":"more","text":"More conversations","link":"{$BASE_URL}index.php/apps/spreed/"}] | [1,2] | 30 | - - Scenario: User gets the dashboard widget content - When user "participant1" sees the following entries for dashboard widgets "spreed" (v1) - | title | subtitle | link | iconUrl | - When user "participant1" sees the following entries for dashboard widgets "spreed" (v2) - | title | subtitle | link | iconUrl | - Given user "participant2" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant1 | - Given user "participant1" creates room "former one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" is deleted - And user "participant2" sends message "Hello" to room "one-to-one room" with 201 - And wait for 1 second - Given user "participant2" creates room "group room" (v4) - | roomType | 2 | - | roomName | group room | - And user "participant2" adds user "participant1" to room "group room" with 200 (v4) - And user "participant2" sends message "Hello @all" to room "group room" with 201 - And wait for 1 second - Given user "participant2" creates room "call room" (v4) - | roomType | 3 | - | roomName | call room | - And user "participant2" adds user "participant1" to room "call room" with 200 (v4) - And user "participant2" joins room "call room" with 200 (v4) - And user "participant2" joins call "call room" with 200 (v4) - Given user "participant2" creates room "breakout room parent" (v4) - | roomType | 2 | - | roomName | call room | - And user "participant2" adds user "participant1" to room "breakout room parent" with 200 (v4) - When user "participant2" creates 2 automatic breakout rooms for "breakout room parent" with 200 (v1) - And user "participant2" starts breakout rooms in room "breakout room parent" with 200 (v1) - And user "participant2" broadcasts message "@participant1 hello" to room "breakout room parent" with 201 (v1) - Then user "participant1" sees the following entries for dashboard widgets "spreed" (v1) - | title | subtitle | link | iconUrl | sinceId | overlayIconUrl | - | call room | Call in progress | call room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - | group room | You were mentioned | group room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - | participant2-displayname | Hello | one-to-one room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - Then user "participant1" sees the following entries for dashboard widgets "spreed" (v2) - | title | subtitle | link | iconUrl | sinceId | overlayIconUrl | - | call room | Call in progress | call room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - | group room | You were mentioned | group room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - | participant2-displayname | Hello | one-to-one room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - And user "participant2" set the message expiration to 3 of room "one-to-one room" with 200 (v4) - And user "participant2" sends message "Message 3" to room "one-to-one room" with 201 - And user "participant2" set the message expiration to 3 of room "group room" with 200 (v4) - And user "participant2" sends message "Message 2" to room "group room" with 201 - And user "participant2" set the message expiration to 3 of room "call room" with 200 (v4) - And user "participant2" sends message "Message 3" to room "call room" with 201 - And wait for 3 seconds - And force run "OCA\Talk\BackgroundJob\ExpireChatMessages" background jobs - Then user "participant1" sees the following entries for dashboard widgets "spreed" (v1) - | title | subtitle | link | iconUrl | sinceId | overlayIconUrl | - | call room | Call in progress | call room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - | group room | You were mentioned | group room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - | participant2-displayname | | one-to-one room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - Then user "participant1" sees the following entries for dashboard widgets "spreed" (v2) - | title | subtitle | link | iconUrl | sinceId | overlayIconUrl | - | call room | Call in progress | call room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - | group room | You were mentioned | group room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | - | participant2-displayname | | one-to-one room | {$BASE_URL}ocs/v2.php/apps/spreed/api/v1/room/{token}/avatar{version} | | | diff --git a/tests/integration/features/integration/outdated-client.feature b/tests/integration/features/integration/outdated-client.feature deleted file mode 100644 index a3b27bb159b..00000000000 --- a/tests/integration/features/integration/outdated-client.feature +++ /dev/null @@ -1,48 +0,0 @@ -Feature: integration/outdated-client - Background: - Given user "participant1" exists - - Scenario: Check if outdated clients correctly receive a 426 error - Given as user "participant1" - # Android - When client "Mozilla/5.0 (Android) Nextcloud-Talk v14.1.1" requests room list with 426 (v4) - Then last response body contains "15.0.0" - When client "Mozilla/5.0 (Android) Nextcloud-Talk v17.0.0" requests room list with 200 (v4) - # iOS - When client "Mozilla/5.0 (iOS) Nextcloud-Talk v14.1.1" requests room list with 426 (v4) - Then last response body contains "15.0.0" - When client "Mozilla/5.0 (iOS) Nextcloud-Talk v17.0.0" requests room list with 200 (v4) - # Desktop - When client "Mozilla/5.0 (Linux) Nextcloud-Talk v0.3.2" requests room list with 426 (v4) - Then last response body contains "0.6.0" - When client "Mozilla/5.0 (Linux) Nextcloud-Talk v0.6.0" requests room list with 200 (v4) - When client "Mozilla/5.0 (Mac) Nextcloud-Talk v0.3.2" requests room list with 426 (v4) - Then last response body contains "0.6.0" - When client "Mozilla/5.0 (Mac) Nextcloud-Talk v0.6.0" requests room list with 200 (v4) - When client "Mozilla/5.0 (Windows) Nextcloud-Talk v0.3.2" requests room list with 426 (v4) - Then last response body contains "0.6.0" - When client "Mozilla/5.0 (Windows) Nextcloud-Talk v0.6.0" requests room list with 200 (v4) - - Scenario: Check if outdated clients correctly receive a 426 error with recording consent enabled - Given as user "participant1" - Given recording server is started - And the following "spreed" app config is set - | recording_consent | 2 | - # Android - When client "Mozilla/5.0 (Android) Nextcloud-Talk v17.0.0" requests room list with 426 (v4) - Then last response body contains "18.0.0" - When client "Mozilla/5.0 (Android) Nextcloud-Talk v18.0.0" requests room list with 200 (v4) - # iOS - When client "Mozilla/5.0 (iOS) Nextcloud-Talk v17.0.0" requests room list with 426 (v4) - Then last response body contains "18.0.0" - When client "Mozilla/5.0 (iOS) Nextcloud-Talk v18.0.0" requests room list with 200 (v4) - # Desktop - When client "Mozilla/5.0 (Linux) Nextcloud-Talk v0.8.0" requests room list with 426 (v4) - Then last response body contains "0.16.0" - When client "Mozilla/5.0 (Linux) Nextcloud-Talk v0.16.0" requests room list with 200 (v4) - When client "Mozilla/5.0 (Mac) Nextcloud-Talk v0.8.0" requests room list with 426 (v4) - Then last response body contains "0.16.0" - When client "Mozilla/5.0 (Mac) Nextcloud-Talk v0.16.0" requests room list with 200 (v4) - When client "Mozilla/5.0 (Windows) Nextcloud-Talk v0.8.0" requests room list with 426 (v4) - Then last response body contains "0.16.0" - When client "Mozilla/5.0 (Windows) Nextcloud-Talk v0.16.0" requests room list with 200 (v4) diff --git a/tests/integration/features/scaling/README.md b/tests/integration/features/scaling/README.md deleted file mode 100644 index 29c770733ca..00000000000 --- a/tests/integration/features/scaling/README.md +++ /dev/null @@ -1,7 +0,0 @@ - -# Scaling tests - -Please note that the scaling tests are not ran on CI. diff --git a/tests/integration/features/scaling/call.feature b/tests/integration/features/scaling/call.feature deleted file mode 100644 index c680c82ceb7..00000000000 --- a/tests/integration/features/scaling/call.feature +++ /dev/null @@ -1,430 +0,0 @@ -Feature: scaling/call - Background: - Given group "company" exists - And user "employee1" exists - And user "employee1" is member of group "company" - And user "employee2" exists - And user "employee2" is member of group "company" - And user "employee3" exists - And user "employee3" is member of group "company" - And user "employee4" exists - And user "employee4" is member of group "company" - And user "employee5" exists - And user "employee5" is member of group "company" - And user "employee6" exists - And user "employee6" is member of group "company" - And user "employee7" exists - And user "employee7" is member of group "company" - And user "employee8" exists - And user "employee8" is member of group "company" - And user "employee9" exists - And user "employee9" is member of group "company" - And user "employee10" exists - And user "employee10" is member of group "company" - And user "employee11" exists - And user "employee11" is member of group "company" - And user "employee12" exists - And user "employee12" is member of group "company" - And user "employee13" exists - And user "employee13" is member of group "company" - And user "employee14" exists - And user "employee14" is member of group "company" - And user "employee15" exists - And user "employee15" is member of group "company" - And user "employee16" exists - And user "employee16" is member of group "company" - And user "employee17" exists - And user "employee17" is member of group "company" - And user "employee18" exists - And user "employee18" is member of group "company" - And user "employee19" exists - And user "employee19" is member of group "company" - And user "employee20" exists - And user "employee20" is member of group "company" - And user "employee21" exists - And user "employee21" is member of group "company" - And user "employee22" exists - And user "employee22" is member of group "company" - And user "employee23" exists - And user "employee23" is member of group "company" - And user "employee24" exists - And user "employee24" is member of group "company" - And user "employee25" exists - And user "employee25" is member of group "company" - And user "employee26" exists - And user "employee26" is member of group "company" - And user "employee27" exists - And user "employee27" is member of group "company" - And user "employee28" exists - And user "employee28" is member of group "company" - And user "employee29" exists - And user "employee29" is member of group "company" - And user "employee30" exists - And user "employee30" is member of group "company" - And user "employee31" exists - And user "employee31" is member of group "company" - And user "employee32" exists - And user "employee32" is member of group "company" - And user "employee33" exists - And user "employee33" is member of group "company" - And user "employee34" exists - And user "employee34" is member of group "company" - And user "employee35" exists - And user "employee35" is member of group "company" - And user "employee36" exists - And user "employee36" is member of group "company" - And user "employee37" exists - And user "employee37" is member of group "company" - And user "employee38" exists - And user "employee38" is member of group "company" - And user "employee39" exists - And user "employee39" is member of group "company" - And user "employee40" exists - And user "employee40" is member of group "company" - And user "employee41" exists - And user "employee41" is member of group "company" - And user "employee42" exists - And user "employee42" is member of group "company" - And user "employee43" exists - And user "employee43" is member of group "company" - And user "employee44" exists - And user "employee44" is member of group "company" - And user "employee45" exists - And user "employee45" is member of group "company" - And user "employee46" exists - And user "employee46" is member of group "company" - And user "employee47" exists - And user "employee47" is member of group "company" - And user "employee48" exists - And user "employee48" is member of group "company" - And user "employee49" exists - And user "employee49" is member of group "company" - And user "employee50" exists - And user "employee50" is member of group "company" - And user "employee51" exists - And user "employee51" is member of group "company" - And user "employee52" exists - And user "employee52" is member of group "company" - And user "employee53" exists - And user "employee53" is member of group "company" - And user "employee54" exists - And user "employee54" is member of group "company" - And user "employee55" exists - And user "employee55" is member of group "company" - And user "employee56" exists - And user "employee56" is member of group "company" - And user "employee57" exists - And user "employee57" is member of group "company" - And user "employee58" exists - And user "employee58" is member of group "company" - And user "employee59" exists - And user "employee59" is member of group "company" - And user "employee60" exists - And user "employee60" is member of group "company" - And user "employee61" exists - And user "employee61" is member of group "company" - And user "employee62" exists - And user "employee62" is member of group "company" - And user "employee63" exists - And user "employee63" is member of group "company" - And user "employee64" exists - And user "employee64" is member of group "company" - And user "employee65" exists - And user "employee65" is member of group "company" - And user "employee66" exists - And user "employee66" is member of group "company" - And user "employee67" exists - And user "employee67" is member of group "company" - And user "employee68" exists - And user "employee68" is member of group "company" - And user "employee69" exists - And user "employee69" is member of group "company" - And user "employee70" exists - And user "employee70" is member of group "company" - - Scenario: Company call - Then user "employee1" is participant of the following rooms (v4) - Then user "employee2" is participant of the following rooms (v4) - Then user "employee3" is participant of the following rooms (v4) - Then user "employee4" is participant of the following rooms (v4) - Then user "employee5" is participant of the following rooms (v4) - Then user "employee6" is participant of the following rooms (v4) - Then user "employee7" is participant of the following rooms (v4) - Then user "employee8" is participant of the following rooms (v4) - Then user "employee9" is participant of the following rooms (v4) - Then user "employee10" is participant of the following rooms (v4) - Then user "employee11" is participant of the following rooms (v4) - Then user "employee12" is participant of the following rooms (v4) - Then user "employee13" is participant of the following rooms (v4) - Then user "employee14" is participant of the following rooms (v4) - Then user "employee15" is participant of the following rooms (v4) - Then user "employee16" is participant of the following rooms (v4) - Then user "employee17" is participant of the following rooms (v4) - Then user "employee18" is participant of the following rooms (v4) - Then user "employee19" is participant of the following rooms (v4) - Then user "employee20" is participant of the following rooms (v4) - Then user "employee21" is participant of the following rooms (v4) - Then user "employee22" is participant of the following rooms (v4) - Then user "employee23" is participant of the following rooms (v4) - Then user "employee24" is participant of the following rooms (v4) - Then user "employee25" is participant of the following rooms (v4) - Then user "employee26" is participant of the following rooms (v4) - Then user "employee27" is participant of the following rooms (v4) - Then user "employee28" is participant of the following rooms (v4) - Then user "employee29" is participant of the following rooms (v4) - Then user "employee30" is participant of the following rooms (v4) - Then user "employee31" is participant of the following rooms (v4) - Then user "employee32" is participant of the following rooms (v4) - Then user "employee33" is participant of the following rooms (v4) - Then user "employee34" is participant of the following rooms (v4) - Then user "employee35" is participant of the following rooms (v4) - Then user "employee36" is participant of the following rooms (v4) - Then user "employee37" is participant of the following rooms (v4) - Then user "employee38" is participant of the following rooms (v4) - Then user "employee39" is participant of the following rooms (v4) - Then user "employee40" is participant of the following rooms (v4) - Then user "employee41" is participant of the following rooms (v4) - Then user "employee42" is participant of the following rooms (v4) - Then user "employee43" is participant of the following rooms (v4) - Then user "employee44" is participant of the following rooms (v4) - Then user "employee45" is participant of the following rooms (v4) - Then user "employee46" is participant of the following rooms (v4) - Then user "employee47" is participant of the following rooms (v4) - Then user "employee48" is participant of the following rooms (v4) - Then user "employee49" is participant of the following rooms (v4) - Then user "employee50" is participant of the following rooms (v4) - Then user "employee51" is participant of the following rooms (v4) - Then user "employee52" is participant of the following rooms (v4) - Then user "employee53" is participant of the following rooms (v4) - Then user "employee54" is participant of the following rooms (v4) - Then user "employee55" is participant of the following rooms (v4) - Then user "employee56" is participant of the following rooms (v4) - Then user "employee57" is participant of the following rooms (v4) - Then user "employee58" is participant of the following rooms (v4) - Then user "employee59" is participant of the following rooms (v4) - Then user "employee60" is participant of the following rooms (v4) - Then user "employee61" is participant of the following rooms (v4) - Then user "employee62" is participant of the following rooms (v4) - Then user "employee63" is participant of the following rooms (v4) - Then user "employee64" is participant of the following rooms (v4) - Then user "employee65" is participant of the following rooms (v4) - Then user "employee66" is participant of the following rooms (v4) - Then user "employee67" is participant of the following rooms (v4) - Then user "employee68" is participant of the following rooms (v4) - Then user "employee69" is participant of the following rooms (v4) - Then user "employee70" is participant of the following rooms (v4) - When user "employee1" creates room "room" (v4) - | roomType | 2 | - | invite | company | - When user "employee1" sets default permissions for room "room" to "CJ" with 200 (v4) - Then user "employee1" joins room "room" with 200 (v4) - Then user "employee1" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee2" joins room "room" with 200 (v4) - Then user "employee2" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee3" joins room "room" with 200 (v4) - Then user "employee3" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee4" joins room "room" with 200 (v4) - Then user "employee4" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee5" joins room "room" with 200 (v4) - Then user "employee5" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee6" joins room "room" with 200 (v4) - Then user "employee6" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee7" joins room "room" with 200 (v4) - Then user "employee7" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee8" joins room "room" with 200 (v4) - Then user "employee8" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee9" joins room "room" with 200 (v4) - Then user "employee9" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee10" joins room "room" with 200 (v4) - Then user "employee10" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee11" joins room "room" with 200 (v4) - Then user "employee11" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee12" joins room "room" with 200 (v4) - Then user "employee12" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee13" joins room "room" with 200 (v4) - Then user "employee13" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee14" joins room "room" with 200 (v4) - Then user "employee14" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee15" joins room "room" with 200 (v4) - Then user "employee15" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee16" joins room "room" with 200 (v4) - Then user "employee16" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee17" joins room "room" with 200 (v4) - Then user "employee17" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee18" joins room "room" with 200 (v4) - Then user "employee18" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee19" joins room "room" with 200 (v4) - Then user "employee19" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee20" joins room "room" with 200 (v4) - Then user "employee20" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee21" joins room "room" with 200 (v4) - Then user "employee21" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee22" joins room "room" with 200 (v4) - Then user "employee22" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee23" joins room "room" with 200 (v4) - Then user "employee23" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee24" joins room "room" with 200 (v4) - Then user "employee24" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee25" joins room "room" with 200 (v4) - Then user "employee25" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee26" joins room "room" with 200 (v4) - Then user "employee26" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee27" joins room "room" with 200 (v4) - Then user "employee27" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee28" joins room "room" with 200 (v4) - Then user "employee28" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee29" joins room "room" with 200 (v4) - Then user "employee29" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee30" joins room "room" with 200 (v4) - Then user "employee30" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee31" joins room "room" with 200 (v4) - Then user "employee31" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee32" joins room "room" with 200 (v4) - Then user "employee32" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee33" joins room "room" with 200 (v4) - Then user "employee33" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee34" joins room "room" with 200 (v4) - Then user "employee34" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee35" joins room "room" with 200 (v4) - Then user "employee35" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee36" joins room "room" with 200 (v4) - Then user "employee36" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee37" joins room "room" with 200 (v4) - Then user "employee37" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee38" joins room "room" with 200 (v4) - Then user "employee38" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee39" joins room "room" with 200 (v4) - Then user "employee39" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee40" joins room "room" with 200 (v4) - Then user "employee40" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee41" joins room "room" with 200 (v4) - Then user "employee41" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee42" joins room "room" with 200 (v4) - Then user "employee42" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee43" joins room "room" with 200 (v4) - Then user "employee43" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee44" joins room "room" with 200 (v4) - Then user "employee44" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee45" joins room "room" with 200 (v4) - Then user "employee45" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee46" joins room "room" with 200 (v4) - Then user "employee46" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee47" joins room "room" with 200 (v4) - Then user "employee47" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee48" joins room "room" with 200 (v4) - Then user "employee48" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee49" joins room "room" with 200 (v4) - Then user "employee49" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee50" joins room "room" with 200 (v4) - Then user "employee50" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee51" joins room "room" with 200 (v4) - Then user "employee51" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee52" joins room "room" with 200 (v4) - Then user "employee52" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee53" joins room "room" with 200 (v4) - Then user "employee53" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee54" joins room "room" with 200 (v4) - Then user "employee54" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee55" joins room "room" with 200 (v4) - Then user "employee55" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee56" joins room "room" with 200 (v4) - Then user "employee56" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee57" joins room "room" with 200 (v4) - Then user "employee57" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee58" joins room "room" with 200 (v4) - Then user "employee58" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee59" joins room "room" with 200 (v4) - Then user "employee59" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee60" joins room "room" with 200 (v4) - Then user "employee60" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee61" joins room "room" with 200 (v4) - Then user "employee61" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee62" joins room "room" with 200 (v4) - Then user "employee62" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee63" joins room "room" with 200 (v4) - Then user "employee63" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee64" joins room "room" with 200 (v4) - Then user "employee64" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee65" joins room "room" with 200 (v4) - Then user "employee65" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee66" joins room "room" with 200 (v4) - Then user "employee66" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee67" joins room "room" with 200 (v4) - Then user "employee67" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee68" joins room "room" with 200 (v4) - Then user "employee68" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee69" joins room "room" with 200 (v4) - Then user "employee69" joins call "room" with 200 (v4) - | flags | 1 | - Then user "employee70" joins room "room" with 200 (v4) - Then user "employee70" joins call "room" with 200 (v4) - | flags | 1 | - When user "employee1" ends call "room" with 200 (v4) diff --git a/tests/integration/features/scaling/chat.feature b/tests/integration/features/scaling/chat.feature deleted file mode 100644 index 453b24ab2dd..00000000000 --- a/tests/integration/features/scaling/chat.feature +++ /dev/null @@ -1,221 +0,0 @@ -Feature: scaling/chat - Background: - Given group "company" exists - And user "employee1" exists - And user "employee1" is member of group "company" - And user "employee2" exists - And user "employee2" is member of group "company" - And user "employee3" exists - And user "employee3" is member of group "company" - And user "employee4" exists - And user "employee4" is member of group "company" - And user "employee5" exists - And user "employee5" is member of group "company" - And user "employee6" exists - And user "employee6" is member of group "company" - And user "employee7" exists - And user "employee7" is member of group "company" - And user "employee8" exists - And user "employee8" is member of group "company" - And user "employee9" exists - And user "employee9" is member of group "company" - And user "employee10" exists - And user "employee10" is member of group "company" - And user "employee11" exists - And user "employee11" is member of group "company" - And user "employee12" exists - And user "employee12" is member of group "company" - And user "employee13" exists - And user "employee13" is member of group "company" - And user "employee14" exists - And user "employee14" is member of group "company" - And user "employee15" exists - And user "employee15" is member of group "company" - And user "employee16" exists - And user "employee16" is member of group "company" - And user "employee17" exists - And user "employee17" is member of group "company" - And user "employee18" exists - And user "employee18" is member of group "company" - And user "employee19" exists - And user "employee19" is member of group "company" - And user "employee20" exists - And user "employee20" is member of group "company" - And user "employee21" exists - And user "employee21" is member of group "company" - And user "employee22" exists - And user "employee22" is member of group "company" - And user "employee23" exists - And user "employee23" is member of group "company" - And user "employee24" exists - And user "employee24" is member of group "company" - And user "employee25" exists - And user "employee25" is member of group "company" - And user "employee26" exists - And user "employee26" is member of group "company" - And user "employee27" exists - And user "employee27" is member of group "company" - And user "employee28" exists - And user "employee28" is member of group "company" - And user "employee29" exists - And user "employee29" is member of group "company" - And user "employee30" exists - And user "employee30" is member of group "company" - And user "employee31" exists - And user "employee31" is member of group "company" - And user "employee32" exists - And user "employee32" is member of group "company" - And user "employee33" exists - And user "employee33" is member of group "company" - And user "employee34" exists - And user "employee34" is member of group "company" - And user "employee35" exists - And user "employee35" is member of group "company" - And user "employee36" exists - And user "employee36" is member of group "company" - And user "employee37" exists - And user "employee37" is member of group "company" - And user "employee38" exists - And user "employee38" is member of group "company" - And user "employee39" exists - And user "employee39" is member of group "company" - And user "employee40" exists - And user "employee40" is member of group "company" - And user "employee41" exists - And user "employee41" is member of group "company" - And user "employee42" exists - And user "employee42" is member of group "company" - And user "employee43" exists - And user "employee43" is member of group "company" - And user "employee44" exists - And user "employee44" is member of group "company" - And user "employee45" exists - And user "employee45" is member of group "company" - And user "employee46" exists - And user "employee46" is member of group "company" - And user "employee47" exists - And user "employee47" is member of group "company" - And user "employee48" exists - And user "employee48" is member of group "company" - And user "employee49" exists - And user "employee49" is member of group "company" - And user "employee50" exists - And user "employee50" is member of group "company" - And user "employee51" exists - And user "employee51" is member of group "company" - And user "employee52" exists - And user "employee52" is member of group "company" - And user "employee53" exists - And user "employee53" is member of group "company" - And user "employee54" exists - And user "employee54" is member of group "company" - And user "employee55" exists - And user "employee55" is member of group "company" - And user "employee56" exists - And user "employee56" is member of group "company" - And user "employee57" exists - And user "employee57" is member of group "company" - And user "employee58" exists - And user "employee58" is member of group "company" - And user "employee59" exists - And user "employee59" is member of group "company" - And user "employee60" exists - And user "employee60" is member of group "company" - And user "employee61" exists - And user "employee61" is member of group "company" - And user "employee62" exists - And user "employee62" is member of group "company" - And user "employee63" exists - And user "employee63" is member of group "company" - And user "employee64" exists - And user "employee64" is member of group "company" - And user "employee65" exists - And user "employee65" is member of group "company" - And user "employee66" exists - And user "employee66" is member of group "company" - And user "employee67" exists - And user "employee67" is member of group "company" - And user "employee68" exists - And user "employee68" is member of group "company" - And user "employee69" exists - And user "employee69" is member of group "company" - And user "employee70" exists - And user "employee70" is member of group "company" - - Scenario: Company call - Then user "employee1" is participant of the following rooms (v4) - Then user "employee2" is participant of the following rooms (v4) - Then user "employee3" is participant of the following rooms (v4) - Then user "employee4" is participant of the following rooms (v4) - Then user "employee5" is participant of the following rooms (v4) - Then user "employee6" is participant of the following rooms (v4) - Then user "employee7" is participant of the following rooms (v4) - Then user "employee8" is participant of the following rooms (v4) - Then user "employee9" is participant of the following rooms (v4) - Then user "employee10" is participant of the following rooms (v4) - Then user "employee11" is participant of the following rooms (v4) - Then user "employee12" is participant of the following rooms (v4) - Then user "employee13" is participant of the following rooms (v4) - Then user "employee14" is participant of the following rooms (v4) - Then user "employee15" is participant of the following rooms (v4) - Then user "employee16" is participant of the following rooms (v4) - Then user "employee17" is participant of the following rooms (v4) - Then user "employee18" is participant of the following rooms (v4) - Then user "employee19" is participant of the following rooms (v4) - Then user "employee20" is participant of the following rooms (v4) - Then user "employee21" is participant of the following rooms (v4) - Then user "employee22" is participant of the following rooms (v4) - Then user "employee23" is participant of the following rooms (v4) - Then user "employee24" is participant of the following rooms (v4) - Then user "employee25" is participant of the following rooms (v4) - Then user "employee26" is participant of the following rooms (v4) - Then user "employee27" is participant of the following rooms (v4) - Then user "employee28" is participant of the following rooms (v4) - Then user "employee29" is participant of the following rooms (v4) - Then user "employee30" is participant of the following rooms (v4) - Then user "employee31" is participant of the following rooms (v4) - Then user "employee32" is participant of the following rooms (v4) - Then user "employee33" is participant of the following rooms (v4) - Then user "employee34" is participant of the following rooms (v4) - Then user "employee35" is participant of the following rooms (v4) - Then user "employee36" is participant of the following rooms (v4) - Then user "employee37" is participant of the following rooms (v4) - Then user "employee38" is participant of the following rooms (v4) - Then user "employee39" is participant of the following rooms (v4) - Then user "employee40" is participant of the following rooms (v4) - Then user "employee41" is participant of the following rooms (v4) - Then user "employee42" is participant of the following rooms (v4) - Then user "employee43" is participant of the following rooms (v4) - Then user "employee44" is participant of the following rooms (v4) - Then user "employee45" is participant of the following rooms (v4) - Then user "employee46" is participant of the following rooms (v4) - Then user "employee47" is participant of the following rooms (v4) - Then user "employee48" is participant of the following rooms (v4) - Then user "employee49" is participant of the following rooms (v4) - Then user "employee50" is participant of the following rooms (v4) - Then user "employee51" is participant of the following rooms (v4) - Then user "employee52" is participant of the following rooms (v4) - Then user "employee53" is participant of the following rooms (v4) - Then user "employee54" is participant of the following rooms (v4) - Then user "employee55" is participant of the following rooms (v4) - Then user "employee56" is participant of the following rooms (v4) - Then user "employee57" is participant of the following rooms (v4) - Then user "employee58" is participant of the following rooms (v4) - Then user "employee59" is participant of the following rooms (v4) - Then user "employee60" is participant of the following rooms (v4) - Then user "employee61" is participant of the following rooms (v4) - Then user "employee62" is participant of the following rooms (v4) - Then user "employee63" is participant of the following rooms (v4) - Then user "employee64" is participant of the following rooms (v4) - Then user "employee65" is participant of the following rooms (v4) - Then user "employee66" is participant of the following rooms (v4) - Then user "employee67" is participant of the following rooms (v4) - Then user "employee68" is participant of the following rooms (v4) - Then user "employee69" is participant of the following rooms (v4) - Then user "employee70" is participant of the following rooms (v4) - When user "employee1" creates room "room" (v4) - | roomType | 2 | - | invite | company | - When user "employee1" sends message "Message 1" to room "room" with 201 - When user "employee1" sends message "Message 2 @employee2" to room "room" with 201 - When user "employee1" sends message "Message 3 @all" to room "room" with 201 diff --git a/tests/integration/features/sharing-1/create.feature b/tests/integration/features/sharing-1/create.feature deleted file mode 100644 index e997372cd6d..00000000000 --- a/tests/integration/features/sharing-1/create.feature +++ /dev/null @@ -1,807 +0,0 @@ -Feature: create - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: create share with an owned one-to-one room - Given user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant1" shares "welcome.txt" with room "own one-to-one room" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own one-to-one room | - | share_with_displayname | participant2-displayname | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own one-to-one room | - | share_with_displayname | participant1-displayname | - - Scenario: create share with a one-to-one room invited to - Given user "participant2" creates room "one-to-one room invited to" (v4) - | roomType | 1 | - | invite | participant1 | - When user "participant1" shares "welcome.txt" with room "one-to-one room invited to" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | one-to-one room invited to | - | share_with_displayname | participant2-displayname | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | one-to-one room invited to | - | share_with_displayname | participant1-displayname | - - Scenario: create share with a one-to-one room not invited to - Given user "participant2" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant3 | - When user "participant1" shares "welcome.txt" with room "one-to-one room not invited to" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all received shares - And the list of returned shares has 0 shares - And user "participant3" gets all received shares - And the list of returned shares has 0 shares - - Scenario: create share with an owned group room - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "own group room" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "own group room" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - - Scenario: create share with a group room invited to - Given user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "group room invited to" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - - Scenario: create share with a group room not invited to - Given user "participant2" creates room "group room not invited to" (v4) - | roomType | 2 | - | roomName | room | - When user "participant1" shares "welcome.txt" with room "group room not invited to" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all received shares - And the list of returned shares has 0 shares - - Scenario: create share with a group room no longer invited to - Given user "participant2" creates room "group room no longer invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" adds user "participant1" to room "group room no longer invited to" with 200 (v4) - And user "participant2" removes "participant1" from room "group room no longer invited to" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "group room no longer invited to" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all received shares - And the list of returned shares has 0 shares - - Scenario: create share with an owned public room - Given user "participant1" creates room "own public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "own public room" to "Own public room" with 200 (v4) - And user "participant1" adds user "participant2" to room "own public room" with 200 (v4) - And user "participant3" joins room "own public room" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "own public room" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own public room | - | share_with_displayname | Own public room | - | token | A_TOKEN | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own public room | - | share_with_displayname | Own public room | - | token | A_TOKEN | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own public room | - | share_with_displayname | Own public room | - | token | A_TOKEN | - - Scenario: create share with a public room invited to - Given user "participant2" creates room "public room invited to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "public room invited to" to "Public room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "public room invited to" with 200 (v4) - And user "participant3" joins room "public room invited to" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "public room invited to" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - - Scenario: create share with a public room self joined to - Given user "participant2" creates room "public room self joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "public room self joined to" to "Public room self joined to" with 200 (v4) - And user "participant1" joins room "public room self joined to" with 200 (v4) - And user "participant3" joins room "public room self joined to" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "public room self joined to" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room self joined to | - | share_with_displayname | Public room self joined to | - | token | A_TOKEN | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room self joined to | - | share_with_displayname | Public room self joined to | - | token | A_TOKEN | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room self joined to | - | share_with_displayname | Public room self joined to | - | token | A_TOKEN | - - Scenario: create share with a public room not joined to - Given user "participant2" creates room "public room not joined to" (v4) - | roomType | 3 | - | roomName | room | - When user "participant1" shares "welcome.txt" with room "public room not joined to" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all received shares - And the list of returned shares has 0 shares - - Scenario: create share with a public room no longer joined to - Given user "participant2" creates room "public room no longer joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" joins room "public room no longer joined to" with 200 (v4) - And user "participant1" leaves room "public room no longer joined to" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "public room no longer joined to" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all received shares - And the list of returned shares has 0 shares - - - - Scenario: create share with a room of a received share whose owner is in the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant2" shares "welcome.txt" with user "participant1" with OCS 100 - And user "participant1" accepts last share - When user "participant1" shares "welcome (2).txt" with room "group room" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant2 | - | displayname_file_owner | participant2-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant2 | - | displayname_file_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant2 | - | displayname_file_owner | participant2-displayname | - | path | /Talk/welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome (2).txt | - | file_target | /Talk/welcome (2).txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: create share with a room of a received share whose owner is not in the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant2" shares "welcome.txt" with user "participant1" with OCS 100 - And user "participant1" accepts last share - When user "participant1" shares "welcome (2).txt" with room "group room" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant2 | - | displayname_file_owner | participant2-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant2 | - | displayname_file_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant2 | - | displayname_file_owner | participant2-displayname | - | path | /Talk/welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome (2).txt | - | file_target | /Talk/welcome (2).txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: create share with a room of a received share without reshare permissions - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant2" shares "welcome.txt" with user "participant1" - | permissions | 1 | - And share is returned with - | permissions | 1 | - | share_type | 0 | - | mail_send | 1 | - And user "participant1" accepts last share - When user "participant1" shares "welcome (2).txt" with room "group room" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets all shares - And the list of returned shares has 0 shares - And user "participant1" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | permissions | 1 | - | share_type | 0 | - And user "participant2" gets all shares - And the list of returned shares has 1 shares - And share 0 is returned with - | permissions | 1 | - | share_type | 0 | - And user "participant2" gets all received shares - And the list of returned shares has 0 shares - And user "participant3" gets all received shares - And the list of returned shares has 0 shares - - - - Scenario: create share with an expiration date - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "group room" - | expireDate | +3 days | - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | expiration | +3 days | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | expiration | +3 days | - - Scenario: create share with an invalid expiration date - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "group room" - | expireDate | invalid date | - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all received shares - And the list of returned shares has 0 shares - - Scenario: create share with specific permissions - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "group room" - | permissions | 1 | - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | permissions | 1 | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | permissions | 1 | - - - - Scenario: create share again with another room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" creates room "another group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "another group room" to "Another group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "another group room" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "another group room" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | another group room | - | share_with_displayname | Another group room | - And user "participant1" gets all shares - And the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | another group room | - | share_with_displayname | Another group room | - And user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant3" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | another group room | - | share_with_displayname | Another group room | - - Scenario: create share again with same room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant1" shares "welcome.txt" with room "group room" - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets all shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: create share again with same room by a sharee - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant2" shares "Talk/welcome.txt" with room "group room" - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets all shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - - - Scenario: create share with a room that includes a user who already received that share through another room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" creates room "another group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "another group room" to "Another group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "another group room" with 200 (v4) - When user "participant1" shares "welcome.txt" with room "another group room" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | another group room | - | share_with_displayname | Another group room | - And user "participant2" gets all received shares - And the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | another group room | - | share_with_displayname | Another group room | - - Scenario: create share with a user who already received that share through a room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant1" shares "welcome.txt" with user "participant2" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome.txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - | mail_send | 1 | - And user "participant2" gets all received shares - And the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - - Scenario: create share with a room including a user who already received that share directly - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant1" shares "welcome.txt" with room "group room" - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets all received shares - And the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | group room | - | share_with_displayname | Group room | diff --git a/tests/integration/features/sharing-1/delete.feature b/tests/integration/features/sharing-1/delete.feature deleted file mode 100644 index 21ae2a58935..00000000000 --- a/tests/integration/features/sharing-1/delete.feature +++ /dev/null @@ -1,389 +0,0 @@ -Feature: delete - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: delete share with an owned one-to-one room - Given user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" shares "welcome.txt" with room "own one-to-one room" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: delete share with a one-to-one room invited to - Given user "participant2" creates room "one-to-one room invited to" (v4) - | roomType | 1 | - | invite | participant1 | - And user "participant1" shares "welcome.txt" with room "one-to-one room invited to" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: delete share with an owned group room - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "own group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: delete share with a group room invited to - Given user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: delete share with an owned public room - Given user "participant1" creates room "own public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "own public room" with 200 (v4) - And user "participant3" joins room "own public room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "own public room" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - And user "participant3" gets last share - And the OCS status code should be "404" - - Scenario: delete share with a public room invited to - Given user "participant2" creates room "public room invited to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" adds user "participant1" to room "public room invited to" with 200 (v4) - And user "participant3" joins room "public room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room invited to" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - And user "participant3" gets last share - And the OCS status code should be "404" - - Scenario: delete share with a public room self joined to - Given user "participant2" creates room "public room self joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" joins room "public room self joined to" with 200 (v4) - And user "participant3" joins room "public room self joined to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room self joined to" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - And user "participant3" gets last share - And the OCS status code should be "404" - - - - Scenario: delete (unknown) share with a one-to-one room not invited to - Given user "participant2" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant2" shares "welcome.txt" with room "one-to-one room not invited to" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | one-to-one room not invited to | - | share_with_displayname | participant3-displayname | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | one-to-one room not invited to | - | share_with_displayname | participant2-displayname | - - Scenario: delete (unknown) share with a group room not invited to - Given user "participant2" creates room "group room not invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room not invited to" to "Group room not invited to" with 200 (v4) - And user "participant2" adds user "participant3" to room "group room not invited to" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "group room not invited to" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room not invited to | - | share_with_displayname | Group room not invited to | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room not invited to | - | share_with_displayname | Group room not invited to | - - Scenario: delete (unknown) share with a public room not joined to - Given user "participant2" creates room "public room not joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "public room not joined to" to "Public room not joined to" with 200 (v4) - And user "participant2" adds user "participant3" to room "public room not joined to" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "public room not joined to" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room not joined to | - | share_with_displayname | Public room not joined to | - | token | A_TOKEN | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room not joined to | - | share_with_displayname | Public room not joined to | - | token | A_TOKEN | - - - - Scenario: delete share with a user who also received that share through a room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - When user "participant1" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: delete share with a room including a user who also received that share directly - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant1" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - - - - Scenario: delete received share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant2" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant2" gets last share - And the OCS status code should be "404" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - - - Scenario: delete share received directly and through a room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant2" deletes last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant2" gets last share - And the OCS status code should be "404" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - - Scenario: Delete file in app Files and don't receive the deleted file when list the shared files with "file" format - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" shares "welcome.txt" with room "public room" with OCS 100 - And user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | {file} | "IGNORE" | - And user "participant1" sees the following shared summarized overview in room "public room" with 200 - | audio | 0 | - | deckcard | 0 | - | file | 1 | - | location | 0 | - | media | 0 | - | other | 0 | - | poll | 0 | - | voice | 0 | - | recording | 0 | - When user "participant1" deletes file "welcome.txt" - Then user "participant1" sees the following shared file in room "public room" with 200 - And user "participant1" sees the following shared summarized overview in room "public room" with 200 - | audio | 0 | - | deckcard | 0 | - | file | 0 | - | location | 0 | - | media | 0 | - | other | 0 | - | poll | 0 | - | voice | 0 | - | recording | 0 | - And user "participant1" sees the following messages in room "public room" with 200 - | room | actorType | actorId | actorDisplayName | message | messageParameters | - | public room | users | participant1 | participant1-displayname | *You shared a file which is no longer available* | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | diff --git a/tests/integration/features/sharing-1/move.feature b/tests/integration/features/sharing-1/move.feature deleted file mode 100644 index d7dcae69446..00000000000 --- a/tests/integration/features/sharing-1/move.feature +++ /dev/null @@ -1,271 +0,0 @@ -Feature: move - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - Given user "participant4" exists - - Scenario: move share to another folder - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" creates folder "/test" - When user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /test/renamed.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - -# # When an own share is moved into a received shared folder the ownership of -# # the share is handed over to the folder owner. -# Scenario: move share to received shared folder from a user in the room -# Given user "participant1" creates room "group room" (v4) -# | roomType | 2 | -# | roomName | room | -# And user "participant1" renames room "group room" to "Group room" with 200 (v4) -# And user "participant1" adds user "participant2" to room "group room" with 200 (v4) -# And user "participant1" adds user "participant3" to room "group room" with 200 (v4) -# And user "participant3" creates folder "/test" -# And user "participant3" shares "/test" with user "participant1" with OCS 100 -# And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 -# When user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 -# Then user "participant1" gets last share -# And share is returned with -# | uid_owner | participant1 | -# | displayname_owner | participant1-displayname | -# | uid_file_owner | participant3 | -# | displayname_file_owner | participant3-displayname | -# | path | /test/renamed.txt | -# | item_type | file | -# | mimetype | text/plain | -# | storage_id | shared::/test | -# | file_target | /{TALK_PLACEHOLDER}/welcome.txt | -# | share_with | group room | -# | share_with_displayname | Group room | -# And user "participant2" gets last share -# And share is returned with -# | uid_owner | participant1 | -# | displayname_owner | participant1-displayname | -# | uid_file_owner | participant3 | -# | displayname_file_owner | participant3-displayname | -# | path | /Talk/welcome.txt | -# | item_type | file | -# | mimetype | text/plain | -# | storage_id | shared::/welcome (2).txt | -# | file_target | /welcome (2).txt | -# | share_with | group room | -# | share_with_displayname | Group room | -# And user "participant3" gets last share -# And share is returned with -# | uid_owner | participant1 | -# | displayname_owner | participant1-displayname | -# | uid_file_owner | participant3 | -# | displayname_file_owner | participant3-displayname | -# | path | /test/renamed.txt | -# | item_type | file | -# | mimetype | text/plain | -# | storage_id | home::participant3 | -# | file_target | /welcome (2).txt | -# | share_with | group room | -# | share_with_displayname | Group room | - -# Scenario: move share to received shared folder from a user not in the room -# Given user "participant1" creates room "group room" (v4) -# | roomType | 2 | -# | roomName | room | -# And user "participant1" renames room "group room" to "Group room" with 200 (v4) -# And user "participant1" adds user "participant2" to room "group room" with 200 (v4) -# And user "participant1" adds user "participant3" to room "group room" with 200 (v4) -# And user "participant4" creates folder "/test" -# And user "participant4" shares "/test" with user "participant1" with OCS 100 -# And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 -# When user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 -# Then user "participant1" gets last share -# And share is returned with -# | uid_owner | participant1 | -# | displayname_owner | participant1-displayname | -# | uid_file_owner | participant4 | -# | displayname_file_owner | participant4-displayname | -# | path | /test/renamed.txt | -# | item_type | file | -# | mimetype | text/plain | -# | storage_id | shared::/test | -# | file_target | /{TALK_PLACEHOLDER}/welcome.txt | -# | share_with | group room | -# | share_with_displayname | Group room | -# And user "participant2" gets last share -# And share is returned with -# | uid_owner | participant1 | -# | displayname_owner | participant1-displayname | -# | uid_file_owner | participant4 | -# | displayname_file_owner | participant4-displayname | -# | path | /Talk/welcome.txt | -# | item_type | file | -# | mimetype | text/plain | -# | storage_id | shared::/welcome (2).txt | -# | file_target | /welcome (2).txt | -# | share_with | group room | -# | share_with_displayname | Group room | -# And user "participant3" gets last share -# And share is returned with -# | uid_owner | participant1 | -# | displayname_owner | participant1-displayname | -# | uid_file_owner | participant4 | -# | displayname_file_owner | participant4-displayname | -# | path | /Talk/welcome.txt | -# | item_type | file | -# | mimetype | text/plain | -# | storage_id | shared::/welcome (2).txt | -# | file_target | /welcome (2).txt | -# | share_with | group room | -# | share_with_displayname | Group room | - -# Scenario: move share to received shared folder which is also a received shared folder -# Given user "participant1" creates room "group room" (v4) -# | roomType | 2 | -# | roomName | room | -# And user "participant1" renames room "group room" to "Group room" with 200 (v4) -# And user "participant1" adds user "participant2" to room "group room" with 200 (v4) -# And user "participant3" creates folder "/test" -# And user "participant3" shares "/test" with user "participant4" with OCS 100 -# And user "participant4" shares "/test" with user "participant1" with OCS 100 -# And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 -# When user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 -# Then user "participant1" gets last share -# And share is returned with -# | uid_owner | participant1 | -# | displayname_owner | participant1-displayname | -# | uid_file_owner | participant3 | -# | displayname_file_owner | participant3-displayname | -# | path | /test/renamed.txt | -# | item_type | file | -# | mimetype | text/plain | -# | storage_id | shared::/test | -# | file_target | /{TALK_PLACEHOLDER}/welcome.txt | -# | share_with | group room | -# | share_with_displayname | Group room | -# And user "participant2" gets last share -# And share is returned with -# | uid_owner | participant1 | -# | displayname_owner | participant1-displayname | -# | uid_file_owner | participant3 | -# | displayname_file_owner | participant3-displayname | -# | path | /Talk/welcome.txt | -# | item_type | file | -# | mimetype | text/plain | -# | storage_id | shared::/welcome (2).txt | -# | file_target | /welcome (2).txt | -# | share_with | group room | -# | share_with_displayname | Group room | -# And user "participant3" gets last share -# And share is returned with -# | uid_owner | participant1 | -# | displayname_owner | participant1-displayname | -# | uid_file_owner | participant3 | -# | displayname_file_owner | participant3-displayname | -# | path | /test/renamed.txt | -# | item_type | file | -# | mimetype | text/plain | -# | storage_id | home::participant3 | -# | file_target | /{TALK_PLACEHOLDER}/welcome.txt | -# | share_with | group room | -# | share_with_displayname | Group room | -# And user "participant4" gets last share -# Then the OCS status code should be "404" -# And the HTTP status code should be "200" - - Scenario: move received share to another folder - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" creates folder "/test" - When user "participant2" moves file "Talk/welcome.txt" to "test/renamed.txt" with 201 - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /test/renamed.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/test/renamed.txt | - | file_target | /test/renamed.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - - - # Received shares can not be moved into other shares (general limitation of - # the sharing system, not related to room shares). - Scenario: move received share to shared folder - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant3" creates folder "/test" - And user "participant3" shares "/test" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant3" moves file "/Talk/welcome.txt" to "/test/renamed.txt" - Then the HTTP status code should be "403" diff --git a/tests/integration/features/sharing-1/restore.feature b/tests/integration/features/sharing-1/restore.feature deleted file mode 100644 index eef3e6321d7..00000000000 --- a/tests/integration/features/sharing-1/restore.feature +++ /dev/null @@ -1,156 +0,0 @@ -Feature: delete - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: restore deleted share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" deletes last share - When user "participant2" restores last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant2" gets deleted shares - And the list of returned shares has 0 shares - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: restore share deleted after moving it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" moves file "/Talk/welcome.txt" to "/Talk/renamed.txt" with 201 - And user "participant2" deletes last share - When user "participant2" restores last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant2" gets deleted shares - And the list of returned shares has 0 shares - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/renamed.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/renamed.txt | - | file_target | /Talk/renamed.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: restore deleted share after owner updated it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" deletes last share - And user "participant1" updates last share with - | permissions | 1 | - When user "participant2" restores last share - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "participant2" gets deleted shares - And the list of returned shares has 0 shares - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | permissions | 1 | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | permissions | 1 | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | permissions | 1 | diff --git a/tests/integration/features/sharing-2/get.feature b/tests/integration/features/sharing-2/get.feature index d393094a4da..469105e81c5 100644 --- a/tests/integration/features/sharing-2/get.feature +++ b/tests/integration/features/sharing-2/get.feature @@ -7,1142 +7,6 @@ Feature: get Given user "participant4" exists - - Scenario: get a share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant1" gets last share - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: get a received share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant2" gets last share - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - - - Scenario: get a share using a user not invited to the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant2" gets last share - Then the OCS status code should be "404" - And the HTTP status code should be "200" - - - - Scenario: get a share after changing the room name - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" renames room "group room" to "New room name" with 200 (v4) - When user "participant1" gets last share - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | New room name | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | New room name | - - - - Scenario: get an expired share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" - | expireDate | -3 days | - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | expiration | -3 days | - When user "participant1" gets last share - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant2" gets last share - And the OCS status code should be "404" - And the HTTP status code should be "200" - - Scenario: get an expired share moved by the sharee - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" moves file "/Talk/welcome.txt" to "/Talk/renamed.txt" with 201 - And user "participant1" updates last share with - | expireDate | -3 days | - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | expiration | -3 days | - When user "participant1" gets last share - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant2" gets last share - And the OCS status code should be "404" - And the HTTP status code should be "200" - - - - Scenario: get a share after deleting its file - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" deletes file "welcome.txt" - When user "participant1" gets last share - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant2" gets last share - And the OCS status code should be "404" - And the HTTP status code should be "200" - - - - Scenario: get all shares of a user - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant4 | - And user "participant1" creates folder "/test" - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant1" shares "test" with room "group room invited to" with OCS 100 - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant1" shares "test" with room "own one-to-one room" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" shares "welcome (2).txt" with room "one-to-one room not invited to" with OCS 100 - And user "participant1" creates folder "/deleted" - And user "participant1" shares "deleted" with room "group room invited to" with OCS 100 - And user "participant1" deletes file "deleted" - When user "participant1" gets all shares - Then the list of returned shares has 4 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /test | - | item_type | folder | - | mimetype | httpd/unix-directory | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/test | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - | permissions | 31 | - And share 2 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And share 3 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /test | - | item_type | folder | - | mimetype | httpd/unix-directory | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/test | - | share_with | own one-to-one room | - | share_with_displayname | participant3-displayname | - | permissions | 31 | - - Scenario: get all shares and reshares of a user - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant4 | - And user "participant1" creates folder "/test" - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant1" shares "test" with room "group room invited to" with OCS 100 - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant1" shares "test" with room "own one-to-one room" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" shares "welcome (2).txt" with room "one-to-one room not invited to" with OCS 100 - And user "participant1" creates folder "/deleted" - And user "participant1" shares "deleted" with room "group room invited to" with OCS 100 - And user "participant2" shares "Talk/deleted" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant1" deletes file "deleted" - When user "participant1" gets all shares and reshares - Then the list of returned shares has 6 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /test | - | item_type | folder | - | mimetype | httpd/unix-directory | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/test | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - | permissions | 31 | - And share 2 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And share 3 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /test | - | item_type | folder | - | mimetype | httpd/unix-directory | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/test | - | share_with | own one-to-one room | - | share_with_displayname | participant3-displayname | - | permissions | 31 | - And share 4 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - And share 5 is returned with - | uid_owner | participant3 | - | displayname_owner | participant3-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - - Scenario: get all shares and reshares of a user who reshared a file to an owned one-to-one room - Given user "participant2" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "welcome (2).txt" with room "one-to-one room not invited to" with OCS 100 - When user "participant1" gets all shares and reshares - Then the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - And share 1 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - - Scenario: get all shares and reshares of a user who reshared a file to a one-to-one room - Given user "participant2" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant1" shares "welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" shares "welcome (2).txt" with room "one-to-one room not invited to" with OCS 100 - When user "participant1" gets all shares and reshares - Then the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - And share 1 is returned with - | uid_owner | participant3 | - | displayname_owner | participant3-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - - Scenario: get all shares of a file - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant4 | - And user "participant1" creates folder "/test" - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant1" shares "test" with room "group room invited to" with OCS 100 - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant1" shares "test" with room "own one-to-one room" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" shares "welcome (2).txt" with room "one-to-one room not invited to" with OCS 100 - When user "participant1" gets all shares for "/welcome.txt" - Then the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - - Scenario: get all shares of a deleted file - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant4 | - And user "participant1" creates folder "/test" - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant1" shares "test" with room "group room invited to" with OCS 100 - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant1" shares "test" with room "own one-to-one room" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" shares "welcome (2).txt" with room "one-to-one room not invited to" with OCS 100 - And user "participant1" deletes file "welcome.txt" - When user "participant1" gets all shares for "/welcome.txt" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - - Scenario: get all shares and reshares of a file - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant4 | - And user "participant1" creates folder "/test" - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant1" shares "test" with room "group room invited to" with OCS 100 - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant1" shares "test" with room "own one-to-one room" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" shares "welcome (2).txt" with room "one-to-one room not invited to" with OCS 100 - When user "participant1" gets all shares and reshares for "/welcome.txt" - Then the list of returned shares has 4 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And share 2 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - And share 3 is returned with - | uid_owner | participant3 | - | displayname_owner | participant3-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - - Scenario: get all shares and reshares of a file reshared to a one-to-one room by its owner - Given user "participant2" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "welcome (2).txt" with room "one-to-one room not invited to" with OCS 100 - When user "participant1" gets all shares and reshares for "/welcome.txt" - Then the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - And share 1 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - - Scenario: get all shares and reshares of a file reshared to a one-to-one room by its second participant - Given user "participant2" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant1" shares "welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" shares "welcome (2).txt" with room "one-to-one room not invited to" with OCS 100 - When user "participant1" gets all shares and reshares for "/welcome.txt" - Then the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - And share 1 is returned with - | uid_owner | participant3 | - | displayname_owner | participant3-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - - Scenario: get all shares and reshares of a file reshared to a group room not invited to - Given user "participant2" creates room "group room not invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room not invited to" to "Group room not invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "welcome (2).txt" with room "group room not invited to" with OCS 100 - When user "participant1" gets all shares and reshares for "/welcome.txt" - Then the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - And share 1 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - - Scenario: get all shares and reshares of a file reshared to a public room not invited to - Given user "participant2" creates room "public room not invited to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "public room not invited to" to "Public room not invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "welcome (2).txt" with room "public room not invited to" with OCS 100 - When user "participant1" gets all shares and reshares for "/welcome.txt" - Then the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - And share 1 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - | token | A_TOKEN | - - Scenario: get all shares and reshares of a file reshared to a public room invited to - Given user "participant2" creates room "public room invited to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "public room invited to" to "Public room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "welcome (2).txt" with room "public room invited to" with OCS 100 - And user "participant2" adds user "participant1" to room "public room invited to" with 200 (v4) - When user "participant1" gets all shares and reshares for "/welcome.txt" - Then the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - And share 1 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - - Scenario: get all shares and reshares of a file reshared to a public room self-joined to - Given user "participant2" creates room "public room self-joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "public room self-joined to" to "Public room self-joined to" with 200 (v4) - And user "participant1" shares "welcome.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "welcome (2).txt" with room "public room self-joined to" with OCS 100 - And user "participant1" joins room "public room self-joined to" with 200 (v4) - When user "participant1" gets all shares and reshares for "/welcome.txt" - Then the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant2 | - | share_with_displayname | participant2-displayname | - | share_type | 0 | - And share 1 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | public room self-joined to | - | share_with_displayname | Public room self-joined to | - | token | A_TOKEN | - - Scenario: get all shares and reshares of a deleted file - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant4 | - And user "participant1" creates folder "/test" - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant1" shares "test" with room "group room invited to" with OCS 100 - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant1" shares "test" with room "own one-to-one room" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" shares "welcome (2).txt" with room "one-to-one room not invited to" with OCS 100 - And user "participant1" deletes file "welcome.txt" - When user "participant1" gets all shares and reshares for "/welcome.txt" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - - Scenario: get all shares of a folder - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant4 | - And user "participant1" creates folder "/test" - And user "participant1" creates folder "/test/subfolder" - And user "participant1" creates folder "/test/subfolder/subsubfolder" - And user "participant1" creates folder "/test2" - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant1" shares "test/subfolder" with room "group room invited to" with OCS 100 - And user "participant1" shares "test/subfolder/subsubfolder" with room "group room invited to" with OCS 100 - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant1" shares "test2" with room "own one-to-one room" with OCS 100 - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant2" shares "Talk/subfolder" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" shares "subfolder" with room "one-to-one room not invited to" with OCS 100 - # Only direct children are taken into account - When user "participant1" gets all shares for "/test" and its subfiles - Then the list of returned shares has 5 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /test/renamed.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /test/subfolder | - | item_type | folder | - | mimetype | httpd/unix-directory | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/subfolder | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - | permissions | 31 | - And share 2 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /test/renamed.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And share 3 is returned with - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /test/subfolder | - | item_type | folder | - | mimetype | httpd/unix-directory | - | storage_id | home::participant1 | - | file_target | /subfolder | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - | permissions | 31 | - And share 4 is returned with - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | uid_owner | participant3 | - | displayname_owner | participant3-displayname | - | path | /test/subfolder | - | path | /test/subfolder | - | item_type | folder | - | mimetype | httpd/unix-directory | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/subfolder | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - | permissions | 31 | - - Scenario: get all shares of a deleted folder - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant4 | - And user "participant1" creates folder "/test" - And user "participant1" creates folder "/test/subfolder" - And user "participant1" creates folder "/test/subfolder/subsubfolder" - And user "participant1" creates folder "/test2" - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant1" shares "test/subfolder" with room "group room invited to" with OCS 100 - And user "participant1" shares "test/subfolder/subsubfolder" with room "group room invited to" with OCS 100 - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant1" shares "test2" with room "own one-to-one room" with OCS 100 - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant2" shares "Talk/subfolder" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant3" shares "subfolder" with room "one-to-one room not invited to" with OCS 100 - And user "participant1" deletes file "test" - When user "participant1" gets all shares for "/test" and its subfiles - Then the OCS status code should be "404" - And the HTTP status code should be "200" - - - - Scenario: get all received shares of a user - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant2" adds user "participant3" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates folder "/test" - And user "participant2" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant3" shares "test" with room "group room invited to" with OCS 100 - And user "participant2" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant3" shares "test" with room "own one-to-one room" with OCS 100 - And user "participant2" creates folder "/deleted" - And user "participant2" shares "deleted" with room "group room invited to" with OCS 100 - And user "participant2" deletes file "deleted" - When user "participant1" gets all received shares - Then the list of returned shares has 4 shares - And share 0 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - And share 1 is returned with - | uid_owner | participant3 | - | displayname_owner | participant3-displayname | - | path | /Talk/test | - | item_type | folder | - | mimetype | httpd/unix-directory | - | storage_id | shared::/Talk/test | - | file_target | /Talk/test | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - | permissions | 31 | - And share 2 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And share 3 is returned with - | uid_owner | participant3 | - | displayname_owner | participant3-displayname | - | path | /Talk/test | - | item_type | folder | - | mimetype | httpd/unix-directory | - | storage_id | shared::/Talk/test | - | file_target | /Talk/test | - | share_with | own one-to-one room | - | share_with_displayname | participant3-displayname | - | permissions | 31 | - - Scenario: get all received shares of a file - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant2" adds user "participant3" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates folder "/test" - And user "participant2" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant3" shares "test" with room "group room invited to" with OCS 100 - And user "participant2" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant3" shares "test" with room "own one-to-one room" with OCS 100 - When user "participant1" gets all received shares for "/Talk/welcome.txt" - Then the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - And share 1 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - - Scenario: get all received shares of a deleted file - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "own group room" with 200 (v4) - And user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant2" adds user "participant3" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant3" creates folder "/test" - And user "participant2" shares "welcome.txt" with room "own group room" with OCS 100 - And user "participant3" shares "test" with room "group room invited to" with OCS 100 - And user "participant2" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant3" shares "test" with room "own one-to-one room" with OCS 100 - And user "participant2" deletes file "welcome.txt" - When user "participant1" gets all received shares for "/welcome (2).txt" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - - - - Scenario: get deleted shares when deleting an own share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" deletes last share - When user "participant1" gets deleted shares - Then the list of returned shares has 0 shares - And user "participant2" gets deleted shares - And the list of returned shares has 0 shares - - Scenario: get deleted shares when deleting a received share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" deletes last share - When user "participant2" gets deleted shares - Then the list of returned shares has 1 shares - And share 0 is returned with - | id | REGEXP /ocRoomShare:[0-9]+/ | - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | permissions | 0 | - | mail_send | IGNORE | - And user "participant1" gets deleted shares - And the list of returned shares has 0 shares - And user "participant3" gets deleted shares - And the list of returned shares has 0 shares - - Scenario: get deleted shares when deleting the file of an own share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" deletes file "welcome.txt" - When user "participant1" gets deleted shares - Then the list of returned shares has 0 shares - And user "participant2" gets deleted shares - And the list of returned shares has 0 shares - - - - Scenario: get DAV properties for a share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant1" gets the share-type DAV property for "/welcome.txt" - Then the response contains a share-types DAV property with - | 10 | - - Scenario: get DAV properties for a folder with a share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" creates folder "/test" - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant1" shares "/test/renamed.txt" with room "group room" with OCS 100 - When user "participant1" gets the share-type DAV property for "/test" - Then the response contains a share-types DAV property with - | 10 | - Scenario: get DAV properties for a received share Given user "participant1" creates room "group room" (v4) | roomType | 2 | @@ -1151,21 +15,7 @@ Feature: get And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 When user "participant2" gets the share-type DAV property for "Talk/welcome.txt" Then the response contains a share-types DAV property with - - Scenario: get DAV properties for a room share reshared with a user - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" creates room "another group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - When user "participant1" gets the share-type DAV property for "/welcome.txt" - Then the response contains a share-types DAV property with - | 10 | + Scenario: get DAV properties for a user share reshared with a room Given user "participant1" creates room "group room" (v4) @@ -1212,134 +62,3 @@ Feature: get Then the response contains a share-types DAV property with | 10 | - # Reshares are taken into account only for the files in the folder, not the - # folder itself. - Scenario: get DAV properties for a reshared folder - Given user "participant2" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" creates folder "/test" - And user "participant1" shares "/test" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "/test" with room "group room" with OCS 100 - When user "participant1" gets the share-type DAV property for "/test" - Then the response contains a share-types DAV property with - | 0 | - - Scenario: get DAV properties for a folder with a reshare - Given user "participant2" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" creates folder "/test" - And user "participant1" moves file "/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant1" shares "/test/renamed.txt" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "renamed.txt" with room "group room" with OCS 100 - When user "participant1" gets the share-type DAV property for "/test" - Then the response contains a share-types DAV property with - | 0 | - | 10 | - - Scenario: get DAV properties for a folder with a reshared folder - Given user "participant2" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" creates folder "/test" - And user "participant1" creates folder "/test/subfolder" - And user "participant1" shares "/test/subfolder" with user "participant2" with OCS 100 - And user "participant2" accepts last share - And user "participant2" shares "subfolder" with room "group room" with OCS 100 - When user "participant1" gets the share-type DAV property for "/test" - Then the response contains a share-types DAV property with - | 0 | - | 10 | - - - - Scenario: get files after sharing a file - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant1" gets the DAV properties for "/" - Then the list of returned files for "participant1" is - | / | - | /welcome.txt | - And user "participant2" gets the DAV properties for "/" - And the list of returned files for "participant2" is - | / | - | /Talk/ | - | /welcome.txt | - And user "participant2" gets the DAV properties for "/Talk" - And the list of returned files for "participant2" is - | /Talk/ | - | /Talk/welcome.txt | - - Scenario: get files after deleting a share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" deletes last share - When user "participant1" gets the DAV properties for "/" - Then the list of returned files for "participant1" is - | / | - | /welcome.txt | - And user "participant2" gets the DAV properties for "/" - And the list of returned files for "participant2" is - | / | - | /welcome.txt | - - Scenario: get files after deleting a received share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" deletes last share - When user "participant2" gets the DAV properties for "/" - Then the list of returned files for "participant2" is - | / | - | /Talk/ | - | /welcome.txt | - And user "participant1" gets the DAV properties for "/" - And the list of returned files for "participant1" is - | / | - | /welcome.txt | - - Scenario: get files after deleting the file of a share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" deletes file "welcome.txt" - When user "participant1" gets the DAV properties for "/" - Then the list of returned files for "participant1" is - | / | - And user "participant2" gets the DAV properties for "/" - And the list of returned files for "participant2" is - | / | - | /welcome.txt | - - - - Scenario: get recent files including a share - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" creates folder "/test" - And user "participant1" creates folder "/test/subfolder" - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" shares "test/subfolder" with room "group room" with OCS 100 - And user "participant1" shares "test/subfolder" with user "participant3" with OCS 100 - And user "participant3" accepts last share - When user "participant1" gets recent files - Then the response contains a share-types file property for "/welcome.txt" with - | 10 | - And the response contains a share-types file property for "/test" with - And the response contains a share-types file property for "/test/subfolder" with - | 0 | - | 10 | diff --git a/tests/integration/features/sharing-3/hooks.feature b/tests/integration/features/sharing-3/hooks.feature deleted file mode 100644 index 08e490a5fa4..00000000000 --- a/tests/integration/features/sharing-3/hooks.feature +++ /dev/null @@ -1,1066 +0,0 @@ -Feature: hooks - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - Given user "participant4" exists - - # Entering a room does not really require any hook to work, but conceptually - # these tests belong here. - Scenario: invite user to group room after a file was shared - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant1" adds user "participant2" to room "group room" with 200 (v4) - Then user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: join public room after a file was shared - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room" to "Public room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room" with OCS 100 - And user "participant2" joins room "public room" with 200 (v4) - Then user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room | - | share_with_displayname | Public room | - | token | A_TOKEN | - - - - Scenario: remove sharer from group room after sharing a file - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant1" removes "participant2" from room "group room" with 200 (v4) - Then user "participant1" gets last share - And the OCS status code should be "100" - And user "participant2" gets last share - And the OCS status code should be "100" - - Scenario: remove herself from group room after sharing a file - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant2" removes themselves from room "group room" with 200 (v4) - Then user "participant1" gets last share - And the OCS status code should be "100" - And user "participant2" gets last share - And the OCS status code should be "100" - - Scenario: leave group room after sharing a file - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant2" leaves room "group room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: leave public room invited to after sharing a file - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room" to "Public room" with 200 (v4) - And user "participant1" adds user "participant2" to room "public room" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "public room" with OCS 100 - When user "participant2" leaves room "public room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room | - | share_with_displayname | Public room | - | token | A_TOKEN | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room | - | share_with_displayname | Public room | - | token | A_TOKEN | - - Scenario: leave public room self joined to after sharing a file - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" joins room "public room" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "public room" with OCS 100 - When user "participant2" leaves room "public room" with 200 (v4) - Then user "participant1" gets last share - And the OCS status code should be "100" - And user "participant2" gets last share - And the OCS status code should be "100" - - Scenario: remove sharer from group room with other shares after sharing a file - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" creates folder "test" - And user "participant1" shares "test" with room "group room" with OCS 100 - And user "participant2" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant1" removes "participant2" from room "group room" with 200 (v4) - Then user "participant1" gets last share - And the OCS status code should be "100" - And user "participant2" gets last share - And the OCS status code should be "100" - And user "participant1" gets all shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /test | - | item_type | folder | - | mimetype | httpd/unix-directory | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/test | - | share_with | group room | - | share_with_displayname | Group room | - | permissions | 31 | - - - - Scenario: remove sharer from group room after sharing a file and a receiver reshared it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - When user "participant1" removes "participant2" from room "group room" with 200 (v4) - Then user "participant1" gets last share - And the OCS status code should be "100" - And user "participant1" gets all shares - And the list of returned shares has 1 shares - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant2 | - | displayname_file_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - And user "participant2" gets all shares - And the list of returned shares has 1 shares - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant2 | - | displayname_file_owner | participant2-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - - - - Scenario: remove sharee from group room after a file was shared - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant1" removes "participant2" from room "group room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: remove sharee from group room after a file was shared and the sharee moved it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" moves file "welcome (2).txt" to "renamed.txt" - When user "participant1" removes "participant2" from room "group room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: remove herself from group room after a file was shared - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When user "participant2" removes themselves from room "group room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: remove herself from group room after a file was shared and the sharee moved it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" moves file "welcome (2).txt" to "renamed.txt" - When user "participant2" removes themselves from room "group room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: leave public room self joined to after a file was shared - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room" to "Public room" with 200 (v4) - And user "participant2" joins room "public room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room" with OCS 100 - When user "participant2" leaves room "public room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room | - | share_with_displayname | Public room | - | token | A_TOKEN | - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: leave public room self joined to after a file was shared and the sharee moved it - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room" to "Public room" with 200 (v4) - And user "participant2" joins room "public room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room" with OCS 100 - And user "participant2" moves file "welcome (2).txt" to "renamed.txt" - When user "participant2" leaves room "public room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room | - | share_with_displayname | Public room | - | token | A_TOKEN | - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: remove sharee from group room with other sharees after a file was shared and the sharees moved it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" moves file "Talk/welcome.txt" to "Talk/renamed.txt" - And user "participant3" moves file "Talk/welcome.txt" to "Talk/renamed too.txt" - When user "participant1" removes "participant2" from room "group room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And the OCS status code should be "404" - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/renamed too.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/renamed too.txt | - | file_target | /Talk/renamed too.txt | - | share_with | group room | - | share_with_displayname | Group room | - - - - Scenario: remove sharee from group room after a file was shared and the sharee reshared it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - When user "participant1" removes "participant2" from room "group room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - And user "participant2" gets last share - And the OCS status code should be "404" - And user "participant2" gets all shares - And the list of returned shares has 0 shares - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - - - - Scenario: add sharer again to group room after sharing a file and the sharer was removed from the room - Given user "participant2" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" adds user "participant1" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" removes "participant1" from room "group room" with 200 (v4) - When user "participant2" adds user "participant1" to room "group room" with 200 (v4) - Then user "participant1" gets all shares - And the list of returned shares has 1 shares - And user "participant2" gets all received shares - And the list of returned shares has 1 shares - - Scenario: add sharer again to group room after sharing a file and the sharer removed herself from the room - Given user "participant2" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" adds user "participant1" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" removes themselves from room "group room" with 200 (v4) - When user "participant2" adds user "participant1" to room "group room" with 200 (v4) - Then user "participant1" gets all shares - And the list of returned shares has 1 shares - And user "participant2" gets all received shares - And the list of returned shares has 1 shares - - Scenario: join public room again after sharing a file and the sharer left the room - Given user "participant2" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" joins room "public room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room" with OCS 100 - And user "participant1" leaves room "public room" with 200 (v4) - When user "participant1" joins room "public room" with 200 (v4) - Then user "participant1" gets all shares - And the list of returned shares has 1 shares - And user "participant2" gets all received shares - And the list of returned shares has 1 shares - - - - Scenario: add sharer again to group room after sharing a file and a receiver reshared it and the sharer was removed from the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant1" removes "participant2" from room "group room" with 200 (v4) - When user "participant1" adds user "participant2" to room "group room" with 200 (v4) - Then user "participant1" gets last share - And the OCS status code should be "100" - And user "participant1" gets all shares - And the list of returned shares has 1 shares - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant2 | - | displayname_file_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - And user "participant2" gets all shares - And the list of returned shares has 1 shares - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | uid_file_owner | participant2 | - | displayname_file_owner | participant2-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - - - - Scenario: add sharee again to group room after a file was shared and the sharee was removed from the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" removes "participant2" from room "group room" with 200 (v4) - When user "participant1" adds user "participant2" to room "group room" with 200 (v4) - Then user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: add sharee again to group room after a file was shared and moved by the sharee and the sharee was removed from the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" moves file "welcome (2).txt" to "renamed.txt" - And user "participant1" removes "participant2" from room "group room" with 200 (v4) - When user "participant1" adds user "participant2" to room "group room" with 200 (v4) - Then user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: add sharee again to group room after a file was shared and the sharee removed herself from the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" removes themselves from room "group room" with 200 (v4) - When user "participant1" adds user "participant2" to room "group room" with 200 (v4) - Then user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: add sharee again to group room after a file was shared and moved by the sharee and the sharee removed herself from the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" moves file "welcome (2).txt" to "renamed.txt" - And user "participant2" removes themselves from room "group room" with 200 (v4) - When user "participant1" adds user "participant2" to room "group room" with 200 (v4) - Then user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: join sharee again to public room after a file was shared and the sharee left the room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room" to "Public room" with 200 (v4) - And user "participant2" joins room "public room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room" with OCS 100 - And user "participant2" leaves room "public room" with 200 (v4) - When user "participant2" joins room "public room" with 200 (v4) - Then user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room | - | share_with_displayname | Public room | - | token | A_TOKEN | - - Scenario: join sharee again to public room after a file was shared and moved by the sharee and the sharee left the room - Given user "participant1" creates room "public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room" to "Public room" with 200 (v4) - And user "participant2" joins room "public room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room" with OCS 100 - And user "participant2" moves file "welcome (2).txt" to "renamed.txt" - And user "participant2" leaves room "public room" with 200 (v4) - When user "participant2" joins room "public room" with 200 (v4) - Then user "participant2" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room | - | share_with_displayname | Public room | - | token | A_TOKEN | - - - - Scenario: add sharee again to group room after a file was shared and the sharee reshared it and the sharee was removed from the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - And user "participant1" removes "participant2" from room "group room" with 200 (v4) - When user "participant1" adds user "participant2" to room "group room" with 200 (v4) - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - - - - Scenario: delete one-to-one room after sharing a file - Given user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" shares "welcome.txt" with room "own one-to-one room" with OCS 100 - When user "participant1" removes themselves from room "own one-to-one room" with 200 (v4) - When user "participant2" removes themselves from room "own one-to-one room" with 200 (v4) - And user "participant1" is not participant of room "own one-to-one room" (v4) - And user "participant2" is not participant of room "own one-to-one room" (v4) - Then user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: delete group room after sharing a file - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "own group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - When user "participant1" deletes room "own group room" with 200 (v4) - Then user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: delete public room after sharing a file - Given user "participant1" creates room "own public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" adds user "participant2" to room "own public room" with 200 (v4) - And user "participant3" joins room "own public room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "own public room" with OCS 100 - When user "participant1" deletes room "own public room" with 200 (v4) - Then user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - And user "participant3" gets last share - And the OCS status code should be "404" - - Scenario: delete room after a file was shared and the sharee moved it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" moves file "welcome (2).txt" to "renamed.txt" - When user "participant1" deletes room "group room" with 200 (v4) - Then user "participant1" gets last share - And the OCS status code should be "404" - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: delete room after a file was shared and the sharee reshared it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - When user "participant1" deletes room "group room" with 200 (v4) - Then user "participant1" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all received shares - And the list of returned shares has 0 shares - And user "participant3" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - - Scenario: delete room after a file was shared and the sharee moved and reshared it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" moves file "Talk/welcome.txt" to "Talk/renamed.txt" - And user "participant2" shares "Talk/renamed.txt" with user "participant3" with OCS 100 - And user "participant3" accepts last share - When user "participant1" deletes room "group room" with 200 (v4) - Then user "participant1" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all shares - And the list of returned shares has 0 shares - And user "participant2" gets all received shares - And the list of returned shares has 0 shares - And user "participant3" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /renamed.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/renamed.txt | - | file_target | /renamed.txt | - | share_with | participant3 | - | share_with_displayname | participant3-displayname | - | share_type | 0 | - - Scenario: delete room after sharing a file with several rooms - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" creates room "another group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "another group room" to "Another group room" with 200 (v4) - And user "participant1" creates room "yet another group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "yet another group room" to "Yet another group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "another group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "yet another group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant1" shares "welcome.txt" with room "another group room" with OCS 100 - And user "participant1" shares "welcome.txt" with room "yet another group room" with OCS 100 - When user "participant1" deletes room "group room" with 200 (v4) - Then user "participant1" gets all shares - And the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | another group room | - | share_with_displayname | Another group room | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | yet another group room | - | share_with_displayname | Yet another group room | - And user "participant2" gets all received shares - And the list of returned shares has 2 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | another group room | - | share_with_displayname | Another group room | - And share 1 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | yet another group room | - | share_with_displayname | Yet another group room | - - - - Scenario: delete user after sharing a file - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "group room invited to" with OCS 100 - When user "participant2" is deleted - Then user "participant1" gets last share - And the OCS status code should be "404" - - Scenario: delete user after receiving a shared a file - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - When user "participant2" is deleted - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - - Scenario: delete user after receiving and moving a shared a file - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant2" moves file "welcome (2).txt" to "renamed.txt" - When user "participant2" is deleted - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - - Scenario: delete user after resharing a file - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant2" shares "Talk/welcome.txt" with user "participant4" with OCS 100 - And user "participant4" accepts last share - When user "participant2" is deleted - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2 | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /welcome (2).txt | - | share_with | participant4 | - | share_with_displayname | participant4-displayname | - | share_type | 0 | - And user "participant1" gets all shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2 | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /welcome (2).txt | - | share_with | participant4 | - | share_with_displayname | participant4-displayname | - | share_type | 0 | - And user "participant3" gets all received shares - And the list of returned shares has 1 shares - And share 0 is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And user "participant4" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2 | - | uid_file_owner | participant1 | - | displayname_file_owner | participant1-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | participant4 | - | share_with_displayname | participant4-displayname | - | share_type | 0 | diff --git a/tests/integration/features/sharing-4/settings.feature b/tests/integration/features/sharing-4/settings.feature deleted file mode 100644 index 40e76e460d5..00000000000 --- a/tests/integration/features/sharing-4/settings.feature +++ /dev/null @@ -1,14 +0,0 @@ -Feature: sharing-4/settings - - Background: - Given user "participant1" exists - Given user "participant2" exists - - Scenario: Do not allow setting a shared folder as attachment_folder - Given user "participant1" creates folder "/test" - When user "participant1" sets setting "attachment_folder" to "/test" with 200 (v1) - Then user "participant1" has capability "spreed=>config=>attachments=>folder" set to "/test" - Given user "participant2" creates folder "/test-participant2" - Given user "participant2" shares "/test-participant2" with user "participant1" with OCS 100 - When user "participant1" sets setting "attachment_folder" to "/test-participant2" with 400 (v1) - Then user "participant1" has capability "spreed=>config=>attachments=>folder" set to "/test" diff --git a/tests/integration/features/sharing-4/sharees.feature b/tests/integration/features/sharing-4/sharees.feature deleted file mode 100644 index a692953bd95..00000000000 --- a/tests/integration/features/sharing-4/sharees.feature +++ /dev/null @@ -1,278 +0,0 @@ -Feature: sharees - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - And group "attendees1" exists - And user "participant2" is member of group "attendees1" - - Scenario: search empty name - Given user "participant1" creates room "unnamed own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Group room" with 200 (v4) - And user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant1" gets sharees for - | search | | - Then "exact rooms" sharees returned is empty - And "rooms" sharees returned is empty - - Scenario: search one-to-one room - Given user "participant1" creates room "one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - When user "participant1" gets sharees for - | search | participant2 | - Then "exact rooms" sharees returned is empty - And "rooms" sharees returned are - | participant2-displayname | one-to-one room | - - - Scenario: search own group room with no matches - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Group room" with 200 (v4) - When user "participant1" gets sharees for - | search | unmatched search term | - Then "exact rooms" sharees returned is empty - And "rooms" sharees returned is empty - - Scenario: search own group room with single match - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Group room" with 200 (v4) - When user "participant1" gets sharees for - | search | room | - Then "exact rooms" sharees returned is empty - And "rooms" sharees returned are - | Group room | own group room | - - Scenario: search own group room with single exact match - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Group room" with 200 (v4) - When user "participant1" gets sharees for - | search | group room | - Then "exact rooms" sharees returned are - | Group room | own group room | - And "rooms" sharees returned is empty - - Scenario: search own group room with several matches - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Group room" with 200 (v4) - And user "participant1" creates room "another own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "another own group room" to "Another group room" with 200 (v4) - When user "participant1" gets sharees for - | search | group room | - Then "exact rooms" sharees returned are - | Group room | own group room | - And "rooms" sharees returned are - | Another group room | another own group room | - - - - Scenario: search group room not invited to - Given user "participant1" creates room "group room not invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room not invited to" to "Group room" with 200 (v4) - And user "participant2" creates room "another group room not invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "another group room not invited to" to "Another group room" with 200 (v4) - When user "participant3" gets sharees for - | search | group room | - Then "exact rooms" sharees returned is empty - And "rooms" sharees returned is empty - - Scenario: search group room invited to with single match - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - When user "participant2" gets sharees for - | search | room | - Then "exact rooms" sharees returned is empty - And "rooms" sharees returned are - | Group room | group room invited to | - - Scenario: search group room invited to with single exact match - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - When user "participant2" gets sharees for - | search | group room | - Then "exact rooms" sharees returned are - | Group room | group room invited to | - And "rooms" sharees returned is empty - - Scenario: search group room invited to with several matches - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "another group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "another group room invited to" to "Another group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "another group room invited to" with 200 (v4) - When user "participant2" gets sharees for - | search | group room | - Then "exact rooms" sharees returned are - | Group room | group room invited to | - And "rooms" sharees returned are - | Another group room | another group room invited to | - - - - Scenario: search group room invited to as member of a group with single match - Given user "participant1" creates room "group room invited to as member of a group" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" renames room "group room invited to as member of a group" to "Group room" with 200 (v4) - When user "participant2" gets sharees for - | search | room | - Then "exact rooms" sharees returned is empty - And "rooms" sharees returned are - | Group room | group room invited to as member of a group | - - Scenario: search group room invited to as member of a group with single exact match - Given user "participant1" creates room "group room invited to as member of a group" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" renames room "group room invited to as member of a group" to "Group room" with 200 (v4) - When user "participant2" gets sharees for - | search | group room | - Then "exact rooms" sharees returned are - | Group room | group room invited to as member of a group | - And "rooms" sharees returned is empty - - Scenario: search group room invited to as member of a group with several matches - Given user "participant1" creates room "group room invited to as member of a group" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" renames room "group room invited to as member of a group" to "Group room" with 200 (v4) - And user "participant1" creates room "another group room invited to as member of a group" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" renames room "another group room invited to as member of a group" to "Another group room" with 200 (v4) - When user "participant2" gets sharees for - | search | group room | - Then "exact rooms" sharees returned are - | Group room | group room invited to as member of a group | - And "rooms" sharees returned are - | Another group room | another group room invited to as member of a group | - - - - Scenario: search public room not joined to - Given user "participant1" creates room "public room not joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room not joined to" to "Public room" with 200 (v4) - And user "participant2" creates room "another public room not joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "another public room not joined to" to "Another public room" with 200 (v4) - When user "participant3" gets sharees for - | search | public room | - Then "exact rooms" sharees returned is empty - And "rooms" sharees returned is empty - - Scenario: search public room self joined to with single match - Given user "participant1" creates room "public room self joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room self joined to" to "Public room" with 200 (v4) - And user "participant2" joins room "public room self joined to" with 200 (v4) - When user "participant2" gets sharees for - | search | room | - Then "exact rooms" sharees returned is empty - And "rooms" sharees returned are - | Public room | public room self joined to | - - Scenario: search public room self joined to with single exact match - Given user "participant1" creates room "public room self joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room self joined to" to "Public room" with 200 (v4) - And user "participant2" joins room "public room self joined to" with 200 (v4) - When user "participant2" gets sharees for - | search | public room | - Then "exact rooms" sharees returned are - | Public room | public room self joined to | - And "rooms" sharees returned is empty - - Scenario: search public room self joined to with several matches - Given user "participant1" creates room "public room self joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room self joined to" to "Public room" with 200 (v4) - And user "participant2" joins room "public room self joined to" with 200 (v4) - And user "participant1" creates room "another public room self joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "another public room self joined to" to "Another public room" with 200 (v4) - And user "participant2" joins room "another public room self joined to" with 200 (v4) - When user "participant2" gets sharees for - | search | public room | - Then "exact rooms" sharees returned are - | Public room | public room self joined to | - And "rooms" sharees returned are - | Another public room | another public room self joined to | - - - - Scenario: search room with several matches - Given user "participant1" creates room "group room invited to as member of a group" (v4) - | roomType | 2 | - | invite | attendees1 | - And user "participant1" renames room "group room invited to as member of a group" to "Room" with 200 (v4) - And user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - And user "participant1" creates room "group room not invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room not invited to" to "Group room not invited to" with 200 (v4) - And user "participant2" creates room "case insensitive match" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant1" creates room "one-to-one room invited to" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant2" creates room "own public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "own public room" to "Own public room" with 200 (v4) - When user "participant2" gets sharees for - | search | room | - Then "exact rooms" sharees returned are - | Room | group room invited to as member of a group | - | room | case insensitive match | - And "rooms" sharees returned are - | Group room | group room invited to | - | Own group room | own group room | - | Own public room | own public room | diff --git a/tests/integration/features/sharing-4/transfer-ownership.feature b/tests/integration/features/sharing-4/transfer-ownership.feature deleted file mode 100644 index cbf5963443c..00000000000 --- a/tests/integration/features/sharing-4/transfer-ownership.feature +++ /dev/null @@ -1,144 +0,0 @@ -Feature: transfer-ownership - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: transfer ownership of a file shared with a room to a user in the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When transfering ownership from "participant1" to "participant2" - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | REGEXP /\/Transferred from participant1-displayname on .*\/welcome.txt/ | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - - Scenario: transfer ownership of a file reshared with a room to a user in the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant3" shares "welcome.txt" with user "participant1" with OCS 100 - And user "participant1" accepts last share - And user "participant1" shares "welcome (2).txt" with room "group room" with OCS 100 - When transfering ownership from "participant1" to "participant2" - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant3 | - | displayname_file_owner | participant3-displayname | - | path | /welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/welcome (2).txt | - | file_target | /welcome (2).txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant3 | - | displayname_file_owner | participant3-displayname | - | path | /Talk/welcome (2).txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome (2).txt | - | file_target | /Talk/welcome (2).txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | uid_file_owner | participant3 | - | displayname_file_owner | participant3-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant3 | - | file_target | /{TALK_PLACEHOLDER}/welcome (2).txt | - | share_with | group room | - | share_with_displayname | Group room | - - # This is a special case in which even if the (now) sharer is not in a room - # the room share is valid and other participants can access that share. - Scenario: transfer ownership of a file shared with a room to a user not in the room - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - When transfering ownership from "participant1" to "participant2" - Then user "participant1" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | REGEXP /\/Transferred from participant1-displayname on .*\/welcome.txt/ | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | private_conversation | - | share_with_displayname | Private conversation | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | diff --git a/tests/integration/features/sharing-4/update.feature b/tests/integration/features/sharing-4/update.feature deleted file mode 100644 index 3225505a12b..00000000000 --- a/tests/integration/features/sharing-4/update.feature +++ /dev/null @@ -1,1089 +0,0 @@ -Feature: update - - Background: - Given user "participant1" exists - Given user "participant2" exists - Given user "participant3" exists - - Scenario: update share with an owned one-to-one room - Given user "participant1" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" shares "welcome.txt" with room "own one-to-one room" with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own one-to-one room | - | share_with_displayname | participant2-displayname | - | permissions | 1 | - | expiration | +3 days | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own one-to-one room | - | share_with_displayname | participant2-displayname | - | permissions | 1 | - | expiration | +3 days | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own one-to-one room | - | share_with_displayname | participant1-displayname | - | permissions | 1 | - | expiration | +3 days | - - Scenario: update share with a one-to-one room invited to - Given user "participant2" creates room "one-to-one room invited to" (v4) - | roomType | 1 | - | invite | participant1 | - And user "participant1" shares "welcome.txt" with room "one-to-one room invited to" with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | one-to-one room invited to | - | share_with_displayname | participant2-displayname | - | permissions | 1 | - | expiration | +3 days | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | one-to-one room invited to | - | share_with_displayname | participant2-displayname | - | permissions | 1 | - | expiration | +3 days | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | one-to-one room invited to | - | share_with_displayname | participant1-displayname | - | permissions | 1 | - | expiration | +3 days | - - Scenario: update share with an owned group room - Given user "participant1" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "own group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - | permissions | 1 | - | expiration | +3 days | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - | permissions | 1 | - | expiration | +3 days | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - | permissions | 1 | - | expiration | +3 days | - - Scenario: update share with a group room invited to - Given user "participant2" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "group room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - | permissions | 1 | - | expiration | +3 days | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - | permissions | 1 | - | expiration | +3 days | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - | permissions | 1 | - | expiration | +3 days | - - Scenario: update share with an owned public room - Given user "participant1" creates room "own public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "own public room" to "Own public room" with 200 (v4) - And user "participant1" adds user "participant2" to room "own public room" with 200 (v4) - And user "participant3" joins room "own public room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "own public room" with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own public room | - | share_with_displayname | Own public room | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own public room | - | share_with_displayname | Own public room | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own public room | - | share_with_displayname | Own public room | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own public room | - | share_with_displayname | Own public room | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - - Scenario: update share with a public room invited to - Given user "participant2" creates room "public room invited to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "public room invited to" to "Public room invited to" with 200 (v4) - And user "participant2" adds user "participant1" to room "public room invited to" with 200 (v4) - And user "participant3" joins room "public room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room invited to" with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - - Scenario: update share with a public room self joined to - Given user "participant2" creates room "public room self joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "public room self joined to" to "Public room self joined to" with 200 (v4) - And user "participant1" joins room "public room self joined to" with 200 (v4) - And user "participant3" joins room "public room self joined to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room self joined to" with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room self joined to | - | share_with_displayname | Public room self joined to | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room self joined to | - | share_with_displayname | Public room self joined to | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room self joined to | - | share_with_displayname | Public room self joined to | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room self joined to | - | share_with_displayname | Public room self joined to | - | token | A_TOKEN | - | permissions | 1 | - | expiration | +3 days | - - - - Scenario: update (unknown) share with a one-to-one room not invited to - Given user "participant2" creates room "one-to-one room not invited to" (v4) - | roomType | 1 | - | invite | participant3 | - And user "participant2" shares "welcome.txt" with room "one-to-one room not invited to" with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | one-to-one room not invited to | - | share_with_displayname | participant3-displayname | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | one-to-one room not invited to | - | share_with_displayname | participant2-displayname | - - Scenario: update (unknown) share with a group room not invited to - Given user "participant2" creates room "group room not invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "group room not invited to" to "Group room not invited to" with 200 (v4) - And user "participant2" adds user "participant3" to room "group room not invited to" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "group room not invited to" with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room not invited to | - | share_with_displayname | Group room not invited to | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room not invited to | - | share_with_displayname | Group room not invited to | - - Scenario: update (unknown) share with a public room not joined to - Given user "participant2" creates room "public room not joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "public room not joined to" to "Public room not joined to" with 200 (v4) - And user "participant2" adds user "participant3" to room "public room not joined to" with 200 (v4) - And user "participant2" shares "welcome.txt" with room "public room not joined to" with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant2" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant2 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room not joined to | - | share_with_displayname | Public room not joined to | - | token | A_TOKEN | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant2 | - | displayname_owner | participant2-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room not joined to | - | share_with_displayname | Public room not joined to | - | token | A_TOKEN | - - - - Scenario: update received share with an owned one-to-one room - Given user "participant2" creates room "own one-to-one room" (v4) - | roomType | 1 | - | invite | participant1 | - And user "participant1" shares "welcome.txt" with room "own one-to-one room" with OCS 100 - When user "participant2" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own one-to-one room | - | share_with_displayname | participant2-displayname | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own one-to-one room | - | share_with_displayname | participant1-displayname | - - Scenario: update received share with a one-to-one room invited to - Given user "participant1" creates room "one-to-one room invited to" (v4) - | roomType | 1 | - | invite | participant2 | - And user "participant1" shares "welcome.txt" with room "one-to-one room invited to" with OCS 100 - When user "participant2" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | one-to-one room invited to | - | share_with_displayname | participant2-displayname | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | one-to-one room invited to | - | share_with_displayname | participant1-displayname | - - Scenario: update received share with an owned group room - Given user "participant2" creates room "own group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant2" renames room "own group room" to "Own group room" with 200 (v4) - And user "participant2" adds user "participant1" to room "own group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "own group room" with OCS 100 - When user "participant2" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own group room | - | share_with_displayname | Own group room | - - Scenario: update received share with a group room invited to - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - When user "participant2" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - - Scenario: update received share with a group room no longer invited to - Given user "participant1" creates room "group room no longer invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room no longer invited to" to "Group room no longer invited to" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room no longer invited to" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room no longer invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room no longer invited to" with OCS 100 - And user "participant1" removes "participant2" from room "group room no longer invited to" with 200 (v4) - When user "participant2" updates last share with - | permissions | 1 | - | expiration | +3 days | - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room no longer invited to | - | share_with_displayname | Group room no longer invited to | - And user "participant2" gets last share - And the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room no longer invited to | - | share_with_displayname | Group room no longer invited to | - - Scenario: update received share with an owned public room - Given user "participant2" creates room "own public room" (v4) - | roomType | 3 | - | roomName | room | - And user "participant2" renames room "own public room" to "Own public room" with 200 (v4) - And user "participant2" adds user "participant1" to room "own public room" with 200 (v4) - And user "participant3" joins room "own public room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "own public room" with OCS 100 - When user "participant2" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | own public room | - | share_with_displayname | Own public room | - | token | A_TOKEN | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own public room | - | share_with_displayname | Own public room | - | token | A_TOKEN | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | own public room | - | share_with_displayname | Own public room | - | token | A_TOKEN | - - Scenario: update received share with a public room invited to - Given user "participant1" creates room "public room invited to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room invited to" to "Public room invited to" with 200 (v4) - And user "participant1" adds user "participant2" to room "public room invited to" with 200 (v4) - And user "participant3" joins room "public room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room invited to" with OCS 100 - When user "participant2" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room invited to | - | share_with_displayname | Public room invited to | - | token | A_TOKEN | - - Scenario: update received share with a public room self joined to - Given user "participant1" creates room "public room self joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room self joined to" to "Public room self joined to" with 200 (v4) - And user "participant2" joins room "public room self joined to" with 200 (v4) - And user "participant3" joins room "public room self joined to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room self joined to" with OCS 100 - When user "participant2" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room self joined to | - | share_with_displayname | Public room self joined to | - | token | A_TOKEN | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room self joined to | - | share_with_displayname | Public room self joined to | - | token | A_TOKEN | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room self joined to | - | share_with_displayname | Public room self joined to | - | token | A_TOKEN | - - Scenario: update received share with a public room no longer joined to - Given user "participant1" creates room "public room no longer joined to" (v4) - | roomType | 3 | - | roomName | room | - And user "participant1" renames room "public room no longer joined to" to "Public room no longer joined to" with 200 (v4) - And user "participant2" joins room "public room no longer joined to" with 200 (v4) - And user "participant3" joins room "public room no longer joined to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "public room no longer joined to" with OCS 100 - And user "participant2" leaves room "public room no longer joined to" with 200 (v4) - When user "participant2" updates last share with - | permissions | 1 | - | expiration | +3 days | - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | public room no longer joined to | - | share_with_displayname | Public room no longer joined to | - | token | A_TOKEN | - And user "participant2" gets last share - And the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | public room no longer joined to | - | share_with_displayname | Public room no longer joined to | - | token | A_TOKEN | - - - - Scenario: update received share after moving it - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant2" creates folder "/test" - And user "participant2" moves file "/Talk/welcome.txt" to "/test/renamed.txt" with 201 - When user "participant2" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /test/renamed.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/test/renamed.txt | - | file_target | /test/renamed.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - - Scenario: update received share with a room no longer invited to after moving it - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - And user "participant1" adds user "participant3" to room "group room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant2" creates folder "/test" - And user "participant2" moves file "/Talk/welcome.txt" to "/test/renamed.txt" with 201 - And user "participant1" removes "participant2" from room "group room invited to" with 200 (v4) - When user "participant2" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - And user "participant2" gets last share - And the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant3" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - - - - Scenario: update received share with increased permissions - Given user "participant1" creates room "group room invited to" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room invited to" to "Group room invited to" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room invited to" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room invited to" with OCS 100 - And user "participant1" updates last share with - | permissions | 1 | - When user "participant2" updates last share with - | permissions | 19 | - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - | permissions | 1 | - And user "participant2" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /Talk/welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | shared::/Talk/welcome.txt | - | file_target | /Talk/welcome.txt | - | share_with | group room invited to | - | share_with_displayname | Group room invited to | - | permissions | 1 | - - - - Scenario: update share after sharee deleted it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" deletes last share with OCS 100 - When user "participant1" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | permissions | 1 | - | expiration | +3 days | - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - | permissions | 1 | - | expiration | +3 days | - And user "participant2" gets last share - And the OCS status code should be "404" - - Scenario: update received share after deleting it - Given user "participant1" creates room "group room" (v4) - | roomType | 2 | - | roomName | room | - And user "participant1" renames room "group room" to "Group room" with 200 (v4) - And user "participant1" adds user "participant2" to room "group room" with 200 (v4) - And user "participant1" shares "welcome.txt" with room "group room" with OCS 100 - And user "participant2" deletes last share with OCS 100 - When user "participant2" updates last share with - | permissions | 1 | - | expireDate | +3 days | - Then the OCS status code should be "404" - And the HTTP status code should be "200" - And user "participant1" gets last share - And share is returned with - | uid_owner | participant1 | - | displayname_owner | participant1-displayname | - | path | /welcome.txt | - | item_type | file | - | mimetype | text/plain | - | storage_id | home::participant1 | - | file_target | /{TALK_PLACEHOLDER}/welcome.txt | - | share_with | group room | - | share_with_displayname | Group room | - And user "participant2" gets last share - And the OCS status code should be "404" From b422ad3dafdc68a2a3d00ccd7191da4e770a00d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=BCller?= Date: Wed, 12 Jun 2024 22:34:23 +0200 Subject: [PATCH 2/2] Remove unused workflows --- .github/workflows/appstore-build-publish.yml | 175 ---------------- .github/workflows/command-rebase.yml | 54 ----- .../workflows/dependabot-approve-merge.yml | 50 ----- .github/workflows/fixup.yml | 36 ---- .github/workflows/integration-mysql.yml | 163 --------------- .github/workflows/integration-oci.yml | 175 ---------------- .github/workflows/integration-pgsql.yml | 2 +- .github/workflows/integration-sqlite.yml | 154 -------------- .github/workflows/jest.yml | 48 ----- .github/workflows/lint-eslint.yml | 95 --------- .github/workflows/lint-info-xml.yml | 36 ---- .github/workflows/lint-php-cs.yml | 48 ----- .github/workflows/lint-php.yml | 70 ------- .github/workflows/lint-stylelint.yml | 51 ----- .github/workflows/node.yml | 102 --------- .../workflows/occ-command-documentation.yml | 91 -------- .github/workflows/openapi.yml | 94 --------- .github/workflows/phpunit-mariadb.yml | 190 ----------------- .github/workflows/phpunit-mysql.yml | 188 ----------------- .github/workflows/phpunit-oci.yml | 196 ------------------ .github/workflows/phpunit-pgsql.yml | 186 ----------------- .github/workflows/phpunit-sqlite.yml | 175 ---------------- .github/workflows/pr-feedback.yml | 50 ----- .github/workflows/psalm.yml | 44 ---- .github/workflows/reuse.yml | 20 -- .../update-nextcloud-ocp-approve-merge.yml | 52 ----- .github/workflows/update-nextcloud-ocp.yml | 119 ----------- 27 files changed, 1 insertion(+), 2663 deletions(-) delete mode 100644 .github/workflows/appstore-build-publish.yml delete mode 100644 .github/workflows/command-rebase.yml delete mode 100644 .github/workflows/dependabot-approve-merge.yml delete mode 100644 .github/workflows/fixup.yml delete mode 100644 .github/workflows/integration-mysql.yml delete mode 100644 .github/workflows/integration-oci.yml delete mode 100644 .github/workflows/integration-sqlite.yml delete mode 100644 .github/workflows/jest.yml delete mode 100644 .github/workflows/lint-eslint.yml delete mode 100644 .github/workflows/lint-info-xml.yml delete mode 100644 .github/workflows/lint-php-cs.yml delete mode 100644 .github/workflows/lint-php.yml delete mode 100644 .github/workflows/lint-stylelint.yml delete mode 100644 .github/workflows/node.yml delete mode 100644 .github/workflows/occ-command-documentation.yml delete mode 100644 .github/workflows/openapi.yml delete mode 100644 .github/workflows/phpunit-mariadb.yml delete mode 100644 .github/workflows/phpunit-mysql.yml delete mode 100644 .github/workflows/phpunit-oci.yml delete mode 100644 .github/workflows/phpunit-pgsql.yml delete mode 100644 .github/workflows/phpunit-sqlite.yml delete mode 100644 .github/workflows/pr-feedback.yml delete mode 100644 .github/workflows/psalm.yml delete mode 100644 .github/workflows/reuse.yml delete mode 100644 .github/workflows/update-nextcloud-ocp-approve-merge.yml delete mode 100644 .github/workflows/update-nextcloud-ocp.yml diff --git a/.github/workflows/appstore-build-publish.yml b/.github/workflows/appstore-build-publish.yml deleted file mode 100644 index 5c2ce73630f..00000000000 --- a/.github/workflows/appstore-build-publish.yml +++ /dev/null @@ -1,175 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Build and publish app release - -on: - release: - types: [published] - -jobs: - build_and_publish: - runs-on: ubuntu-latest - - # Only allowed to be run on nextcloud-releases repositories - if: ${{ github.repository_owner == 'nextcloud-releases' }} - - steps: - - name: Check actor permission - uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0 - with: - require: write - - - name: Set app env - run: | - # Split and keep last - echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV - - - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - path: ${{ env.APP_NAME }} - - - name: Get appinfo data - id: appinfo - uses: skjnldsv/xpath-action@7e6a7c379d0e9abc8acaef43df403ab4fc4f770c # master - with: - filename: ${{ env.APP_NAME }}/appinfo/info.xml - expression: "//info//dependencies//nextcloud/@min-version" - - - name: Read package.json node and npm engines version - uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 - id: versions - # Continue if no package.json - continue-on-error: true - with: - path: ${{ env.APP_NAME }} - fallbackNode: '^20' - fallbackNpm: '^10' - - - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - # Skip if no package.json - if: ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3 - with: - node-version: ${{ steps.versions.outputs.nodeVersion }} - - - name: Set up npm ${{ steps.versions.outputs.npmVersion }} - # Skip if no package.json - if: ${{ steps.versions.outputs.npmVersion }} - run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" - - - name: Get php version - id: php-versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - with: - filename: ${{ env.APP_NAME }}/appinfo/info.xml - - - name: Set up php ${{ steps.php-versions.outputs.php-min }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ steps.php-versions.outputs.php-min }} - coverage: none - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Check composer.json - id: check_composer - uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 - with: - files: "${{ env.APP_NAME }}/composer.json" - - - name: Install composer dependencies - if: steps.check_composer.outputs.files_exists == 'true' - run: | - cd ${{ env.APP_NAME }} - composer install --no-dev - - - name: Build ${{ env.APP_NAME }} - # Skip if no package.json - if: ${{ steps.versions.outputs.nodeVersion }} - env: - NODE_ENV: production - run: | - cd ${{ env.APP_NAME }} - npm ci - npm run build --if-present - - - name: Check Krankerl config - id: krankerl - uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 - with: - files: ${{ env.APP_NAME }}/krankerl.toml - - - name: Install Krankerl - if: steps.krankerl.outputs.files_exists == 'true' - run: | - wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb - sudo dpkg -i krankerl_0.14.0_amd64.deb - - - name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with krankerl - if: steps.krankerl.outputs.files_exists == 'true' - run: | - cd ${{ env.APP_NAME }} - krankerl package - - - name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with makefile - if: steps.krankerl.outputs.files_exists != 'true' - run: | - cd ${{ env.APP_NAME }} - make appstore - - - name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }} - continue-on-error: true - id: server-checkout - run: | - NCVERSION=${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }} - wget --quiet https://download.nextcloud.com/server/releases/latest-$NCVERSION.zip - unzip latest-$NCVERSION.zip - - - name: Checkout server master fallback - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - if: ${{ steps.server-checkout.outcome != 'success' }} - with: - submodules: true - repository: nextcloud/server - path: nextcloud - - - name: Sign app - run: | - # Extracting release - cd ${{ env.APP_NAME }}/build/artifacts - tar -xvf ${{ env.APP_NAME }}.tar.gz - cd ../../../ - # Setting up keys - echo "${{ secrets.APP_PRIVATE_KEY }}" > ${{ env.APP_NAME }}.key - wget --quiet "https://github.com/nextcloud/app-certificate-requests/raw/master/${{ env.APP_NAME }}/${{ env.APP_NAME }}.crt" - # Signing - php nextcloud/occ integrity:sign-app --privateKey=../${{ env.APP_NAME }}.key --certificate=../${{ env.APP_NAME }}.crt --path=../${{ env.APP_NAME }}/build/artifacts/${{ env.APP_NAME }} - # Rebuilding archive - cd ${{ env.APP_NAME }}/build/artifacts - tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }} - - - name: Attach tarball to github release - uses: svenstaro/upload-release-action@04733e069f2d7f7f0b4aebc4fbdbce8613b03ccd # v2 - id: attach_to_release - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ env.APP_NAME }}/build/artifacts/${{ env.APP_NAME }}.tar.gz - asset_name: ${{ env.APP_NAME }}-${{ env.APP_VERSION }}.tar.gz - tag: ${{ github.ref }} - overwrite: true - - - name: Upload app to Nextcloud appstore - uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1 - with: - app_name: ${{ env.APP_NAME }} - appstore_token: ${{ secrets.APPSTORE_TOKEN }} - download_url: ${{ steps.attach_to_release.outputs.browser_download_url }} - app_private_key: ${{ secrets.APP_PRIVATE_KEY }} diff --git a/.github/workflows/command-rebase.yml b/.github/workflows/command-rebase.yml deleted file mode 100644 index dbc1ed8eb03..00000000000 --- a/.github/workflows/command-rebase.yml +++ /dev/null @@ -1,54 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Rebase command - -on: - issue_comment: - types: created - -permissions: - contents: read - -jobs: - rebase: - runs-on: ubuntu-latest - permissions: - contents: none - - # On pull requests and if the comment starts with `/rebase` - if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase') - - steps: - - name: Add reaction on start - uses: peter-evans/create-or-update-comment@ca08ebd5dc95aa0cd97021e9708fcd6b87138c9b # v3.0.1 - with: - token: ${{ secrets.COMMAND_BOT_PAT }} - repository: ${{ github.event.repository.full_name }} - comment-id: ${{ github.event.comment.id }} - reaction-type: "+1" - - - name: Checkout the latest code - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - with: - fetch-depth: 0 - token: ${{ secrets.COMMAND_BOT_PAT }} - - - name: Automatic Rebase - uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8 - env: - GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }} - - - name: Add reaction on failure - uses: peter-evans/create-or-update-comment@ca08ebd5dc95aa0cd97021e9708fcd6b87138c9b # v3.0.1 - if: failure() - with: - token: ${{ secrets.COMMAND_BOT_PAT }} - repository: ${{ github.event.repository.full_name }} - comment-id: ${{ github.event.comment.id }} - reaction-type: "-1" diff --git a/.github/workflows/dependabot-approve-merge.yml b/.github/workflows/dependabot-approve-merge.yml deleted file mode 100644 index 19d8b389ad3..00000000000 --- a/.github/workflows/dependabot-approve-merge.yml +++ /dev/null @@ -1,50 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Dependabot - -on: - pull_request_target: - branches: - - main - - master - - stable* - -permissions: - contents: read - -concurrency: - group: dependabot-approve-merge-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - auto-approve-merge: - if: github.actor == 'dependabot[bot]' || github.actor == 'renovate[bot]' - runs-on: ubuntu-latest-low - permissions: - # for hmarr/auto-approve-action to approve PRs - pull-requests: write - - steps: - - uses: mdecoleman/pr-branch-name@bab4c71506bcd299fb350af63bb8e53f2940a599 # v2.0.0 - id: branchname - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - # Github actions bot approve - - uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2 - if: contains(steps.branchname.outputs.branch, '/webrtc-adapter-') != true && contains(steps.branchname.outputs.branch, '/nextcloud/vue-') != true - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - - # Nextcloud bot approve and merge request - - uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2 - if: contains(steps.branchname.outputs.branch, '/webrtc-adapter-') != true && contains(steps.branchname.outputs.branch, '/nextcloud/vue-') != true - with: - target: minor - github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }} diff --git a/.github/workflows/fixup.yml b/.github/workflows/fixup.yml deleted file mode 100644 index 69da2bbb039..00000000000 --- a/.github/workflows/fixup.yml +++ /dev/null @@ -1,36 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Block fixup and squash commits - -on: - pull_request: - types: [opened, ready_for_review, reopened, synchronize] - -permissions: - contents: read - -concurrency: - group: fixup-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - commit-message-check: - if: github.event.pull_request.draft == false - - permissions: - pull-requests: write - name: Block fixup and squash commits - - runs-on: ubuntu-latest-low - - steps: - - name: Run check - uses: skjnldsv/block-fixup-merge-action@c138ea99e45e186567b64cf065ce90f7158c236a # v2 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/integration-mysql.yml b/.github/workflows/integration-mysql.yml deleted file mode 100644 index ef215214945..00000000000 --- a/.github/workflows/integration-mysql.yml +++ /dev/null @@ -1,163 +0,0 @@ -# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Integration mysql - -on: - pull_request: - paths: - # Only running on PR for this file to save CI time (otherwise pgsql only) - - '.github/workflows/integration-mysql.yml' - schedule: - - cron: "5 2 * * *" - -permissions: - contents: read - -concurrency: - group: integration-mysql-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/integration/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - integration-mysql: - runs-on: ubuntu-latest - - needs: changes - if: needs.changes.outputs.src != 'false' - - strategy: - fail-fast: false - matrix: - test-suite: ['callapi', 'chat-1', 'chat-2', 'command', 'conversation-1', 'conversation-2', 'conversation-3', 'conversation-4', 'conversation-5', 'federation', 'integration', 'sharing-1', 'sharing-2', 'sharing-3', 'sharing-4'] - php-versions: ['8.2'] - server-versions: ['master'] - guests-versions: ['master'] - call-summary-bot-versions: ['main'] - notifications-versions: ['master'] - - services: - mysql: - image: ghcr.io/nextcloud/continuous-integration-mariadb-10.6:latest - ports: - - 4444:3306/tcp - env: - MYSQL_ROOT_PASSWORD: rootpassword - options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10 - - steps: - - name: Set app env - run: | - # Split and keep last - echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - - - name: Checkout server - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - submodules: true - repository: nextcloud/server - ref: ${{ matrix.server-versions }} - - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - path: apps/${{ env.APP_NAME }} - - - name: Checkout call_summary_bot app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - repository: nextcloud/call_summary_bot - path: apps/call_summary_bot - ref: ${{ matrix.call-summary-bot-versions }} - - - name: Checkout guests app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - repository: nextcloud/guests - path: apps/guests - ref: ${{ matrix.guests-versions }} - - - name: Checkout notifications app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - repository: nextcloud/notifications - path: apps/notifications - ref: ${{ matrix.notifications-versions }} - - - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ matrix.php-versions }} - # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up production dependencies - working-directory: apps/${{ env.APP_NAME }} - run: composer i --no-dev - - - name: Set up behat dependencies - working-directory: apps/${{ env.APP_NAME }}/tests/integration - run: composer i - - - name: Set up Nextcloud - env: - DB_PORT: 4444 - run: | - mkdir data - ./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin - ./occ config:system:set debug --value=true --type=boolean - ./occ config:system:set hashing_default_password --value=true --type=boolean - ./occ app:enable --force ${{ env.APP_NAME }} - ./occ app:enable --force call_summary_bot - ./occ app:enable --force guests - ./occ app:enable --force notifications - - - name: Run integration - working-directory: apps/${{ env.APP_NAME }}/tests/integration - run: bash run.sh features/${{ matrix.test-suite }} - - - name: Print logs - if: always() - run: | - cat data/nextcloud.log - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, integration-mysql] - - if: always() - - name: integration-mysql-summary - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.integration-mysql.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/integration-oci.yml b/.github/workflows/integration-oci.yml deleted file mode 100644 index 11f46081670..00000000000 --- a/.github/workflows/integration-oci.yml +++ /dev/null @@ -1,175 +0,0 @@ -# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Integration oci - -on: - pull_request: - paths: - # Only running on PR for this file to save CI time (otherwise pgsql only) - - '.github/workflows/integration-oci.yml' - schedule: - - cron: "5 2 * * *" - -permissions: - contents: read - -concurrency: - group: integration-oci-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/integration/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - integration-oci: - runs-on: ubuntu-latest - - needs: changes - if: needs.changes.outputs.src != 'false' - - strategy: - fail-fast: false - matrix: - test-suite: ['callapi', 'chat-1', 'chat-2', 'command', 'conversation-1', 'conversation-2', 'conversation-3', 'conversation-4', 'conversation-5', 'federation', 'integration', 'sharing-1', 'sharing-2', 'sharing-3', 'sharing-4'] - php-versions: ['8.2'] - server-versions: ['master'] - guests-versions: ['master'] - call-summary-bot-versions: ['main'] - notifications-versions: ['master'] - - services: - oracle: - image: ghcr.io/gvenzl/oracle-xe:11 - - # Provide passwords and other environment variables to container - env: - ORACLE_RANDOM_PASSWORD: true - APP_USER: autotest - APP_USER_PASSWORD: owncloud - - # Forward Oracle port - ports: - - 1521:1521/tcp - - # Provide healthcheck script options for startup - options: >- - --health-cmd healthcheck.sh - --health-interval 10s - --health-timeout 5s - --health-retries 10 - - steps: - - name: Set app env - run: | - # Split and keep last - echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - - - name: Checkout server - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - submodules: true - repository: nextcloud/server - ref: ${{ matrix.server-versions }} - - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - path: apps/${{ env.APP_NAME }} - - - name: Checkout call_summary_bot app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - repository: nextcloud/call_summary_bot - path: apps/call_summary_bot - ref: ${{ matrix.call-summary-bot-versions }} - - - name: Checkout guests app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - repository: nextcloud/guests - path: apps/guests - ref: ${{ matrix.guests-versions }} - - - name: Checkout notifications app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - repository: nextcloud/notifications - path: apps/notifications - ref: ${{ matrix.notifications-versions }} - - - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ matrix.php-versions }} - # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, oci8 - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up production dependencies - working-directory: apps/${{ env.APP_NAME }} - run: composer i --no-dev - - - name: Set up behat dependencies - working-directory: apps/${{ env.APP_NAME }}/tests/integration - run: composer i - - - name: Set up Nextcloud - env: - DB_PORT: 1521 - run: | - mkdir data - ./occ maintenance:install --verbose --database=oci --database-name=XE --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=autotest --database-pass=owncloud --admin-user admin --admin-pass admin - ./occ config:system:set debug --value=true --type=boolean - ./occ config:system:set hashing_default_password --value=true --type=boolean - ./occ app:enable --force ${{ env.APP_NAME }} - ./occ app:enable --force call_summary_bot - ./occ app:enable --force guests - ./occ app:enable --force notifications - - - name: Run integration - working-directory: apps/${{ env.APP_NAME }}/tests/integration - run: bash run.sh features/${{ matrix.test-suite }} - - - name: Print logs - if: always() - run: | - cat data/nextcloud.log - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, integration-oci] - - if: always() - - name: integration-oci-summary - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.integration-oci.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/integration-pgsql.yml b/.github/workflows/integration-pgsql.yml index 3bcc2f2c58a..8fb6b07fda8 100644 --- a/.github/workflows/integration-pgsql.yml +++ b/.github/workflows/integration-pgsql.yml @@ -49,7 +49,7 @@ jobs: strategy: fail-fast: false matrix: - test-suite: ['callapi', 'chat-1', 'chat-2', 'command', 'conversation-1', 'conversation-2', 'conversation-3', 'conversation-4', 'conversation-5', 'federation', 'integration', 'sharing-1', 'sharing-2', 'sharing-3', 'sharing-4'] + test-suite: ['sharing-2'] php-versions: ['8.3'] server-versions: ['master'] guests-versions: ['master'] diff --git a/.github/workflows/integration-sqlite.yml b/.github/workflows/integration-sqlite.yml deleted file mode 100644 index e3192481571..00000000000 --- a/.github/workflows/integration-sqlite.yml +++ /dev/null @@ -1,154 +0,0 @@ -# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Integration sqlite - -on: - pull_request: - paths: - # Only running on PR for this file to save CI time (otherwise pgsql only) - - '.github/workflows/integration-sqlite.yml' - schedule: - - cron: "5 2 * * *" - -permissions: - contents: read - -concurrency: - group: integration-sqlite-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/integration/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - integration-sqlite: - runs-on: ubuntu-latest - - needs: changes - if: needs.changes.outputs.src != 'false' - - strategy: - fail-fast: false - matrix: - test-suite: ['callapi', 'chat-1', 'chat-2', 'command', 'conversation-1', 'conversation-2', 'conversation-3', 'conversation-4', 'conversation-5', 'federation', 'integration', 'sharing-1', 'sharing-2', 'sharing-3', 'sharing-4'] - php-versions: ['8.2'] - server-versions: ['master'] - guests-versions: ['master'] - call-summary-bot-versions: ['main'] - notifications-versions: ['master'] - - steps: - - name: Set app env - run: | - # Split and keep last - echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - - - name: Checkout server - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - submodules: true - repository: nextcloud/server - ref: ${{ matrix.server-versions }} - - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - path: apps/${{ env.APP_NAME }} - - - name: Checkout call_summary_bot app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - repository: nextcloud/call_summary_bot - path: apps/call_summary_bot - ref: ${{ matrix.call-summary-bot-versions }} - - - name: Checkout guests app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - repository: nextcloud/guests - path: apps/guests - ref: ${{ matrix.guests-versions }} - - - name: Checkout notifications app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - repository: nextcloud/notifications - path: apps/notifications - ref: ${{ matrix.notifications-versions }} - - - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ matrix.php-versions }} - # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up production dependencies - working-directory: apps/${{ env.APP_NAME }} - run: composer i --no-dev - - - name: Set up behat dependencies - working-directory: apps/${{ env.APP_NAME }}/tests/integration - run: composer i - - - name: Set up Nextcloud - env: - DB_PORT: 4444 - run: | - mkdir data - ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin - ./occ config:system:set debug --value=true --type=boolean - ./occ config:system:set hashing_default_password --value=true --type=boolean - ./occ app:enable --force ${{ env.APP_NAME }} - ./occ app:enable --force call_summary_bot - ./occ app:enable --force guests - ./occ app:enable --force notifications - - - name: Run integration - working-directory: apps/${{ env.APP_NAME }}/tests/integration - run: bash run.sh features/${{ matrix.test-suite }} - - - name: Print logs - if: always() - run: | - cat data/nextcloud.log - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, integration-sqlite] - - if: always() - - name: integration-sqlite-summary - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.integration-sqlite.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/jest.yml b/.github/workflows/jest.yml deleted file mode 100644 index 6486304571d..00000000000 --- a/.github/workflows/jest.yml +++ /dev/null @@ -1,48 +0,0 @@ -# SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Jest - -on: - pull_request: - paths: - - '.github/workflows/**' - - 'src/**' - - 'appinfo/info.xml' - - 'package.json' - - 'package-lock.json' - - 'tsconfig.json' - - '**.js' - -concurrency: - group: jest-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - build: - runs-on: ubuntu-latest - - name: node - steps: - - uses: actions/checkout@v3 - - - name: Read package.json node and npm engines version - uses: skjnldsv/read-package-engines-version-actions@v1.2 - id: versions - with: - fallbackNode: '^12' - fallbackNpm: '^6' - - - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@v3 - with: - node-version: ${{ steps.versions.outputs.nodeVersion }} - - - name: Set up npm ${{ steps.versions.outputs.npmVersion }} - run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" - - - name: Install dependencies - run: npm ci - - - name: Run jest - run: npm run test:coverage -- --colors diff --git a/.github/workflows/lint-eslint.yml b/.github/workflows/lint-eslint.yml deleted file mode 100644 index 972b3fb8a78..00000000000 --- a/.github/workflows/lint-eslint.yml +++ /dev/null @@ -1,95 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Lint eslint - -on: pull_request - -permissions: - contents: read - -concurrency: - group: lint-eslint-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'src/**' - - 'appinfo/info.xml' - - 'package.json' - - 'package-lock.json' - - 'tsconfig.json' - - '.eslintrc.*' - - '.eslintignore' - - '**.js' - - '**.ts' - - '**.vue' - - lint: - runs-on: ubuntu-latest - - needs: changes - if: needs.changes.outputs.src != 'false' - - name: NPM lint - - steps: - - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Read package.json node and npm engines version - uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 - id: versions - with: - fallbackNode: '^20' - fallbackNpm: '^10' - - - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3 - with: - node-version: ${{ steps.versions.outputs.nodeVersion }} - - - name: Set up npm ${{ steps.versions.outputs.npmVersion }} - run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" - - - name: Install dependencies - env: - CYPRESS_INSTALL_BINARY: 0 - PUPPETEER_SKIP_DOWNLOAD: true - run: npm ci - - - name: Lint - run: npm run lint - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, lint] - - if: always() - - # This is the summary, we just avoid to rename it so that branch protection rules still match - name: eslint - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/lint-info-xml.yml b/.github/workflows/lint-info-xml.yml deleted file mode 100644 index f39c59e6436..00000000000 --- a/.github/workflows/lint-info-xml.yml +++ /dev/null @@ -1,36 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Lint info.xml - -on: pull_request - -permissions: - contents: read - -concurrency: - group: lint-info-xml-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - xml-linters: - runs-on: ubuntu-latest-low - - name: info.xml lint - steps: - - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Download schema - run: wget https://raw.githubusercontent.com/nextcloud/appstore/master/nextcloudappstore/api/v1/release/info.xsd - - - name: Lint info.xml - uses: ChristophWurst/xmllint-action@36f2a302f84f8c83fceea0b9c59e1eb4a616d3c1 # v1.2 - with: - xml-file: ./appinfo/info.xml - xml-schema-file: ./info.xsd diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml deleted file mode 100644 index 044661e6c3e..00000000000 --- a/.github/workflows/lint-php-cs.yml +++ /dev/null @@ -1,48 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Lint php-cs - -on: pull_request - -permissions: - contents: read - -concurrency: - group: lint-php-cs-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - lint: - runs-on: ubuntu-latest - - name: php-cs - - steps: - - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Get php version - id: versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - - - name: Set up php${{ steps.versions.outputs.php-available }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ steps.versions.outputs.php-available }} - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Install dependencies - run: composer i - - - name: Lint - run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 ) diff --git a/.github/workflows/lint-php.yml b/.github/workflows/lint-php.yml deleted file mode 100644 index 54f231ef0a1..00000000000 --- a/.github/workflows/lint-php.yml +++ /dev/null @@ -1,70 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Lint php - -on: pull_request - -permissions: - contents: read - -concurrency: - group: lint-php-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - matrix: - runs-on: ubuntu-latest-low - outputs: - php-versions: ${{ steps.versions.outputs.php-versions }} - steps: - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - name: Get version matrix - id: versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.0.0 - - php-lint: - runs-on: ubuntu-latest - needs: matrix - strategy: - matrix: - php-versions: ${{fromJson(needs.matrix.outputs.php-versions)}} - - name: php-lint - - steps: - - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ matrix.php-versions }} - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Lint - run: composer run lint - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: php-lint - - if: always() - - name: php-lint-summary - - steps: - - name: Summary status - run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi diff --git a/.github/workflows/lint-stylelint.yml b/.github/workflows/lint-stylelint.yml deleted file mode 100644 index 93a36bc914e..00000000000 --- a/.github/workflows/lint-stylelint.yml +++ /dev/null @@ -1,51 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Lint stylelint - -on: pull_request - -permissions: - contents: read - -concurrency: - group: lint-stylelint-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - lint: - runs-on: ubuntu-latest - - name: stylelint - - steps: - - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Read package.json node and npm engines version - uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 - id: versions - with: - fallbackNode: '^20' - fallbackNpm: '^10' - - - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3 - with: - node-version: ${{ steps.versions.outputs.nodeVersion }} - - - name: Set up npm ${{ steps.versions.outputs.npmVersion }} - run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" - - - name: Install dependencies - env: - CYPRESS_INSTALL_BINARY: 0 - run: npm ci - - - name: Lint - run: npm run stylelint diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml deleted file mode 100644 index 2d161aa91b5..00000000000 --- a/.github/workflows/node.yml +++ /dev/null @@ -1,102 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Node - -on: pull_request - -permissions: - contents: read - -concurrency: - group: node-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'src/**' - - 'appinfo/info.xml' - - 'package.json' - - 'package-lock.json' - - 'tsconfig.json' - - '**.js' - - '**.ts' - - '**.vue' - - build: - runs-on: ubuntu-latest - - needs: changes - if: needs.changes.outputs.src != 'false' - - name: NPM build - steps: - - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Read package.json node and npm engines version - uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 - id: versions - with: - fallbackNode: '^20' - fallbackNpm: '^10' - - - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3 - with: - node-version: ${{ steps.versions.outputs.nodeVersion }} - - - name: Set up npm ${{ steps.versions.outputs.npmVersion }} - run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" - - - name: Install dependencies & build - env: - CYPRESS_INSTALL_BINARY: 0 - PUPPETEER_SKIP_DOWNLOAD: true - run: | - npm ci - npm run build --if-present - - - name: Check webpack build changes - run: | - bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)" - - - name: Show changes on failure - if: failure() - run: | - git status - git --no-pager diff - exit 1 # make it red to grab attention - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, build] - - if: always() - - # This is the summary, we just avoid to rename it so that branch protection rules still match - name: node - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.build.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/occ-command-documentation.yml b/.github/workflows/occ-command-documentation.yml deleted file mode 100644 index e8b0f54fa28..00000000000 --- a/.github/workflows/occ-command-documentation.yml +++ /dev/null @@ -1,91 +0,0 @@ -# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Documentation - -on: - pull_request: - paths: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - -permissions: - contents: read - -concurrency: - group: occ-commands-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - occ-commands: - runs-on: ubuntu-latest - - strategy: - matrix: - php-versions: ['8.2'] - server-versions: ['master'] - - steps: - - name: Set app env - run: | - # Split and keep last - echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - - - name: Checkout server - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - submodules: true - repository: nextcloud/server - ref: ${{ matrix.server-versions }} - - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - path: apps/${{ env.APP_NAME }} - - - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ matrix.php-versions }} - # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Check composer file existence - id: check_composer - uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 - with: - files: apps/${{ env.APP_NAME }}/composer.json - - - name: Set up dependencies - # Only run if phpunit config file exists - if: steps.check_composer.outputs.files_exists == 'true' - working-directory: apps/${{ env.APP_NAME }} - run: composer i - - - name: Set up Nextcloud - env: - DB_PORT: 4444 - run: | - mkdir data - ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin - ./occ app:enable ${{ env.APP_NAME }} - ./occ config:system:set debug --value true --type boolean - - - name: Check if documentation is up to date - id: check_documentation - run: | - ./occ talk:developer:update-docs - cd apps/${{ env.APP_NAME }} - bash -c "[[ ! \"`git status --porcelain `\" ]] || (cat docs/occ.md && echo 'Documentation outdated. Run the command talk:developer:update-docs locally, commit the occ.md file and push the changes.' && exit 1)" diff --git a/.github/workflows/openapi.yml b/.github/workflows/openapi.yml deleted file mode 100644 index 487fb981df9..00000000000 --- a/.github/workflows/openapi.yml +++ /dev/null @@ -1,94 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-FileCopyrightText: 2024 Arthur Schiwon -# SPDX-License-Identifier: MIT - -name: OpenAPI - -on: pull_request - -permissions: - contents: read - -concurrency: - group: openapi-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - openapi: - runs-on: ubuntu-latest - - if: ${{ github.repository_owner != 'nextcloud-gmbh' }} - - steps: - - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Get php version - id: php_versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - - - name: Set up php - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ steps.php_versions.outputs.php-available }} - extensions: xml - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Check Typescript OpenApi types - id: check_typescript_openapi - uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 - with: - files: "src/types/openapi/openapi*.ts" - - - name: Read package.json node and npm engines version - if: steps.check_typescript_openapi.outputs.files_exists == 'true' - uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 - id: node_versions - # Continue if no package.json - continue-on-error: true - with: - fallbackNode: '^20' - fallbackNpm: '^10' - - - name: Set up node ${{ steps.node_versions.outputs.nodeVersion }} - if: ${{ steps.node_versions.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 - with: - node-version: ${{ steps.node_versions.outputs.nodeVersion }} - - - name: Set up npm ${{ steps.node_versions.outputs.npmVersion }} - if: ${{ steps.node_versions.outputs.nodeVersion }} - run: npm i -g npm@"${{ steps.node_versions.outputs.npmVersion }}" - - - name: Install dependencies & build - if: ${{ steps.node_versions.outputs.nodeVersion }} - env: - CYPRESS_INSTALL_BINARY: 0 - PUPPETEER_SKIP_DOWNLOAD: true - run: | - npm ci - - - name: Set up dependencies - run: composer i - - - name: Regenerate OpenAPI - run: composer run openapi - - - name: Check openapi*.json and typescript changes - run: | - bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please run \"composer run openapi\" and commit the openapi*.json files and (if applicable) src/types/openapi/openapi*.ts, see the section \"Show changes on failure\" for details' && exit 1)" - - - name: Show changes on failure - if: failure() - run: | - git status - git --no-pager diff - exit 1 # make it red to grab attention diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml deleted file mode 100644 index d3aea85520d..00000000000 --- a/.github/workflows/phpunit-mariadb.yml +++ /dev/null @@ -1,190 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: PHPUnit MariaDB - -on: pull_request - -permissions: - contents: read - -concurrency: - group: phpunit-mariadb-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - matrix: - runs-on: ubuntu-latest-low - outputs: - php-version: ${{ steps.versions.outputs.php-available-list }} - server-max: ${{ steps.versions.outputs.branches-max-list }} - steps: - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Get version matrix - id: versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - phpunit-mariadb: - runs-on: ubuntu-latest - - needs: [changes, matrix] - if: needs.changes.outputs.src != 'false' - - strategy: - matrix: - php-versions: ${{ fromJson(needs.matrix.outputs.php-version) }} - server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }} - mariadb-versions: ['10.6', '10.11'] - - name: MariaDB ${{ matrix.mariadb-versions }} PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }} - - services: - mariadb: - image: ghcr.io/nextcloud/continuous-integration-mariadb-${{ matrix.mariadb-versions }}:latest - ports: - - 4444:3306/tcp - env: - MYSQL_ROOT_PASSWORD: rootpassword - options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5 - - steps: - - name: Set app env - run: | - # Split and keep last - echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - - - name: Checkout server - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - submodules: true - repository: nextcloud/server - ref: ${{ matrix.server-versions }} - - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - path: apps/${{ env.APP_NAME }} - - - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ matrix.php-versions }} - # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Enable ONLY_FULL_GROUP_BY MariaDB option - run: | - echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword - echo "SELECT @@sql_mode;" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword - - - name: Check composer file existence - id: check_composer - uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 - with: - files: apps/${{ env.APP_NAME }}/composer.json - - - name: Set up dependencies - # Only run if phpunit config file exists - if: steps.check_composer.outputs.files_exists == 'true' - working-directory: apps/${{ env.APP_NAME }} - run: composer i - - - name: Set up Nextcloud - env: - DB_PORT: 4444 - run: | - mkdir data - ./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin - ./occ app:enable --force ${{ env.APP_NAME }} - - - name: Check PHPUnit script is defined - id: check_phpunit - continue-on-error: true - working-directory: apps/${{ env.APP_NAME }} - run: | - composer run --list | grep "^ test:unit " | wc -l | grep 1 - - - name: PHPUnit - # Only run if phpunit config file exists - if: steps.check_phpunit.outcome == 'success' - working-directory: apps/${{ env.APP_NAME }} - run: composer run test:unit - - - name: Check PHPUnit integration script is defined - id: check_integration - continue-on-error: true - working-directory: apps/${{ env.APP_NAME }} - run: | - composer run --list | grep "^ test:integration " | wc -l | grep 1 - - - name: Run Nextcloud - # Only run if phpunit integration config file exists - if: steps.check_integration.outcome == 'success' - run: php -S localhost:8080 & - - - name: PHPUnit integration - # Only run if phpunit integration config file exists - if: steps.check_integration.outcome == 'success' - working-directory: apps/${{ env.APP_NAME }} - run: composer run test:integration - - - name: Print logs - if: always() - run: | - cat data/nextcloud.log - - - name: Skipped - # Fail the action when neither unit nor integration tests ran - if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure' - run: | - echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts' - exit 1 - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, phpunit-mariadb] - - if: always() - - name: phpunit-mariadb-summary - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mariadb.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml deleted file mode 100644 index bd79878d635..00000000000 --- a/.github/workflows/phpunit-mysql.yml +++ /dev/null @@ -1,188 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: PHPUnit MySQL - -on: pull_request - -permissions: - contents: read - -concurrency: - group: phpunit-mysql-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - matrix: - runs-on: ubuntu-latest-low - outputs: - matrix: ${{ steps.versions.outputs.sparse-matrix }} - steps: - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Get version matrix - id: versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - with: - matrix: '{"mysql-versions": ["8.4"]}' - - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - phpunit-mysql: - runs-on: ubuntu-latest - - needs: [changes, matrix] - if: needs.changes.outputs.src != 'false' - - strategy: - matrix: ${{ fromJson(needs.matrix.outputs.matrix) }} - - name: MySQL ${{ matrix.mysql-versions }} PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }} - - services: - mysql: - image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest - ports: - - 4444:3306/tcp - env: - MYSQL_ROOT_PASSWORD: rootpassword - options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10 - - steps: - - name: Set app env - run: | - # Split and keep last - echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - - - name: Checkout server - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - submodules: true - repository: nextcloud/server - ref: ${{ matrix.server-versions }} - - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - path: apps/${{ env.APP_NAME }} - - - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ matrix.php-versions }} - # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Enable ONLY_FULL_GROUP_BY MySQL option - run: | - echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword - echo "SELECT @@sql_mode;" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword - - - name: Check composer file existence - id: check_composer - uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 - with: - files: apps/${{ env.APP_NAME }}/composer.json - - - name: Set up dependencies - # Only run if phpunit config file exists - if: steps.check_composer.outputs.files_exists == 'true' - working-directory: apps/${{ env.APP_NAME }} - run: composer i - - - name: Set up Nextcloud - env: - DB_PORT: 4444 - run: | - mkdir data - ./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin - ./occ app:enable --force ${{ env.APP_NAME }} - - - name: Check PHPUnit script is defined - id: check_phpunit - continue-on-error: true - working-directory: apps/${{ env.APP_NAME }} - run: | - composer run --list | grep "^ test:unit " | wc -l | grep 1 - - - name: PHPUnit - # Only run if phpunit config file exists - if: steps.check_phpunit.outcome == 'success' - working-directory: apps/${{ env.APP_NAME }} - run: composer run test:unit - - - name: Check PHPUnit integration script is defined - id: check_integration - continue-on-error: true - working-directory: apps/${{ env.APP_NAME }} - run: | - composer run --list | grep "^ test:integration " | wc -l | grep 1 - - - name: Run Nextcloud - # Only run if phpunit integration config file exists - if: steps.check_integration.outcome == 'success' - run: php -S localhost:8080 & - - - name: PHPUnit integration - # Only run if phpunit integration config file exists - if: steps.check_integration.outcome == 'success' - working-directory: apps/${{ env.APP_NAME }} - run: composer run test:integration - - - name: Print logs - if: always() - run: | - cat data/nextcloud.log - - - name: Skipped - # Fail the action when neither unit nor integration tests ran - if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure' - run: | - echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts' - exit 1 - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, phpunit-mysql] - - if: always() - - name: phpunit-mysql-summary - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mysql.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/phpunit-oci.yml b/.github/workflows/phpunit-oci.yml deleted file mode 100644 index 996c7a536dc..00000000000 --- a/.github/workflows/phpunit-oci.yml +++ /dev/null @@ -1,196 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: PHPUnit OCI - -on: pull_request - -permissions: - contents: read - -concurrency: - group: phpunit-oci-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - matrix: - runs-on: ubuntu-latest-low - outputs: - php-version: ${{ steps.versions.outputs.php-available-list }} - server-max: ${{ steps.versions.outputs.branches-max-list }} - steps: - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Get version matrix - id: versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - phpunit-oci: - runs-on: ubuntu-22.04 - - needs: [changes, matrix] - if: needs.changes.outputs.src != 'false' - - strategy: - matrix: - php-versions: ${{ fromJson(needs.matrix.outputs.php-version) }} - server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }} - - name: OCI PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }} - - services: - oracle: - image: ghcr.io/gvenzl/oracle-xe:11 - - # Provide passwords and other environment variables to container - env: - ORACLE_RANDOM_PASSWORD: true - APP_USER: autotest - APP_USER_PASSWORD: owncloud - - # Forward Oracle port - ports: - - 1521:1521/tcp - - # Provide healthcheck script options for startup - options: >- - --health-cmd healthcheck.sh - --health-interval 10s - --health-timeout 5s - --health-retries 10 - - steps: - - name: Set app env - run: | - # Split and keep last - echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - - - name: Checkout server - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - submodules: true - repository: nextcloud/server - ref: ${{ matrix.server-versions }} - - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - path: apps/${{ env.APP_NAME }} - - - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ matrix.php-versions }} - # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, oci8 - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Check composer file existence - id: check_composer - uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 - with: - files: apps/${{ env.APP_NAME }}/composer.json - - - name: Set up dependencies - # Only run if phpunit config file exists - if: steps.check_composer.outputs.files_exists == 'true' - working-directory: apps/${{ env.APP_NAME }} - run: composer i - - - name: Set up Nextcloud - env: - DB_PORT: 1521 - run: | - mkdir data - ./occ maintenance:install --verbose --database=oci --database-name=XE --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=autotest --database-pass=owncloud --admin-user admin --admin-pass admin - ./occ app:enable --force ${{ env.APP_NAME }} - - - name: Check PHPUnit script is defined - id: check_phpunit - continue-on-error: true - working-directory: apps/${{ env.APP_NAME }} - run: | - composer run --list | grep "^ test:unit " | wc -l | grep 1 - - - name: PHPUnit - # Only run if phpunit config file exists - if: steps.check_phpunit.outcome == 'success' - working-directory: apps/${{ env.APP_NAME }} - run: composer run test:unit - - - name: Check PHPUnit integration script is defined - id: check_integration - continue-on-error: true - working-directory: apps/${{ env.APP_NAME }} - run: | - composer run --list | grep "^ test:integration " | wc -l | grep 1 - - - name: Run Nextcloud - # Only run if phpunit integration config file exists - if: steps.check_integration.outcome == 'success' - run: php -S localhost:8080 & - - - name: PHPUnit integration - # Only run if phpunit integration config file exists - if: steps.check_integration.outcome == 'success' - working-directory: apps/${{ env.APP_NAME }} - run: composer run test:integration - - - name: Print logs - if: always() - run: | - cat data/nextcloud.log - - - name: Skipped - # Fail the action when neither unit nor integration tests ran - if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure' - run: | - echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts' - exit 1 - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, phpunit-oci] - - if: always() - - name: phpunit-oci-summary - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-oci.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml deleted file mode 100644 index 35c70832525..00000000000 --- a/.github/workflows/phpunit-pgsql.yml +++ /dev/null @@ -1,186 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: PHPUnit PostgreSQL - -on: pull_request - -permissions: - contents: read - -concurrency: - group: phpunit-pgsql-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - matrix: - runs-on: ubuntu-latest-low - outputs: - php-version: ${{ steps.versions.outputs.php-available-list }} - server-max: ${{ steps.versions.outputs.branches-max-list }} - steps: - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Get version matrix - id: versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - phpunit-pgsql: - runs-on: ubuntu-latest - - needs: [changes, matrix] - if: needs.changes.outputs.src != 'false' - - strategy: - matrix: - php-versions: ${{ fromJson(needs.matrix.outputs.php-version) }} - server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }} - - name: PostgreSQL PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }} - - services: - postgres: - image: ghcr.io/nextcloud/continuous-integration-postgres-14:latest - ports: - - 4444:5432/tcp - env: - POSTGRES_USER: root - POSTGRES_PASSWORD: rootpassword - POSTGRES_DB: nextcloud - options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5 - - steps: - - name: Set app env - run: | - # Split and keep last - echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - - - name: Checkout server - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - submodules: true - repository: nextcloud/server - ref: ${{ matrix.server-versions }} - - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - path: apps/${{ env.APP_NAME }} - - - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ matrix.php-versions }} - # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, pgsql, pdo_pgsql - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Check composer file existence - id: check_composer - uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 - with: - files: apps/${{ env.APP_NAME }}/composer.json - - - name: Set up dependencies - # Only run if phpunit config file exists - if: steps.check_composer.outputs.files_exists == 'true' - working-directory: apps/${{ env.APP_NAME }} - run: composer i - - - name: Set up Nextcloud - env: - DB_PORT: 4444 - run: | - mkdir data - ./occ maintenance:install --verbose --database=pgsql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin - ./occ app:enable --force ${{ env.APP_NAME }} - - - name: Check PHPUnit script is defined - id: check_phpunit - continue-on-error: true - working-directory: apps/${{ env.APP_NAME }} - run: | - composer run --list | grep "^ test:unit " | wc -l | grep 1 - - - name: PHPUnit - # Only run if phpunit config file exists - if: steps.check_phpunit.outcome == 'success' - working-directory: apps/${{ env.APP_NAME }} - run: composer run test:unit - - - name: Check PHPUnit integration script is defined - id: check_integration - continue-on-error: true - working-directory: apps/${{ env.APP_NAME }} - run: | - composer run --list | grep "^ test:integration " | wc -l | grep 1 - - - name: Run Nextcloud - # Only run if phpunit integration config file exists - if: steps.check_integration.outcome == 'success' - run: php -S localhost:8080 & - - - name: PHPUnit integration - # Only run if phpunit integration config file exists - if: steps.check_integration.outcome == 'success' - working-directory: apps/${{ env.APP_NAME }} - run: composer run test:integration - - - name: Print logs - if: always() - run: | - cat data/nextcloud.log - - - name: Skipped - # Fail the action when neither unit nor integration tests ran - if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure' - run: | - echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts' - exit 1 - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, phpunit-pgsql] - - if: always() - - name: phpunit-pgsql-summary - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-pgsql.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml deleted file mode 100644 index 85f7cfdd814..00000000000 --- a/.github/workflows/phpunit-sqlite.yml +++ /dev/null @@ -1,175 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: PHPUnit SQLite - -on: pull_request - -permissions: - contents: read - -concurrency: - group: phpunit-sqlite-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - matrix: - runs-on: ubuntu-latest-low - outputs: - php-version: ${{ steps.versions.outputs.php-available-list }} - server-max: ${{ steps.versions.outputs.branches-max-list }} - steps: - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Get version matrix - id: versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'appinfo/**' - - 'lib/**' - - 'templates/**' - - 'tests/**' - - 'vendor/**' - - 'vendor-bin/**' - - '.php-cs-fixer.dist.php' - - 'composer.json' - - 'composer.lock' - - phpunit-sqlite: - runs-on: ubuntu-latest - - needs: [changes, matrix] - if: needs.changes.outputs.src != 'false' - - strategy: - matrix: - php-versions: ${{ fromJson(needs.matrix.outputs.php-version) }} - server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }} - - name: SQLite PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }} - - steps: - - name: Set app env - run: | - # Split and keep last - echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - - - name: Checkout server - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - submodules: true - repository: nextcloud/server - ref: ${{ matrix.server-versions }} - - - name: Checkout app - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - path: apps/${{ env.APP_NAME }} - - - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ matrix.php-versions }} - # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Check composer file existence - id: check_composer - uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 - with: - files: apps/${{ env.APP_NAME }}/composer.json - - - name: Set up dependencies - # Only run if phpunit config file exists - if: steps.check_composer.outputs.files_exists == 'true' - working-directory: apps/${{ env.APP_NAME }} - run: composer i - - - name: Set up Nextcloud - env: - DB_PORT: 4444 - run: | - mkdir data - ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin - ./occ app:enable --force ${{ env.APP_NAME }} - - - name: Check PHPUnit script is defined - id: check_phpunit - continue-on-error: true - working-directory: apps/${{ env.APP_NAME }} - run: | - composer run --list | grep "^ test:unit " | wc -l | grep 1 - - - name: PHPUnit - # Only run if phpunit config file exists - if: steps.check_phpunit.outcome == 'success' - working-directory: apps/${{ env.APP_NAME }} - run: composer run test:unit - - - name: Check PHPUnit integration script is defined - id: check_integration - continue-on-error: true - working-directory: apps/${{ env.APP_NAME }} - run: | - composer run --list | grep "^ test:integration " | wc -l | grep 1 - - - name: Run Nextcloud - # Only run if phpunit integration config file exists - if: steps.check_integration.outcome == 'success' - run: php -S localhost:8080 & - - - name: PHPUnit integration - # Only run if phpunit integration config file exists - if: steps.check_integration.outcome == 'success' - working-directory: apps/${{ env.APP_NAME }} - run: composer run test:integration - - - name: Print logs - if: always() - run: | - cat data/nextcloud.log - - - name: Skipped - # Fail the action when neither unit nor integration tests ran - if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure' - run: | - echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts' - exit 1 - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, phpunit-sqlite] - - if: always() - - name: phpunit-sqlite-summary - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/pr-feedback.yml b/.github/workflows/pr-feedback.yml deleted file mode 100644 index be0d028f95c..00000000000 --- a/.github/workflows/pr-feedback.yml +++ /dev/null @@ -1,50 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization - -# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-FileCopyrightText: 2023 Marcel Klehr -# SPDX-FileCopyrightText: 2023 Joas Schilling <213943+nickvergessen@users.noreply.github.com> -# SPDX-FileCopyrightText: 2023 Daniel Kesselberg -# SPDX-FileCopyrightText: 2023 Florian Steffens -# SPDX-License-Identifier: MIT - -name: 'Ask for feedback on PRs' -on: - schedule: - - cron: '30 1 * * *' - -jobs: - pr-feedback: - runs-on: ubuntu-latest - steps: - - name: The get-github-handles-from-website action - uses: marcelklehr/get-github-handles-from-website-action@a739600f6b91da4957f51db0792697afbb2f143c # v1.0.0 - id: scrape - with: - website: 'https://nextcloud.com/team/' - - - name: Get blocklist - id: blocklist - run: | - blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -) - echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT" - - - uses: marcelklehr/pr-feedback-action@1883b38a033fb16f576875e0cf45f98b857655c4 - with: - feedback-message: | - Hello there, - Thank you so much for taking the time and effort to create a pull request to our Nextcloud project. - - We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process. - - Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6 - - Thank you for contributing to Nextcloud and we hope to hear from you soon! - - (If you believe you should not receive this message, you can add yourself to the [blocklist](https://github.com/nextcloud/.github/blob/master/non-community-usernames.txt).) - days-before-feedback: 14 - start-date: "2024-04-30" - exempt-authors: "${{ steps.blocklist.outputs.blocklist }},${{ steps.scrape.outputs.users }},nextcloud-command,nextcloud-android-bot" - exempt-bots: true diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml deleted file mode 100644 index a963684398c..00000000000 --- a/.github/workflows/psalm.yml +++ /dev/null @@ -1,44 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Static analysis - -on: pull_request - -concurrency: - group: psalm-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - static-analysis: - runs-on: ubuntu-latest - - name: static-psalm-analysis - steps: - - name: Checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - name: Get php version - id: versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - - - name: Set up php${{ steps.versions.outputs.php-available }} - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: ${{ steps.versions.outputs.php-available }} - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Install dependencies - run: composer i - - - name: Run coding standards check - run: composer run psalm diff --git a/.github/workflows/reuse.yml b/.github/workflows/reuse.yml deleted file mode 100644 index 38299b1289e..00000000000 --- a/.github/workflows/reuse.yml +++ /dev/null @@ -1,20 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization - -# SPDX-FileCopyrightText: 2022 Free Software Foundation Europe e.V. -# -# SPDX-License-Identifier: CC0-1.0 - -name: REUSE Compliance Check - -on: pull_request - -jobs: - reuse-compliance-check: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - name: REUSE Compliance Check - uses: fsfe/reuse-action@a46482ca367aef4454a87620aa37c2be4b2f8106 # v3.0.0 diff --git a/.github/workflows/update-nextcloud-ocp-approve-merge.yml b/.github/workflows/update-nextcloud-ocp-approve-merge.yml deleted file mode 100644 index b16485e6287..00000000000 --- a/.github/workflows/update-nextcloud-ocp-approve-merge.yml +++ /dev/null @@ -1,52 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Auto approve nextcloud/ocp - -on: - pull_request_target: - branches: - - main - - master - - stable* - -permissions: - contents: read - -concurrency: - group: update-nextcloud-ocp-approve-merge-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - auto-approve-merge: - if: github.actor == 'nextcloud-command' - runs-on: ubuntu-latest-low - permissions: - # for hmarr/auto-approve-action to approve PRs - pull-requests: write - # for alexwilson/enable-github-automerge-action to approve PRs - contents: write - - steps: - - uses: mdecoleman/pr-branch-name@bab4c71506bcd299fb350af63bb8e53f2940a599 # v2.0.0 - id: branchname - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - # GitHub actions bot approve - - uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2 - if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp') - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - - # Enable GitHub auto merge - - name: Auto merge - uses: alexwilson/enable-github-automerge-action@56e3117d1ae1540309dc8f7a9f2825bc3c5f06ff # main - if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp') - with: - github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/update-nextcloud-ocp.yml b/.github/workflows/update-nextcloud-ocp.yml deleted file mode 100644 index ce8615d4f51..00000000000 --- a/.github/workflows/update-nextcloud-ocp.yml +++ /dev/null @@ -1,119 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Update nextcloud/ocp - -on: - workflow_dispatch: - schedule: - - cron: "5 2 * * 0" - -jobs: - update-nextcloud-ocp: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - branches: ['main', 'master', 'stable29', 'stable28', 'stable27'] - - name: update-nextcloud-ocp-${{ matrix.branches }} - - steps: - - id: checkout - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - ref: ${{ matrix.branches }} - submodules: true - continue-on-error: true - - - name: Set up php8.2 - if: steps.checkout.outcome == 'success' - uses: shivammathur/setup-php@c665c7a15b5295c2488ac8a87af9cb806cd72198 # v2 - with: - php-version: 8.2 - # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation - extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite - coverage: none - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Read codeowners - if: steps.checkout.outcome == 'success' - id: codeowners - run: | - grep '/appinfo/info.xml' .github/CODEOWNERS | cut -f 2- -d ' ' | xargs | awk '{ print "codeowners="$0 }' >> $GITHUB_OUTPUT - continue-on-error: true - - - name: Composer install - if: steps.checkout.outcome == 'success' - run: composer install - - - name: Composer update nextcloud/ocp - id: update_branch - if: ${{ steps.checkout.outcome == 'success' && matrix.branches != 'main' }} - run: composer require --dev nextcloud/ocp:dev-${{ matrix.branches }} - - - name: Raise on issue on failure - uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0 - if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_branch.conclusion == 'failure' }} - with: - token: ${{ secrets.GITHUB_TOKEN }} - title: Failed to update nextcloud/ocp package on branch ${{ matrix.branches }} - body: Please check the output of the GitHub action and manually resolve the issues
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
${{ steps.codeowners.outputs.codeowners }} - - - name: Composer update nextcloud/ocp - id: update_main - if: ${{ steps.checkout.outcome == 'success' && matrix.branches == 'main' }} - run: composer require --dev nextcloud/ocp:dev-master - - - name: Raise on issue on failure - uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0 - if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_main.conclusion == 'failure' }} - with: - token: ${{ secrets.GITHUB_TOKEN }} - title: Failed to update nextcloud/ocp package on branch ${{ matrix.branches }} - body: Please check the output of the GitHub action and manually resolve the issues
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
${{ steps.codeowners.outputs.codeowners }} - - - name: Reset checkout 3rdparty - if: steps.checkout.outcome == 'success' - run: | - git clean -f 3rdparty - git checkout 3rdparty - continue-on-error: true - - - name: Reset checkout vendor - if: steps.checkout.outcome == 'success' - run: | - git clean -f vendor - git checkout vendor - continue-on-error: true - - - name: Reset checkout vendor-bin - if: steps.checkout.outcome == 'success' - run: | - git clean -f vendor-bin - git checkout vendor-bin - continue-on-error: true - - - name: Create Pull Request - if: steps.checkout.outcome == 'success' - uses: peter-evans/create-pull-request@6d6857d36972b65feb161a90e484f2984215f83e # v6.0.5 - with: - token: ${{ secrets.COMMAND_BOT_PAT }} - commit-message: "chore(dev-deps): Bump nextcloud/ocp package" - committer: GitHub - author: nextcloud-command - signoff: true - branch: automated/noid/${{ matrix.branches }}-update-nextcloud-ocp - title: "[${{ matrix.branches }}] Update nextcloud/ocp dependency" - body: | - Auto-generated update of [nextcloud/ocp](https://github.com/nextcloud-deps/ocp/) dependency - labels: | - dependencies - 3. to review