Fix ability to send rageshake during session restore failure (#31848)
* Fix ability to send rageshake during session restore failure This fixes the specific edge case but also hardens the codepath to limit the effect of other similar edges popping up Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Improve coverage Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Improve coverage Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
committed by
GitHub
parent
51f5ec021a
commit
d733ac014c
@@ -25,6 +25,8 @@ import { type FeatureSettingKey, type SettingKey } from "../../src/settings/Sett
|
||||
import { SettingLevel } from "../../src/settings/SettingLevel.ts";
|
||||
import SdkConfig from "../../src/SdkConfig.ts";
|
||||
import { BugReportEndpointURLLocal } from "../../src/IConfigOptions.ts";
|
||||
import { Notifier } from "../../src/Notifier.ts";
|
||||
import { MatrixClientPeg } from "../../src/MatrixClientPeg.ts";
|
||||
|
||||
describe("Rageshakes", () => {
|
||||
let mockClient: Mocked<MatrixClient>;
|
||||
@@ -356,7 +358,9 @@ describe("Rageshakes", () => {
|
||||
});
|
||||
|
||||
describe("Settings Store", () => {
|
||||
const mockSettingsStore = mocked(SettingsStore);
|
||||
beforeEach(() => {
|
||||
jest.spyOn(Notifier, "isPossible").mockReturnValue(true);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
jest.restoreAllMocks();
|
||||
@@ -368,8 +372,8 @@ describe("Rageshakes", () => {
|
||||
"feature_notification_settings2",
|
||||
] as unknown[] as FeatureSettingKey[];
|
||||
const enabledFeatures: SettingKey[] = ["feature_video_rooms"];
|
||||
jest.spyOn(mockSettingsStore, "getFeatureSettingNames").mockReturnValue(someFeatures);
|
||||
jest.spyOn(mockSettingsStore, "getValue").mockImplementation((settingName): any => {
|
||||
jest.spyOn(SettingsStore, "getFeatureSettingNames").mockReturnValue(someFeatures);
|
||||
jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName): any => {
|
||||
return enabledFeatures.includes(settingName);
|
||||
});
|
||||
|
||||
@@ -378,7 +382,7 @@ describe("Rageshakes", () => {
|
||||
});
|
||||
|
||||
it("should collect low bandWidth enabled", async () => {
|
||||
jest.spyOn(mockSettingsStore, "getValue").mockImplementation((settingName): any => {
|
||||
jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName): any => {
|
||||
if (settingName == "lowBandwidth") {
|
||||
return true;
|
||||
}
|
||||
@@ -388,7 +392,7 @@ describe("Rageshakes", () => {
|
||||
expect(formData.get("lowBandwidth")).toBe("enabled");
|
||||
});
|
||||
it("should collect low bandWidth disabled", async () => {
|
||||
jest.spyOn(mockSettingsStore, "getValue").mockImplementation((settingName): any => {
|
||||
jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName): any => {
|
||||
if (settingName == "lowBandwidth") {
|
||||
return false;
|
||||
}
|
||||
@@ -397,6 +401,28 @@ describe("Rageshakes", () => {
|
||||
const formData = await collectBugReport();
|
||||
expect(formData.get("lowBandwidth")).toBeNull();
|
||||
});
|
||||
|
||||
it("should handle settings throwing when logged out", async () => {
|
||||
jest.mocked(MatrixClientPeg.get).mockRestore();
|
||||
jest.mocked(MatrixClientPeg.safeGet).mockRestore();
|
||||
jest.spyOn(Notifier, "isPossible").mockImplementation(() => {
|
||||
throw new Error("Test");
|
||||
});
|
||||
|
||||
const formData = await collectBugReport();
|
||||
expect(JSON.parse(formData.get("mx_local_settings") as string)["notificationsEnabled"]).toBe(
|
||||
"Failed to read setting!",
|
||||
);
|
||||
});
|
||||
|
||||
it("should handle reading notification settings when logged out", async () => {
|
||||
jest.mocked(MatrixClientPeg.get).mockRestore();
|
||||
jest.mocked(MatrixClientPeg.safeGet).mockRestore();
|
||||
jest.spyOn(Notifier, "isPossible").mockReturnValue(true);
|
||||
|
||||
const formData = await collectBugReport();
|
||||
expect(JSON.parse(formData.get("mx_local_settings") as string)["notificationsEnabled"]).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Navigator Storage", () => {
|
||||
|
||||
Reference in New Issue
Block a user