From 8d01c23309d3f8f62c5790fe0430c698cf23c1b1 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Tue, 26 Nov 2024 15:57:24 +0100 Subject: [PATCH] Add tests when user verification change --- .../components/structures/RoomView-test.tsx | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/test/unit-tests/components/structures/RoomView-test.tsx b/test/unit-tests/components/structures/RoomView-test.tsx index cf6b1c4ebc..b613dd57d0 100644 --- a/test/unit-tests/components/structures/RoomView-test.tsx +++ b/test/unit-tests/components/structures/RoomView-test.tsx @@ -22,7 +22,7 @@ import { RoomStateEvent, SearchResult, } from "matrix-js-sdk/src/matrix"; -import { CryptoApi, UserVerificationStatus } from "matrix-js-sdk/src/crypto-api"; +import { CryptoApi, UserVerificationStatus, CryptoEvent } from "matrix-js-sdk/src/crypto-api"; import { KnownMembership } from "matrix-js-sdk/src/types"; import { fireEvent, @@ -307,6 +307,32 @@ describe("RoomView", () => { expect(roomViewInstance.state.liveTimeline).not.toEqual(oldTimeline); }); + it("should update when the e2e status when the user verification changed", async () => { + room.currentState.setStateEvents([ + mkRoomMemberJoinEvent(cli.getSafeUserId(), room.roomId), + mkRoomMemberJoinEvent("user@example.com", room.roomId), + ]); + room.getMyMembership = jest.fn().mockReturnValue(KnownMembership.Join); + // Not all the calls to cli.isRoomEncrypted are migrated, so we need to mock both. + mocked(cli.isRoomEncrypted).mockReturnValue(true); + jest.spyOn(cli, "getCrypto").mockReturnValue(crypto); + jest.spyOn(cli.getCrypto()!, "isEncryptionEnabledInRoom").mockResolvedValue(true); + jest.spyOn(cli.getCrypto()!, "getUserVerificationStatus").mockResolvedValue( + new UserVerificationStatus(false, false, false), + ); + jest.spyOn(cli.getCrypto()!, "getUserDeviceInfo").mockResolvedValue( + new Map([["user@example.com", new Map()]]), + ); + + const { container } = await renderRoomView(); + await waitFor(() => expect(container.querySelector(".mx_E2EIcon_normal")).toBeInTheDocument()); + + const verificationStatus = new UserVerificationStatus(true, true, false); + jest.spyOn(cli.getCrypto()!, "getUserVerificationStatus").mockResolvedValue(verificationStatus); + cli.emit(CryptoEvent.UserTrustStatusChanged, cli.getSafeUserId(), verificationStatus); + await waitFor(() => expect(container.querySelector(".mx_E2EIcon_verified")).toBeInTheDocument()); + }); + describe("with virtual rooms", () => { it("checks for a virtual room on initial load", async () => { const { container } = await renderRoomView();