Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Enable cypress tests for shields with rust crypto (#11589)
Browse files Browse the repository at this point in the history
* Use new crypto-api for cross user verification

* update verification flow with new APIs

* Replace some calls to `checkUserTrust`

A start on element-hq/crypto-internal#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 <[email protected]>
  • Loading branch information
richvdh and florianduros authored Sep 18, 2023
1 parent cf2340b commit 50ee43c
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 7 deletions.
7 changes: 1 addition & 6 deletions cypress/e2e/crypto/crypto.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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) => {
Expand Down Expand Up @@ -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();

Expand Down Expand Up @@ -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");

Expand Down
9 changes: 8 additions & 1 deletion src/components/views/rooms/EventTile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -589,7 +589,14 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
this.verifyEvent();
};

private async verifyEvent(): Promise<void> {
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<void> {
// if the event was edited, show the verification info for the edit, not
// the original
const mxEvent = this.props.mxEvent.replacingEvent() ?? this.props.mxEvent;
Expand Down

0 comments on commit 50ee43c

Please sign in to comment.