-
-
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 hs/empty-topics
- Loading branch information
Showing
21 changed files
with
1,216 additions
and
1,176 deletions.
There are no files selected for viewing
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
96 changes: 96 additions & 0 deletions
96
playwright/e2e/settings/encryption-user-tab/encryption-tab.spec.ts
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,96 @@ | ||
/* | ||
* Copyright 2025 New Vector Ltd. | ||
* | ||
* 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 { GeneratedSecretStorageKey } from "matrix-js-sdk/src/crypto-api"; | ||
|
||
import { test, expect } from "."; | ||
import { | ||
checkDeviceIsConnectedKeyBackup, | ||
checkDeviceIsCrossSigned, | ||
createBot, | ||
deleteCachedSecrets, | ||
verifySession, | ||
} from "../../crypto/utils"; | ||
|
||
test.describe("Encryption tab", () => { | ||
test.use({ | ||
displayName: "Alice", | ||
}); | ||
|
||
let recoveryKey: GeneratedSecretStorageKey; | ||
let expectedBackupVersion: string; | ||
|
||
test.beforeEach(async ({ page, homeserver, credentials }) => { | ||
// The bot bootstraps cross-signing, creates a key backup and sets up a recovery key | ||
const res = await createBot(page, homeserver, credentials); | ||
recoveryKey = res.recoveryKey; | ||
expectedBackupVersion = res.expectedBackupVersion; | ||
}); | ||
|
||
test( | ||
"should show a 'Verify this device' button if the device is unverified", | ||
{ tag: "@screenshot" }, | ||
async ({ page, app, util }) => { | ||
const dialog = await util.openEncryptionTab(); | ||
const content = util.getEncryptionTabContent(); | ||
|
||
// The user's device is in an unverified state, therefore the only option available to them here is to verify it | ||
const verifyButton = dialog.getByRole("button", { name: "Verify this device" }); | ||
await expect(verifyButton).toBeVisible(); | ||
await expect(content).toMatchScreenshot("verify-device-encryption-tab.png"); | ||
await verifyButton.click(); | ||
|
||
await util.verifyDevice(recoveryKey); | ||
|
||
await expect(content).toMatchScreenshot("default-tab.png", { | ||
mask: [content.getByTestId("deviceId"), content.getByTestId("sessionKey")], | ||
}); | ||
|
||
// Check that our device is now cross-signed | ||
await checkDeviceIsCrossSigned(app); | ||
|
||
// Check that the current device is connected to key backup | ||
// The backup decryption key should be in cache also, as we got it directly from the 4S | ||
await checkDeviceIsConnectedKeyBackup(app, expectedBackupVersion, true); | ||
}, | ||
); | ||
|
||
// Test what happens if the cross-signing secrets are in secret storage but are not cached in the local DB. | ||
// | ||
// This can happen if we verified another device and secret-gossiping failed, or the other device itself lacked the secrets. | ||
// We simulate this case by deleting the cached secrets in the indexedDB. | ||
test( | ||
"should prompt to enter the recovery key when the secrets are not cached locally", | ||
{ tag: "@screenshot" }, | ||
async ({ page, app, util }) => { | ||
await verifySession(app, "new passphrase"); | ||
// We need to delete the cached secrets | ||
await deleteCachedSecrets(page); | ||
|
||
await util.openEncryptionTab(); | ||
// We ask the user to enter the recovery key | ||
const dialog = util.getEncryptionTabContent(); | ||
const enterKeyButton = dialog.getByRole("button", { name: "Enter recovery key" }); | ||
await expect(enterKeyButton).toBeVisible(); | ||
await expect(dialog).toMatchScreenshot("out-of-sync-recovery.png"); | ||
await enterKeyButton.click(); | ||
|
||
// Fill the recovery key | ||
await util.enterRecoveryKey(recoveryKey); | ||
await expect(dialog).toMatchScreenshot("default-tab.png", { | ||
mask: [dialog.getByTestId("deviceId"), dialog.getByTestId("sessionKey")], | ||
}); | ||
|
||
// Check that our device is now cross-signed | ||
await checkDeviceIsCrossSigned(app); | ||
|
||
// Check that the current device is connected to key backup | ||
// The backup decryption key should be in cache also, as we got it directly from the 4S | ||
await checkDeviceIsConnectedKeyBackup(app, expectedBackupVersion, true); | ||
}, | ||
); | ||
}); |
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
File renamed without changes
Binary file added
BIN
+21.8 KB
...tings/encryption-user-tab/encryption-tab.spec.ts/out-of-sync-recovery-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
Binary file removed
BIN
-20.9 KB
...ts/settings/encryption-user-tab/recovery.spec.ts/out-of-sync-recovery-linux.png
Binary file not shown.
Binary file modified
BIN
-34 Bytes
(100%)
playwright/snapshots/user-view/user-view.spec.ts/user-info-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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.