Restore the v2.0.35 renderer settings validation behavior that was lost when the download path returned to the v2.0.28 baseline. Ignore undefined optional values at top level and inside structured settings while continuing to reject unknown concrete keys and invalid types. Cover a full settings save containing a Real-Debrid account status without the optional email field, plus obsolete optional-field handling.
41 lines
1.7 KiB
TypeScript
41 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { defaultSettings } from "../src/main/constants";
|
|
import { createRendererSettings } from "../src/main/renderer-state";
|
|
import { validateRendererSettingsUpdate } from "../src/main/renderer-settings";
|
|
|
|
describe("renderer settings validation", () => {
|
|
it("accepts a complete settings save when an account status has no optional email", () => {
|
|
const current = defaultSettings();
|
|
current.debridAccountStatuses = {
|
|
"svc-realdebrid": {
|
|
accountId: "svc-realdebrid",
|
|
provider: "realdebrid",
|
|
label: "Real-Debrid",
|
|
maskedLogin: "user",
|
|
valid: true,
|
|
isPremium: true,
|
|
premiumUntilMs: null,
|
|
message: "Premium aktiv",
|
|
checkedAt: 1_700_000_000_000
|
|
}
|
|
};
|
|
const rendererSettings = createRendererSettings(current);
|
|
|
|
expect(rendererSettings.debridAccountStatuses["svc-realdebrid"]).toHaveProperty("email", undefined);
|
|
const validated = validateRendererSettingsUpdate(rendererSettings, current);
|
|
|
|
expect(validated.debridAccountStatuses).toEqual(rendererSettings.debridAccountStatuses);
|
|
expect(validated.animatePackageDisclosure).toBe(true);
|
|
expect(validated).not.toHaveProperty("configuredProviders");
|
|
expect(validated).not.toHaveProperty("archivePasswordListConfigured");
|
|
expect(validated).not.toHaveProperty("notifyUrlConfigured");
|
|
});
|
|
|
|
it("ignores omitted optional top-level values but still rejects unknown concrete settings", () => {
|
|
const current = defaultSettings();
|
|
|
|
expect(validateRendererSettingsUpdate({ columnOrderVersion: undefined }, current)).toEqual({});
|
|
expect(() => validateRendererSettingsUpdate({ obsoleteSetting: true }, current)).toThrow("Settings-Payload ist ungültig");
|
|
});
|
|
});
|