|
1 | 1 | import { faker } from '@faker-js/faker'; |
2 | 2 |
|
3 | 3 | import { setupE2EEPassword } from './setupE2EEPassword'; |
| 4 | +import { BASE_URL } from '../config/constants'; |
4 | 5 | import { Users } from '../fixtures/userStates'; |
5 | 6 | import { EncryptedRoomPage } from '../page-objects/encrypted-room'; |
6 | 7 | import { HomeSidenav } from '../page-objects/fragments'; |
7 | 8 | import { FileUploadModal } from '../page-objects/fragments/file-upload-modal'; |
8 | 9 | import { LoginPage } from '../page-objects/login'; |
| 10 | +import { createTargetGroupAndReturnFullRoom, deleteChannel, deleteRoom } from '../utils'; |
9 | 11 | import { preserveSettings } from '../utils/preserveSettings'; |
| 12 | +import { sendMessageFromUser } from '../utils/sendMessage'; |
10 | 13 | import { test, expect } from '../utils/test'; |
11 | 14 |
|
12 | 15 | const settingsList = ['E2E_Enable', 'E2E_Allow_Unencrypted_Messages']; |
@@ -144,4 +147,58 @@ test.describe('E2EE Encryption and Decryption - Basic Features', () => { |
144 | 147 | await expect(encryptedRoomPage.lastMessage.fileUploadName).toContainText(fileName); |
145 | 148 | await expect(encryptedRoomPage.lastMessage.body).toHaveText(fileDescription); |
146 | 149 | }); |
| 150 | + |
| 151 | + test.describe('E2EE Quotes', () => { |
| 152 | + let targetRoomId: string; |
| 153 | + let targetChannelName: string; |
| 154 | + |
| 155 | + test.afterAll(async ({ api }) => { |
| 156 | + await deleteRoom(api, targetRoomId); |
| 157 | + await deleteChannel(api, targetChannelName); |
| 158 | + }); |
| 159 | + |
| 160 | + test('expect to not crash and not show quote message for a message_link which is not accessible to the user', async ({ |
| 161 | + page, |
| 162 | + request, |
| 163 | + api, |
| 164 | + }) => { |
| 165 | + const encryptedRoomPage = new EncryptedRoomPage(page); |
| 166 | + const sidenav = new HomeSidenav(page); |
| 167 | + targetChannelName = faker.string.uuid(); |
| 168 | + |
| 169 | + await sidenav.createEncryptedChannel(targetChannelName); |
| 170 | + |
| 171 | + await expect(page).toHaveURL(`/group/${targetChannelName}`); |
| 172 | + await expect(encryptedRoomPage.encryptedIcon).toBeVisible(); |
| 173 | + await expect(encryptedRoomPage.encryptionNotReadyIndicator).not.toBeVisible(); |
| 174 | + |
| 175 | + await encryptedRoomPage.sendMessage('First encrypted message.'); |
| 176 | + await expect(encryptedRoomPage.lastMessage.encryptedIcon).toBeVisible(); |
| 177 | + await expect(encryptedRoomPage.lastMessage.body).toHaveText('First encrypted message.'); |
| 178 | + |
| 179 | + // create a private group for user2 |
| 180 | + const { group: user1Channel } = await createTargetGroupAndReturnFullRoom(api, { |
| 181 | + excludeSelf: true, |
| 182 | + members: [Users.user2.data._id], |
| 183 | + }); |
| 184 | + targetRoomId = user1Channel._id; |
| 185 | + |
| 186 | + // send a message to the private group, which is not accessible to the main user |
| 187 | + const sentMessage = (await sendMessageFromUser(request, Users.user2, targetRoomId, 'This is a test message.')).message; |
| 188 | + |
| 189 | + const messageLink = `${BASE_URL}/group/${user1Channel.name}?msg=${sentMessage._id}`; |
| 190 | + |
| 191 | + await encryptedRoomPage.sendMessage(`This is a message with message link - ${messageLink}`); |
| 192 | + |
| 193 | + await expect(encryptedRoomPage.lastMessage.encryptedIcon).toBeVisible(); |
| 194 | + await expect(encryptedRoomPage.lastMessage.body).toContainText(`This is a message with message link - ${messageLink}`); |
| 195 | + await expect(encryptedRoomPage.lastNthMessage(1).body).toContainText('First encrypted message.'); |
| 196 | + |
| 197 | + await page.reload(); |
| 198 | + |
| 199 | + await expect(encryptedRoomPage.lastMessage.encryptedIcon).toBeVisible(); |
| 200 | + await expect(encryptedRoomPage.lastMessage.body).toContainText(`This is a message with message link - ${messageLink}`); |
| 201 | + await expect(encryptedRoomPage.lastNthMessage(1).body).toContainText('First encrypted message.'); |
| 202 | + }); |
| 203 | + }); |
147 | 204 | }); |
0 commit comments