From 19d55883f1628e272f27137a698ea65e469008f6 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Wed, 9 Oct 2024 18:16:45 +0200 Subject: [PATCH 01/12] Remove `initCrypto` mocking --- test/unit-tests/MatrixClientPeg-test.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/unit-tests/MatrixClientPeg-test.ts b/test/unit-tests/MatrixClientPeg-test.ts index efa624349a7..5a19b568c0b 100644 --- a/test/unit-tests/MatrixClientPeg-test.ts +++ b/test/unit-tests/MatrixClientPeg-test.ts @@ -83,12 +83,10 @@ describe("MatrixClientPeg", () => { it("should initialise the rust crypto library by default", async () => { const mockSetValue = jest.spyOn(SettingsStore, "setValue").mockResolvedValue(undefined); - const mockInitCrypto = jest.spyOn(testPeg.safeGet(), "initCrypto").mockResolvedValue(undefined); const mockInitRustCrypto = jest.spyOn(testPeg.safeGet(), "initRustCrypto").mockResolvedValue(undefined); const cryptoStoreKey = new Uint8Array([1, 2, 3, 4]); await testPeg.start({ rustCryptoStoreKey: cryptoStoreKey }); - expect(mockInitCrypto).not.toHaveBeenCalled(); expect(mockInitRustCrypto).toHaveBeenCalledWith({ storageKey: cryptoStoreKey }); // we should have stashed the setting in the settings store From 22c865543a38bcd9cd0d29f376b80f78ea92a52e Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Thu, 10 Oct 2024 17:31:47 +0200 Subject: [PATCH 02/12] Remove `MatrixClient.downloadKeys` mocking --- test/test-utils/test-utils.ts | 1 - test/unit-tests/components/views/right_panel/UserInfo-test.tsx | 1 - 2 files changed, 2 deletions(-) diff --git a/test/test-utils/test-utils.ts b/test/test-utils/test-utils.ts index d9f4f3f5a65..41fca89e097 100644 --- a/test/test-utils/test-utils.ts +++ b/test/test-utils/test-utils.ts @@ -209,7 +209,6 @@ export function createTestClient(): MatrixClient { }), hasLazyLoadMembersEnabled: jest.fn().mockReturnValue(false), isInitialSyncComplete: jest.fn().mockReturnValue(true), - downloadKeys: jest.fn(), fetchRoomEvent: jest.fn().mockRejectedValue({}), makeTxnId: jest.fn().mockImplementation(() => `t${txnId++}`), sendToDevice: jest.fn().mockResolvedValue(undefined), diff --git a/test/unit-tests/components/views/right_panel/UserInfo-test.tsx b/test/unit-tests/components/views/right_panel/UserInfo-test.tsx index e0bfe10c863..c9996d7d67b 100644 --- a/test/unit-tests/components/views/right_panel/UserInfo-test.tsx +++ b/test/unit-tests/components/views/right_panel/UserInfo-test.tsx @@ -160,7 +160,6 @@ beforeEach(() => { getRoom: jest.fn(), credentials: {}, setPowerLevel: jest.fn(), - downloadKeys: jest.fn(), getCrypto: jest.fn().mockReturnValue(mockCrypto), } as unknown as MatrixClient); From 8915cd9bc6fcda77177fa9474b7feb838565fcad Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Thu, 10 Oct 2024 17:48:09 +0200 Subject: [PATCH 03/12] Remove `MatrixClient.getStoredDevice` mocking --- test/test-utils/test-utils.ts | 2 -- .../settings/tabs/user/SessionManagerTab-test.tsx | 14 -------------- .../toasts/UnverifiedSessionToast-test.tsx | 9 --------- 3 files changed, 25 deletions(-) diff --git a/test/test-utils/test-utils.ts b/test/test-utils/test-utils.ts index 41fca89e097..381815ef777 100644 --- a/test/test-utils/test-utils.ts +++ b/test/test-utils/test-utils.ts @@ -95,8 +95,6 @@ export function createTestClient(): MatrixClient { getUser: jest.fn().mockReturnValue({ on: jest.fn(), off: jest.fn() }), getDevice: jest.fn(), getDeviceId: jest.fn().mockReturnValue("ABCDEFGHI"), - getStoredCrossSigningForUser: jest.fn(), - getStoredDevice: jest.fn(), requestVerification: jest.fn(), deviceId: "ABCDEFGHI", getDevices: jest.fn().mockResolvedValue({ devices: [{ device_id: "ABCDEFGHI" }] }), diff --git a/test/unit-tests/components/views/settings/tabs/user/SessionManagerTab-test.tsx b/test/unit-tests/components/views/settings/tabs/user/SessionManagerTab-test.tsx index aec661120f7..3ff0084ef97 100644 --- a/test/unit-tests/components/views/settings/tabs/user/SessionManagerTab-test.tsx +++ b/test/unit-tests/components/views/settings/tabs/user/SessionManagerTab-test.tsx @@ -17,7 +17,6 @@ import { waitForElementToBeRemoved, within, } from "jest-matrix-react"; -import { DeviceInfo } from "matrix-js-sdk/src/crypto/deviceinfo"; import { logger } from "matrix-js-sdk/src/logger"; import { CryptoApi, DeviceVerificationStatus, VerificationRequest } from "matrix-js-sdk/src/crypto-api"; import { defer, sleep } from "matrix-js-sdk/src/utils"; @@ -205,7 +204,6 @@ describe("", () => { ...mockClientMethodsServer(), getCrypto: jest.fn().mockReturnValue(mockCrypto), getDevices: jest.fn(), - getStoredDevice: jest.fn(), getDeviceId: jest.fn().mockReturnValue(deviceId), deleteMultipleDevices: jest.fn(), generateClientSecret: jest.fn(), @@ -220,10 +218,6 @@ describe("", () => { }); jest.clearAllMocks(); jest.spyOn(logger, "error").mockRestore(); - mockClient.getStoredDevice.mockImplementation((_userId, id) => { - const device = [alicesDevice, alicesMobileDevice].find((device) => device.device_id === id); - return device ? new DeviceInfo(device.device_id) : null; - }); mockCrypto.getDeviceVerificationStatus.mockReset().mockResolvedValue(new DeviceVerificationStatus({})); mockClient.getDevices.mockReset().mockResolvedValue({ devices: [alicesDevice, alicesMobileDevice] }); @@ -292,7 +286,6 @@ describe("", () => { mockClient.getDevices.mockResolvedValue({ devices: [alicesDevice, alicesMobileDevice, alicesOlderMobileDevice], }); - mockClient.getStoredDevice.mockImplementation((_userId, deviceId) => new DeviceInfo(deviceId)); mockCrypto.getDeviceVerificationStatus.mockImplementation(async (_userId, deviceId) => { // alices device is trusted if (deviceId === alicesDevice.device_id) { @@ -464,7 +457,6 @@ describe("", () => { mockClient.getDevices.mockResolvedValue({ devices: [alicesDevice, alicesMobileDevice], }); - mockClient.getStoredDevice.mockImplementation(() => new DeviceInfo(alicesDevice.device_id)); mockCrypto.getDeviceVerificationStatus.mockResolvedValue( new DeviceVerificationStatus({ crossSigningVerified: true, localVerified: true }), ); @@ -568,7 +560,6 @@ describe("", () => { mockClient.getDevices.mockResolvedValue({ devices: [alicesDevice, alicesMobileDevice], }); - mockClient.getStoredDevice.mockImplementation((_userId, deviceId) => new DeviceInfo(deviceId)); mockCrypto.getDeviceVerificationStatus.mockImplementation(async (_userId, deviceId) => { if (deviceId === alicesDevice.device_id) { return new DeviceVerificationStatus({ crossSigningVerified: true, localVerified: true }); @@ -595,7 +586,6 @@ describe("", () => { mockClient.getDevices.mockResolvedValue({ devices: [alicesDevice, alicesMobileDevice], }); - mockClient.getStoredDevice.mockImplementation((_userId, deviceId) => new DeviceInfo(deviceId)); mockCrypto.getDeviceVerificationStatus.mockImplementation(async (_userId, deviceId) => { // current session verified = able to verify other sessions if (deviceId === alicesDevice.device_id) { @@ -629,7 +619,6 @@ describe("", () => { mockClient.getDevices.mockResolvedValue({ devices: [alicesDevice, alicesMobileDevice], }); - mockClient.getStoredDevice.mockImplementation((_userId, deviceId) => new DeviceInfo(deviceId)); mockCrypto.getDeviceVerificationStatus.mockImplementation(async (_userId, deviceId) => { if (deviceId === alicesDevice.device_id) { return new DeviceVerificationStatus({ crossSigningVerified: true, localVerified: true }); @@ -667,7 +656,6 @@ describe("", () => { mockClient.getDevices.mockResolvedValue({ devices: [alicesDevice, alicesMobileDevice, alicesDehydratedDevice], }); - mockClient.getStoredDevice.mockImplementation((_userId, deviceId) => new DeviceInfo(deviceId)); const devicesMap = new Map([ [alicesDeviceObj.deviceId, alicesDeviceObj], @@ -708,7 +696,6 @@ describe("", () => { mockClient.getDevices.mockResolvedValue({ devices: [alicesDevice, alicesMobileDevice, alicesDehydratedDevice], }); - mockClient.getStoredDevice.mockImplementation((_userId, deviceId) => new DeviceInfo(deviceId)); const devicesMap = new Map([ [alicesDeviceObj.deviceId, alicesDeviceObj], @@ -749,7 +736,6 @@ describe("", () => { mockClient.getDevices.mockResolvedValue({ devices: [alicesDevice, alicesMobileDevice, alicesDehydratedDevice, alicesOtherDehydratedDevice], }); - mockClient.getStoredDevice.mockImplementation((_userId, deviceId) => new DeviceInfo(deviceId)); const devicesMap = new Map([ [alicesDeviceObj.deviceId, alicesDeviceObj], diff --git a/test/unit-tests/toasts/UnverifiedSessionToast-test.tsx b/test/unit-tests/toasts/UnverifiedSessionToast-test.tsx index ddb8a6f7b8a..c7df2a0e6e0 100644 --- a/test/unit-tests/toasts/UnverifiedSessionToast-test.tsx +++ b/test/unit-tests/toasts/UnverifiedSessionToast-test.tsx @@ -11,7 +11,6 @@ import { render, RenderResult, screen } from "jest-matrix-react"; import userEvent from "@testing-library/user-event"; import { mocked, Mocked } from "jest-mock"; import { IMyDevice, MatrixClient } from "matrix-js-sdk/src/matrix"; -import { DeviceInfo } from "matrix-js-sdk/src/crypto/deviceinfo"; import { CryptoApi, DeviceVerificationStatus } from "matrix-js-sdk/src/crypto-api"; import dis from "../../../src/dispatcher/dispatcher"; @@ -25,7 +24,6 @@ describe("UnverifiedSessionToast", () => { const otherDevice: IMyDevice = { device_id: "ABC123", }; - const otherDeviceInfo = new DeviceInfo(otherDevice.device_id); let client: Mocked; let renderResult: RenderResult; @@ -40,13 +38,6 @@ describe("UnverifiedSessionToast", () => { throw new Error(`Unknown device ${deviceId}`); }); - client.getStoredDevice.mockImplementation((userId: string, deviceId: string) => { - if (deviceId === otherDevice.device_id) { - return otherDeviceInfo; - } - - return null; - }); client.getCrypto.mockReturnValue({ getDeviceVerificationStatus: jest .fn() From cab8b8a4f27d578a46b5f9c310090f402442656b Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Thu, 10 Oct 2024 18:50:49 +0200 Subject: [PATCH 04/12] Replace `MatrixClient.setGlobalBlacklistUnverifiedDevices` by `MatrixClient.CryptoApi.globalBlacklistUnverifiedDevices` --- src/components/structures/MatrixChat.tsx | 5 +++-- src/components/views/settings/CryptographyPanel.tsx | 3 ++- test/unit-tests/components/structures/MatrixChat-test.tsx | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 8b23455967b..969db8cb183 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -1706,9 +1706,10 @@ export default class MatrixChat extends React.PureComponent { } } - if (cli.getCrypto()) { + const crypto = cli.getCrypto(); + if (crypto) { const blacklistEnabled = SettingsStore.getValueAt(SettingLevel.DEVICE, "blacklistUnverifiedDevices"); - cli.setGlobalBlacklistUnverifiedDevices(blacklistEnabled); + crypto.globalBlacklistUnverifiedDevices = blacklistEnabled; // With cross-signing enabled, we send to unknown devices // without prompting. Any bad-device status the user should diff --git a/src/components/views/settings/CryptographyPanel.tsx b/src/components/views/settings/CryptographyPanel.tsx index 853a75e6b1a..08917d215cd 100644 --- a/src/components/views/settings/CryptographyPanel.tsx +++ b/src/components/views/settings/CryptographyPanel.tsx @@ -140,6 +140,7 @@ export default class CryptographyPanel extends React.Component { }; private updateBlacklistDevicesFlag = (checked: boolean): void => { - MatrixClientPeg.safeGet().setGlobalBlacklistUnverifiedDevices(checked); + const crypto = MatrixClientPeg.safeGet().getCrypto(); + if (crypto) crypto.globalBlacklistUnverifiedDevices = checked; }; } diff --git a/test/unit-tests/components/structures/MatrixChat-test.tsx b/test/unit-tests/components/structures/MatrixChat-test.tsx index 4b10043ad2e..ddc1fa986a3 100644 --- a/test/unit-tests/components/structures/MatrixChat-test.tsx +++ b/test/unit-tests/components/structures/MatrixChat-test.tsx @@ -125,7 +125,6 @@ describe("", () => { }), getVisibleRooms: jest.fn().mockReturnValue([]), getRooms: jest.fn().mockReturnValue([]), - setGlobalBlacklistUnverifiedDevices: jest.fn(), setGlobalErrorOnUnknownDevices: jest.fn(), getCrypto: jest.fn().mockReturnValue({ getVerificationRequestsToDeviceInProgress: jest.fn().mockReturnValue([]), @@ -135,6 +134,7 @@ describe("", () => { getVersion: jest.fn().mockReturnValue("1"), setDeviceIsolationMode: jest.fn(), userHasCrossSigningKeys: jest.fn(), + globalBlacklistUnverifiedDevices: false, }), // This needs to not finish immediately because we need to test the screen appears bootstrapCrossSigning: jest.fn().mockImplementation(() => bootstrapDeferred.promise), From 585a6490c653d3cf1ca3a4de45047b18897db4f3 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Thu, 10 Oct 2024 18:59:15 +0200 Subject: [PATCH 05/12] Remove `MatrixClient.getStoredCrossSigningForUser` mocking --- test/test-utils/client.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/test/test-utils/client.ts b/test/test-utils/client.ts index 7b0e22e70e0..3170bcf2201 100644 --- a/test/test-utils/client.ts +++ b/test/test-utils/client.ts @@ -144,7 +144,6 @@ export const mockClientMethodsCrypto = (): Partial< isCrossSigningReady: jest.fn(), isKeyBackupKeyStored: jest.fn(), getCrossSigningCacheCallbacks: jest.fn().mockReturnValue({ getCrossSigningKeyCache: jest.fn() }), - getStoredCrossSigningForUser: jest.fn(), getKeyBackupVersion: jest.fn().mockResolvedValue(null), secretStorage: { hasKey: jest.fn() }, getCrypto: jest.fn().mockReturnValue({ From f12761c7dfdc5260edf86101f365d1855b52c0e9 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Thu, 10 Oct 2024 19:05:36 +0200 Subject: [PATCH 06/12] Replace `MatrixClient.legacyDeviceVerification` by `MatrixClient.CryptoApi.requestDeviceVerification` --- src/verification.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/verification.ts b/src/verification.ts index 5b6d011ba10..c5b1a8b8f13 100644 --- a/src/verification.ts +++ b/src/verification.ts @@ -7,7 +7,6 @@ Please see LICENSE files in the repository root for full details. */ import { User, MatrixClient, RoomMember } from "matrix-js-sdk/src/matrix"; -import { VerificationMethod } from "matrix-js-sdk/src/types"; import { CrossSigningKey, VerificationRequest } from "matrix-js-sdk/src/crypto-api"; import dis from "./dispatcher/dispatcher"; @@ -50,11 +49,9 @@ export async function verifyDevice(matrixClient: MatrixClient, user: User, devic device, onFinished: async (action): Promise => { if (action === "sas") { - const verificationRequestPromise = matrixClient.legacyDeviceVerification( - user.userId, - device.deviceId, - VerificationMethod.Sas, - ); + const verificationRequestPromise = matrixClient + .getCrypto() + ?.requestDeviceVerification(user.userId, device.deviceId); setRightPanel({ member: user, verificationRequestPromise }); } else if (action === "legacy") { Modal.createDialog(ManualDeviceKeyVerificationDialog, { From 90fcb69b6be031bee999ce4132674f678037e8a4 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Mon, 14 Oct 2024 14:45:57 +0200 Subject: [PATCH 07/12] Remove `MatrixClient.isCrossSigningReady` mock --- test/test-utils/client.ts | 1 - .../components/views/settings/CrossSigningPanel-test.tsx | 1 - 2 files changed, 2 deletions(-) diff --git a/test/test-utils/client.ts b/test/test-utils/client.ts index 3170bcf2201..0a5798d8a1a 100644 --- a/test/test-utils/client.ts +++ b/test/test-utils/client.ts @@ -141,7 +141,6 @@ export const mockClientMethodsDevice = ( export const mockClientMethodsCrypto = (): Partial< Record & PropertyLikeKeys, unknown> > => ({ - isCrossSigningReady: jest.fn(), isKeyBackupKeyStored: jest.fn(), getCrossSigningCacheCallbacks: jest.fn().mockReturnValue({ getCrossSigningKeyCache: jest.fn() }), getKeyBackupVersion: jest.fn().mockResolvedValue(null), diff --git a/test/unit-tests/components/views/settings/CrossSigningPanel-test.tsx b/test/unit-tests/components/views/settings/CrossSigningPanel-test.tsx index 0b7a6800935..daa3570ed27 100644 --- a/test/unit-tests/components/views/settings/CrossSigningPanel-test.tsx +++ b/test/unit-tests/components/views/settings/CrossSigningPanel-test.tsx @@ -34,7 +34,6 @@ describe("", () => { }); mockClient.doesServerSupportUnstableFeature.mockResolvedValue(true); - mockClient.isCrossSigningReady.mockResolvedValue(false); }); afterEach(() => { From 4f35b8fb16345aef08c5819bf31ad4efcd7acad7 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Mon, 14 Oct 2024 14:48:35 +0200 Subject: [PATCH 08/12] Replace `MatrixClient.bootstrapCrossSigning` by `MatrixClient.getCrypto.bootstrapCrossSigning` --- .../views/dialogs/security/AccessSecretStorageDialog.tsx | 2 +- .../views/dialogs/security/CreateCrossSigningDialog.tsx | 2 +- test/test-utils/test-utils.ts | 1 - test/unit-tests/components/structures/MatrixChat-test.tsx | 6 ++++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx b/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx index 412d88c704f..6c094e7374c 100644 --- a/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx +++ b/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx @@ -229,7 +229,7 @@ export default class AccessSecretStorageDialog extends React.PureComponent => { // Now reset cross-signing so everything Just Works™ again. const cli = MatrixClientPeg.safeGet(); - await cli.bootstrapCrossSigning({ + await cli.getCrypto()?.bootstrapCrossSigning({ authUploadDeviceSigningKeys: async (makeRequest): Promise => { const { finished } = Modal.createDialog(InteractiveAuthDialog, { title: _t("encryption|bootstrap_title"), diff --git a/src/components/views/dialogs/security/CreateCrossSigningDialog.tsx b/src/components/views/dialogs/security/CreateCrossSigningDialog.tsx index bc5bc6b21e6..69b13a93c96 100644 --- a/src/components/views/dialogs/security/CreateCrossSigningDialog.tsx +++ b/src/components/views/dialogs/security/CreateCrossSigningDialog.tsx @@ -137,7 +137,7 @@ export default class CreateCrossSigningDialog extends React.PureComponent", () => { setDeviceIsolationMode: jest.fn(), userHasCrossSigningKeys: jest.fn(), globalBlacklistUnverifiedDevices: false, + // This needs to not finish immediately because we need to test the screen appears + bootstrapCrossSigning: jest.fn().mockImplementation(() => bootstrapDeferred.promise), }), - // This needs to not finish immediately because we need to test the screen appears - bootstrapCrossSigning: jest.fn().mockImplementation(() => bootstrapDeferred.promise), secretStorage: { isStored: jest.fn().mockReturnValue(null), }, @@ -1010,6 +1010,8 @@ describe("", () => { .mockResolvedValue(new UserVerificationStatus(false, false, false)), setDeviceIsolationMode: jest.fn(), userHasCrossSigningKeys: jest.fn().mockResolvedValue(false), + // This needs to not finish immediately because we need to test the screen appears + bootstrapCrossSigning: jest.fn().mockImplementation(() => bootstrapDeferred.promise), }; loginClient.getCrypto.mockReturnValue(mockCrypto as any); }); From 25fa66734e1e713fbce9faa3d82c0f9a2535bd0b Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Mon, 14 Oct 2024 14:55:55 +0200 Subject: [PATCH 09/12] Replace `MatrixClient.getCryptoTrustCrossSignedDevices` by `MatrixClient.getCrypto.getTrustCrossSignedDevices` --- src/verification.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/verification.ts b/src/verification.ts index c5b1a8b8f13..375143f12c0 100644 --- a/src/verification.ts +++ b/src/verification.ts @@ -38,7 +38,7 @@ export async function verifyDevice(matrixClient: MatrixClient, user: User, devic return; } // if cross-signing is not explicitly disabled, check if it should be enabled first. - if (matrixClient.getCryptoTrustCrossSignedDevices()) { + if (matrixClient.getCrypto()?.getTrustCrossSignedDevices()) { if (!(await enable4SIfNeeded(matrixClient))) { return; } @@ -69,7 +69,7 @@ export async function legacyVerifyUser(matrixClient: MatrixClient, user: User): return; } // if cross-signing is not explicitly disabled, check if it should be enabled first. - if (matrixClient.getCryptoTrustCrossSignedDevices()) { + if (matrixClient.getCrypto()?.getTrustCrossSignedDevices()) { if (!(await enable4SIfNeeded(matrixClient))) { return; } From ed290b37f0cf49026a3076e88d1f4b64afd2a460 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Mon, 14 Oct 2024 18:22:22 +0200 Subject: [PATCH 10/12] Replace `MatrixClient.hasSecretStorageKey` by `MatrixClient.SecretStorage.hasKey` --- .../views/dialogs/security/CreateKeyBackupDialog.tsx | 2 +- .../views/dialogs/security/RestoreKeyBackupDialog.tsx | 2 +- test/test-utils/test-utils.ts | 2 +- .../views/dialogs/security/CreateKeyBackupDialog-test.tsx | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/async-components/views/dialogs/security/CreateKeyBackupDialog.tsx b/src/async-components/views/dialogs/security/CreateKeyBackupDialog.tsx index 3ec62c3df5a..9608abc4bcd 100644 --- a/src/async-components/views/dialogs/security/CreateKeyBackupDialog.tsx +++ b/src/async-components/views/dialogs/security/CreateKeyBackupDialog.tsx @@ -69,7 +69,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent { it("should display an error message when backup creation failed", async () => { const matrixClient = createTestClient(); - mocked(matrixClient.hasSecretStorageKey).mockResolvedValue(true); + jest.spyOn(matrixClient.secretStorage, "hasKey").mockResolvedValue(true); mocked(matrixClient.getCrypto()!.resetKeyBackup).mockImplementation(() => { throw new Error("failed"); }); @@ -49,7 +49,7 @@ describe("CreateKeyBackupDialog", () => { it("should display an error message when there is no Crypto available", async () => { const matrixClient = createTestClient(); - mocked(matrixClient.hasSecretStorageKey).mockResolvedValue(true); + jest.spyOn(matrixClient.secretStorage, "hasKey").mockResolvedValue(true); mocked(matrixClient.getCrypto).mockReturnValue(undefined); MatrixClientPeg.safeGet = MatrixClientPeg.get = () => matrixClient; From c54f038b03181a0bd95b440ad63689e9a4591647 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Mon, 14 Oct 2024 18:24:17 +0200 Subject: [PATCH 11/12] Replace `MatrixClient.getDefaultSecretStorageKeyId` by `MatrixClient.SecretStorage.getDefaultKeyId` --- src/SecurityManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SecurityManager.ts b/src/SecurityManager.ts index 2d103cf25e3..4717404222f 100644 --- a/src/SecurityManager.ts +++ b/src/SecurityManager.ts @@ -76,7 +76,7 @@ async function getSecretStorageKey({ keys: Record; }): Promise<[string, Uint8Array]> { const cli = MatrixClientPeg.safeGet(); - let keyId = await cli.getDefaultSecretStorageKeyId(); + let keyId = await cli.secretStorage.getDefaultKeyId(); let keyInfo!: SecretStorage.SecretStorageKeyDescription; if (keyId) { // use the default SSSS key if set From 511a70b8236c1a64f2ac458f0e945e54f1a9de47 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Tue, 15 Oct 2024 17:59:16 +0200 Subject: [PATCH 12/12] Remove `MatrixClient.encryptAndSendToDevices` call --- test/test-utils/test-utils.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/test/test-utils/test-utils.ts b/test/test-utils/test-utils.ts index 68f401016c8..55b2cfe403b 100644 --- a/test/test-utils/test-utils.ts +++ b/test/test-utils/test-utils.ts @@ -210,7 +210,6 @@ export function createTestClient(): MatrixClient { makeTxnId: jest.fn().mockImplementation(() => `t${txnId++}`), sendToDevice: jest.fn().mockResolvedValue(undefined), queueToDevice: jest.fn().mockResolvedValue(undefined), - encryptAndSendToDevices: jest.fn().mockResolvedValue(undefined), cancelPendingEvent: jest.fn(), getMediaHandler: jest.fn().mockReturnValue({