


























@@ -153,15 +153,14 @@ describe("loadSettings default gateway URL derivation", () => {
153153setControlUiBasePath(undefined);
154154const warningSpy = vi.spyOn(process, "emitWarning").mockImplementation(() => undefined);
155155156-expect(loadSettings()).toMatchObject({
157-gatewayUrl: expectedGatewayUrl(""),
158-token: "",
159-});
160-expect(warningSpy).not.toHaveBeenCalledWith(
161-"`--localstorage-file` was provided without a valid path",
162-expect.anything(),
163-expect.anything(),
164-);
156+const settings = loadSettings();
157+expect(settings.gatewayUrl).toBe(expectedGatewayUrl(""));
158+expect(settings.token).toBe("");
159+expect(
160+warningSpy.mock.calls.some(
161+([message]) => message === "`--localstorage-file` was provided without a valid path",
162+),
163+).toBe(false);
165164});
166165167166it("ignores and scrubs legacy persisted tokens", () => {
@@ -180,11 +179,10 @@ describe("loadSettings default gateway URL derivation", () => {
180179}),
181180);
182181183-expect(loadSettings()).toMatchObject({
184-gatewayUrl: "wss://gateway.example:8443/openclaw",
185-token: "",
186-sessionKey: "agent",
187-});
182+const settings = loadSettings();
183+expect(settings.gatewayUrl).toBe("wss://gateway.example:8443/openclaw");
184+expect(settings.token).toBe("");
185+expect(settings.sessionKey).toBe("agent");
188186const scopedKey = "openclaw.control.settings.v1:wss://gateway.example:8443/openclaw";
189187expect(JSON.parse(localStorage.getItem(scopedKey) ?? "{}")).toEqual({
190188gatewayUrl: "wss://gateway.example:8443/openclaw",
@@ -233,10 +231,9 @@ describe("loadSettings default gateway URL derivation", () => {
233231borderRadius: 50,
234232});
235233236-expect(loadSettings()).toMatchObject({
237-gatewayUrl: gwUrl,
238-token: "session-token",
239-});
234+const settings = loadSettings();
235+expect(settings.gatewayUrl).toBe(gwUrl);
236+expect(settings.token).toBe("session-token");
240237});
241238242239it("does not reuse a session token for a different gatewayUrl", () => {
@@ -282,10 +279,9 @@ describe("loadSettings default gateway URL derivation", () => {
282279borderRadius: 50,
283280});
284281285-expect(loadSettings()).toMatchObject({
286-gatewayUrl: gwUrl,
287-token: "gateway-a-token",
288-});
282+const settings = loadSettings();
283+expect(settings.gatewayUrl).toBe(gwUrl);
284+expect(settings.token).toBe("gateway-a-token");
289285});
290286291287it("does not persist gateway tokens when saving settings", () => {
@@ -312,10 +308,9 @@ describe("loadSettings default gateway URL derivation", () => {
312308navGroupsCollapsed: {},
313309borderRadius: 50,
314310});
315-expect(loadSettings()).toMatchObject({
316-gatewayUrl: gwUrl,
317-token: "memory-only-token",
318-});
311+const settings = loadSettings();
312+expect(settings.gatewayUrl).toBe(gwUrl);
313+expect(settings.token).toBe("memory-only-token");
319314320315const scopedKey = `openclaw.control.settings.v1:${gwUrl}`;
321316expect(JSON.parse(localStorage.getItem(scopedKey) ?? "{}")).toEqual({
@@ -411,11 +406,13 @@ describe("loadSettings default gateway URL derivation", () => {
411406});
412407413408const scopedKey = `openclaw.control.settings.v1:${gwUrl}`;
414-expect(JSON.parse(localStorage.getItem(scopedKey) ?? "{}")).toMatchObject({
415-theme: "dash",
416-themeMode: "light",
417-navWidth: 320,
418-});
409+const persisted = JSON.parse(localStorage.getItem(scopedKey) ?? "{}") as Record<
410+string,
411+unknown
412+>;
413+expect(persisted.theme).toBe("dash");
414+expect(persisted.themeMode).toBe("light");
415+expect(persisted.navWidth).toBe(320);
419416});
420417421418it("persists the browser-local custom theme payload when present", () => {
@@ -445,13 +442,10 @@ describe("loadSettings default gateway URL derivation", () => {
445442 customTheme,
446443});
447444448-expect(loadSettings()).toMatchObject({
449-theme: "custom",
450-customTheme: {
451-label: "Light Green",
452-themeId: "cmlhfpjhw000004l4f4ax3m7z",
453-},
454-});
445+const settings = loadSettings();
446+expect(settings.theme).toBe("custom");
447+expect(settings.customTheme?.label).toBe("Light Green");
448+expect(settings.customTheme?.themeId).toBe("cmlhfpjhw000004l4f4ax3m7z");
455449});
456450457451it("falls back to claw when persisted custom theme data is invalid", () => {
@@ -493,10 +487,9 @@ describe("loadSettings default gateway URL derivation", () => {
493487}),
494488);
495489496-expect(loadSettings()).toMatchObject({
497-theme: "claw",
498-themeMode: "dark",
499-});
490+const settings = loadSettings();
491+expect(settings.theme).toBe("claw");
492+expect(settings.themeMode).toBe("dark");
500493});
501494502495it("scopes persisted session selection per gateway", () => {
@@ -524,11 +517,10 @@ describe("loadSettings default gateway URL derivation", () => {
524517borderRadius: 50,
525518});
526519527-expect(loadSettings()).toMatchObject({
528-gatewayUrl: gwUrl,
529-sessionKey: "agent:test_old:main",
530-lastActiveSessionKey: "agent:test_old:main",
531-});
520+const settings = loadSettings();
521+expect(settings.gatewayUrl).toBe(gwUrl);
522+expect(settings.sessionKey).toBe("agent:test_old:main");
523+expect(settings.lastActiveSessionKey).toBe("agent:test_old:main");
532524});
533525534526it("caps persisted session scopes to the most recent gateways", () => {
@@ -571,16 +563,14 @@ describe("loadSettings default gateway URL derivation", () => {
571563572564const persisted = JSON.parse(localStorage.getItem(scopedKey) ?? "{}");
573565574-const sessionsByGateway = persisted.sessionsByGateway as unknown;
575-expect(sessionsByGateway).toEqual(
576-expect.objectContaining({
577-"wss://gateway.example:8443": {
578-sessionKey: "agent:current:main",
579-lastActiveSessionKey: "agent:current:main",
580-},
581-}),
582-);
583-const scopedSessions = sessionsByGateway as Record<string, unknown>;
566+const scopedSessions = persisted.sessionsByGateway as Record<
567+string,
568+{ sessionKey: string; lastActiveSessionKey: string }
569+>;
570+expect(scopedSessions["wss://gateway.example:8443"]).toEqual({
571+sessionKey: "agent:current:main",
572+lastActiveSessionKey: "agent:current:main",
573+});
584574const scopes = Object.keys(scopedSessions);
585575expect(scopes).toHaveLength(10);
586576// oldest stale entries should be evicted
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。