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 <florianduros@element.io>
pull/28217/head
Richard van der Hoff 2023-09-18 23:34:24 +02:00 committed by GitHub
parent cf2340bcad
commit 50ee43c4a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 7 deletions

View File

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

View File

@ -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;