fix(webui): encode automation update values

This commit is contained in:
chengyongru
2026-06-15 15:14:24 +08:00
parent 5892c6913b
commit f8bf6aea51
5 changed files with 41 additions and 16 deletions
+8 -9
View File
@@ -125,25 +125,24 @@ describe("webui API helpers", () => {
});
it("serializes workspace automation updates", async () => {
await updateAutomation("tok", "job 1/2", {
name: "Daily quiz",
message: "Ask the quiz",
const values = {
name: "每日测验",
message: "Ask 今日 quiz",
schedule: { kind: "cron", expr: "0 9 * * *", tz: "Asia/Shanghai" },
});
} as const;
await updateAutomation("tok", "job 1/2", values);
expect(fetch).toHaveBeenCalledWith(
"/api/webui/automations/update?id=job+1%2F2",
expect.objectContaining({
headers: {
Authorization: "Bearer tok",
"X-Nanobot-Automation-Values": JSON.stringify({
name: "Daily quiz",
message: "Ask the quiz",
schedule: { kind: "cron", expr: "0 9 * * *", tz: "Asia/Shanghai" },
}),
"X-Nanobot-Automation-Values": encodeURIComponent(JSON.stringify(values)),
},
}),
);
const header = vi.mocked(fetch).mock.calls[0][1]?.headers as Record<string, string>;
expect(header["X-Nanobot-Automation-Values"]).not.toContain("每日");
});
it("fetches the WebUI skill summary", async () => {
+1 -1
View File
@@ -518,7 +518,7 @@ describe("App layout", () => {
);
expect(updateCall).toBeTruthy();
const headers = updateCall?.[1]?.headers as Record<string, string>;
expect(JSON.parse(headers["X-Nanobot-Automation-Values"])).toEqual({
expect(JSON.parse(decodeURIComponent(headers["X-Nanobot-Automation-Values"]))).toEqual({
name: "Past one-shot",
message: "Updated one-shot message",
});