-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'develop' into midhun/memberlist-redesign
- Loading branch information
Showing
46 changed files
with
1,443 additions
and
1,177 deletions.
There are no files selected for viewing
Validating CODEOWNERS rules …
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
/* | ||
Copyright 2024 New Vector Ltd. | ||
Copyright 2023 The Matrix.org Foundation C.I.C. | ||
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial | ||
Please see LICENSE files in the repository root for full details. | ||
*/ | ||
|
||
import { test, expect } from "../../element-web-test"; | ||
import { registerAccountMas } from "../oidc"; | ||
import { isDendrite } from "../../plugins/homeserver/dendrite"; | ||
import { TestClientServerAPI } from "../csAPI"; | ||
import { masHomeserver } from "../../plugins/homeserver/synapse/masHomeserver.ts"; | ||
|
||
// These tests register an account with MAS because then we go through the "normal" registration flow | ||
// and crypto gets set up. Using the 'user' fixture create a a user an synthesizes an existing login, | ||
// which is faster but leaves us without crypto set up. | ||
test.use(masHomeserver); | ||
test.describe("Encryption state after registration", () => { | ||
test.skip(isDendrite, "does not yet support MAS"); | ||
|
||
test("Key backup is enabled by default", async ({ page, mailhogClient, app }) => { | ||
await page.goto("/#/login"); | ||
await page.getByRole("button", { name: "Continue" }).click(); | ||
await registerAccountMas(page, mailhogClient, "alice", "alice@email.com", "Pa$sW0rD!"); | ||
|
||
await app.settings.openUserSettings("Security & Privacy"); | ||
await expect(page.getByText("This session is backing up your keys.")).toBeVisible(); | ||
}); | ||
|
||
test("user is prompted to set up recovery", async ({ page, mailhogClient, app }) => { | ||
await page.goto("/#/login"); | ||
await page.getByRole("button", { name: "Continue" }).click(); | ||
await registerAccountMas(page, mailhogClient, "alice", "alice@email.com", "Pa$sW0rD!"); | ||
|
||
await page.getByRole("button", { name: "Add room" }).click(); | ||
await page.getByRole("menuitem", { name: "New room" }).click(); | ||
await page.getByRole("textbox", { name: "Name" }).fill("test room"); | ||
await page.getByRole("button", { name: "Create room" }).click(); | ||
|
||
await expect(page.getByRole("heading", { name: "Set up recovery" })).toBeVisible(); | ||
}); | ||
}); | ||
|
||
test.describe("Key backup reset from elsewhere", () => { | ||
test.skip(isDendrite, "does not yet support MAS"); | ||
|
||
test("Key backup is disabled when reset from elsewhere", async ({ page, mailhogClient, request, homeserver }) => { | ||
const testUsername = "alice"; | ||
const testPassword = "Pa$sW0rD!"; | ||
|
||
// there's a delay before keys are uploaded so the error doesn't appear immediately: use a fake | ||
// clock so we can skip the delay | ||
await page.clock.install(); | ||
|
||
await page.goto("/#/login"); | ||
await page.getByRole("button", { name: "Continue" }).click(); | ||
await registerAccountMas(page, mailhogClient, testUsername, "alice@email.com", testPassword); | ||
|
||
await page.getByRole("button", { name: "Add room" }).click(); | ||
await page.getByRole("menuitem", { name: "New room" }).click(); | ||
await page.getByRole("textbox", { name: "Name" }).fill("test room"); | ||
await page.getByRole("button", { name: "Create room" }).click(); | ||
|
||
// @ts-ignore - this runs in the browser scope where mxMatrixClientPeg is a thing. Here, it is not. | ||
const accessToken = await page.evaluate(() => mxMatrixClientPeg.get().getAccessToken()); | ||
|
||
const csAPI = new TestClientServerAPI(request, homeserver, accessToken); | ||
|
||
const backupInfo = await csAPI.getCurrentBackupInfo(); | ||
|
||
await csAPI.deleteBackupVersion(backupInfo.version); | ||
|
||
await page.getByRole("textbox", { name: "Send an encrypted message…" }).fill("/discardsession"); | ||
await page.getByRole("button", { name: "Send message" }).click(); | ||
|
||
await page.getByRole("textbox", { name: "Send an encrypted message…" }).fill("Message with broken key backup"); | ||
await page.getByRole("button", { name: "Send message" }).click(); | ||
|
||
// Should be the message we sent plus the room creation event | ||
await expect(page.locator(".mx_EventTile")).toHaveCount(2); | ||
await expect( | ||
page.locator(".mx_RoomView_MessageList > .mx_EventTile_last .mx_EventTile_receiptSent"), | ||
).toBeVisible(); | ||
|
||
// Wait for it to try uploading the key | ||
await page.clock.fastForward(20000); | ||
|
||
await expect(page.getByRole("heading", { level: 1, name: "New Recovery Method" })).toBeVisible(); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.