Switch to Rust crypto stack for all logins (#12630)
* Use Rust crypto stack universally Ignore the `feature_rust_crypto` and `RustCrypto.staged_rollout_percent` settings, and just use RustCrypto everywhere. * Remove labs setting for rust crypto * Remove support for legacy crypto stack in `StorageManager` We're not going to use the legacy stack any more. * Update docs on `Features.RustCrypto` * Remove now-unreachable `tryToUnlockSecretStorageWithDehydrationKey` * Comment out test which doesn't work * fix typo
This commit is contained in:
parent
2843545d1e
commit
9c862907f9
11 changed files with 96 additions and 931 deletions
|
@ -15,13 +15,11 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import React from "react";
|
||||
import { render, screen, waitFor } from "@testing-library/react";
|
||||
import userEvent from "@testing-library/user-event";
|
||||
import { render, screen } from "@testing-library/react";
|
||||
|
||||
import LabsUserSettingsTab from "../../../../../../src/components/views/settings/tabs/user/LabsUserSettingsTab";
|
||||
import SettingsStore from "../../../../../../src/settings/SettingsStore";
|
||||
import SdkConfig from "../../../../../../src/SdkConfig";
|
||||
import { SettingLevel } from "../../../../../../src/settings/SettingLevel";
|
||||
|
||||
describe("<LabsUserSettingsTab />", () => {
|
||||
const defaultProps = {
|
||||
|
@ -63,105 +61,4 @@ describe("<LabsUserSettingsTab />", () => {
|
|||
const labsSections = container.getElementsByClassName("mx_SettingsSubsection");
|
||||
expect(labsSections).toHaveLength(10);
|
||||
});
|
||||
|
||||
describe("Rust crypto setting", () => {
|
||||
const SETTING_NAME = "Rust cryptography implementation";
|
||||
|
||||
beforeEach(() => {
|
||||
SdkConfig.add({ show_labs_settings: true });
|
||||
});
|
||||
|
||||
describe("Not enabled in config", () => {
|
||||
// these tests only works if the feature is not enabled in the config by default?
|
||||
const copyOfGetValueAt = SettingsStore.getValueAt;
|
||||
|
||||
beforeEach(() => {
|
||||
SettingsStore.getValueAt = (
|
||||
level: SettingLevel,
|
||||
name: string,
|
||||
roomId?: string,
|
||||
isExplicit?: boolean,
|
||||
) => {
|
||||
if (level == SettingLevel.CONFIG && name === "feature_rust_crypto") return false;
|
||||
return copyOfGetValueAt(level, name, roomId, isExplicit);
|
||||
};
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
SettingsStore.getValueAt = copyOfGetValueAt;
|
||||
});
|
||||
|
||||
it("can be turned on if not already", async () => {
|
||||
// By the time the settings panel is shown, `MatrixClientPeg.initClientCrypto` has saved the current
|
||||
// value to the settings store.
|
||||
await SettingsStore.setValue("feature_rust_crypto", null, SettingLevel.DEVICE, false);
|
||||
|
||||
const rendered = render(getComponent());
|
||||
const toggle = rendered.getByRole("switch", { name: SETTING_NAME });
|
||||
expect(toggle.getAttribute("aria-disabled")).toEqual("false");
|
||||
expect(toggle.getAttribute("aria-checked")).toEqual("false");
|
||||
|
||||
const description = toggle.closest(".mx_SettingsFlag")?.querySelector(".mx_SettingsFlag_microcopy");
|
||||
expect(description).toHaveTextContent(/To disable you will need to log out and back in/);
|
||||
});
|
||||
|
||||
it("cannot be turned off once enabled", async () => {
|
||||
await SettingsStore.setValue("feature_rust_crypto", null, SettingLevel.DEVICE, true);
|
||||
|
||||
const rendered = render(getComponent());
|
||||
const toggle = rendered.getByRole("switch", { name: SETTING_NAME });
|
||||
expect(toggle.getAttribute("aria-disabled")).toEqual("true");
|
||||
expect(toggle.getAttribute("aria-checked")).toEqual("true");
|
||||
|
||||
// Hover over the toggle to make it show the tooltip
|
||||
await userEvent.hover(toggle);
|
||||
|
||||
await waitFor(() => {
|
||||
const tooltip = screen.getByRole("tooltip");
|
||||
expect(tooltip).toHaveTextContent(
|
||||
"Once enabled, Rust cryptography can only be disabled by logging out and in again",
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("Enabled in config", () => {
|
||||
beforeEach(() => {
|
||||
SdkConfig.add({ features: { feature_rust_crypto: true } });
|
||||
});
|
||||
|
||||
it("can be turned on if not already", async () => {
|
||||
// By the time the settings panel is shown, `MatrixClientPeg.initClientCrypto` has saved the current
|
||||
// value to the settings store.
|
||||
await SettingsStore.setValue("feature_rust_crypto", null, SettingLevel.DEVICE, false);
|
||||
|
||||
const rendered = render(getComponent());
|
||||
const toggle = rendered.getByRole("switch", { name: SETTING_NAME });
|
||||
expect(toggle.getAttribute("aria-disabled")).toEqual("false");
|
||||
expect(toggle.getAttribute("aria-checked")).toEqual("false");
|
||||
|
||||
const description = toggle.closest(".mx_SettingsFlag")?.querySelector(".mx_SettingsFlag_microcopy");
|
||||
expect(description).toHaveTextContent(/It cannot be disabled/);
|
||||
});
|
||||
|
||||
it("cannot be turned off once enabled", async () => {
|
||||
await SettingsStore.setValue("feature_rust_crypto", null, SettingLevel.DEVICE, true);
|
||||
|
||||
const rendered = render(getComponent());
|
||||
const toggle = rendered.getByRole("switch", { name: SETTING_NAME });
|
||||
expect(toggle.getAttribute("aria-disabled")).toEqual("true");
|
||||
expect(toggle.getAttribute("aria-checked")).toEqual("true");
|
||||
|
||||
// Hover over the toggle to make it show the tooltip
|
||||
await userEvent.hover(toggle);
|
||||
|
||||
await waitFor(() => {
|
||||
const tooltip = rendered.getByRole("tooltip");
|
||||
expect(tooltip).toHaveTextContent(
|
||||
"Rust cryptography cannot be disabled on this deployment of BrandedClient",
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue