From 50ee43c4a54c5812322bda5ab2d0a9c837dc853c Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> Date: Mon, 18 Sep 2023 23:34:24 +0200 Subject: [PATCH] Enable cypress tests for shields with rust crypto (#11589) * Use new crypto-api for cross user verification * update verification flow with new APIs * Replace some calls to `checkUserTrust` A start on https://github.com/vector-im/crypto-internal/issues/147 * Enable cypress tests * update tests * Delegate decisions on event shields to the js-sdk * rerender after editing events This is required because a transition from "valid event" to "unencrypted event" no longer triggers a state change, so the component does not render itself. Previously, this would be a transition from `verified: E2EState.Normal` to `verified: null`. * Update tests * prettier * Test coverage * Enable cypress tests for shields with rust crypto --------- Co-authored-by: Florian Duros --- cypress/e2e/crypto/crypto.spec.ts | 7 +------ src/components/views/rooms/EventTile.tsx | 9 ++++++++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/cypress/e2e/crypto/crypto.spec.ts b/cypress/e2e/crypto/crypto.spec.ts index 08a7b49576..7e34ed7990 100644 --- a/cypress/e2e/crypto/crypto.spec.ts +++ b/cypress/e2e/crypto/crypto.spec.ts @@ -259,7 +259,6 @@ describe("Cryptography", function () { } it("creating a DM should work, being e2e-encrypted / user verification", function (this: CryptoTestContext) { - skipIfRustCrypto(); // needs working event shields cy.bootstrapCrossSigning(aliceCredentials); startDMWithBob.call(this); // send first message @@ -325,8 +324,6 @@ describe("Cryptography", function () { }); it("should show the correct shield on e2e events", function (this: CryptoTestContext) { - skipIfRustCrypto(); - // Bob has a second, not cross-signed, device let bobSecondDevice: MatrixClient; cy.loginBot(homeserver, bob.getUserId(), bob.__cypress_password, {}).then(async (data) => { @@ -426,7 +423,7 @@ describe("Cryptography", function () { }); it("Should show a grey padlock for a key restored from backup", () => { - skipIfRustCrypto(); + skipIfRustCrypto(); // requires key backup (https://github.com/vector-im/element-web/issues/24828) enableKeyBackup(); @@ -460,8 +457,6 @@ describe("Cryptography", function () { }); it("should show the correct shield on edited e2e events", function (this: CryptoTestContext) { - skipIfRustCrypto(); - // bob has a second, not cross-signed, device cy.loginBot(this.homeserver, this.bob.getUserId(), this.bob.__cypress_password, {}).as("bobSecondDevice"); diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index bc70e95fa9..21fbd967b8 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -589,7 +589,14 @@ export class UnwrappedEventTile extends React.Component this.verifyEvent(); }; - private async verifyEvent(): Promise { + private verifyEvent(): void { + this.doVerifyEvent().catch((e) => { + const event = this.props.mxEvent; + logger.error("Error getting encryption info on event", e, event); + }); + } + + private async doVerifyEvent(): Promise { // if the event was edited, show the verification info for the edit, not // the original const mxEvent = this.props.mxEvent.replacingEvent() ?? this.props.mxEvent;