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

Commit

Permalink
Test for complete security dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
dbkr committed Sep 11, 2024
1 parent c95fa19 commit 0d1e023
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 0 deletions.
77 changes: 77 additions & 0 deletions test/components/structures/auth/CompleteSecurity-test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/*
Copyright 2024 New Vector Ltd.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/

import React from "react";
import { render, screen } from "@testing-library/react";
import { mocked } from "jest-mock";
import EventEmitter from "events";

import CompleteSecurity from "../../../../src/components/structures/auth/CompleteSecurity";
import { stubClient } from "../../../test-utils";
import { Phase, SetupEncryptionStore } from "../../../../src/stores/SetupEncryptionStore";
import SdkConfig from "../../../../src/SdkConfig";

class MockSetupEncryptionStore extends EventEmitter {
public phase: Phase = Phase.Intro;
public lostKeys(): boolean {
return false;
}

public start: () => void = jest.fn();
public stop: () => void = jest.fn();
}

describe("CompleteSecurity", () => {
beforeEach(() => {
const client = stubClient();
const deviceIdToDevice = new Map();
deviceIdToDevice.set("DEVICE_ID", {
deviceId: "DEVICE_ID",
userId: "USER_ID",
});
const userIdToDevices = new Map();
userIdToDevices.set("USER_ID", deviceIdToDevice);
mocked(client.getCrypto()!.getUserDeviceInfo).mockResolvedValue(userIdToDevices);

const mockSetupEncryptionStore = new MockSetupEncryptionStore();
jest.spyOn(SetupEncryptionStore, "sharedInstance").mockReturnValue(mockSetupEncryptionStore as SetupEncryptionStore);
});

afterEach(() => {
jest.restoreAllMocks();
});

it("Renders with a cancel button by default", () => {
render(<CompleteSecurity onFinished={() => {}} />);

expect(screen.getByRole("button", { name: "Skip verification for now"})).toBeInTheDocument();
});

it("Renders with a cancel button if forceVerification false", () => {
jest.spyOn(SdkConfig, "get").mockImplementation((key: string) => {
if (key === "forceVerification") {
return false;
}
});

render(<CompleteSecurity onFinished={() => {}} />);

expect(screen.getByRole("button", { name: "Skip verification for now"})).toBeInTheDocument();
});

it("Renders without a cancel button if forceVerification true", () => {
jest.spyOn(SdkConfig, "get").mockImplementation((key: string) => {
if (key === "force_verification") {
return true;
}
});

render(<CompleteSecurity onFinished={() => {}} />);

expect(screen.queryByRole("button", { name: "Skip verification for now"})).not.toBeInTheDocument();
});
});
2 changes: 2 additions & 0 deletions test/test-utils/test-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ export function createTestClient(): MatrixClient {

secretStorage: {
get: jest.fn(),
isStored: jest.fn().mockReturnValue(false),
},

store: {
Expand All @@ -128,6 +129,7 @@ export function createTestClient(): MatrixClient {
getDeviceVerificationStatus: jest.fn(),
resetKeyBackup: jest.fn(),
isEncryptionEnabledInRoom: jest.fn(),
getVerificationRequestsToDeviceInProgress: jest.fn().mockReturnValue([]),
}),

getPushActionsForEvent: jest.fn(),
Expand Down

0 comments on commit 0d1e023

Please sign in to comment.