| import { describe, expect, it } from "vitest"; |
| import type { OpenClawConfig } from "../../config/config.js"; |
| import { DEFAULT_ACCOUNT_ID } from "../../routing/session-key.js"; |
| import { applySetupAccountConfigPatch } from "./setup-helpers.js"; |
|
|
| function asConfig(value: unknown): OpenClawConfig { |
| return value as OpenClawConfig; |
| } |
|
|
| describe("applySetupAccountConfigPatch", () => { |
| it("patches top-level config for default account and enables channel", () => { |
| const next = applySetupAccountConfigPatch({ |
| cfg: asConfig({ |
| channels: { |
| zalo: { |
| webhookPath: "/old", |
| enabled: false, |
| }, |
| }, |
| }), |
| channelKey: "zalo", |
| accountId: DEFAULT_ACCOUNT_ID, |
| patch: { webhookPath: "/new", botToken: "tok" }, |
| }); |
|
|
| expect(next.channels?.zalo).toMatchObject({ |
| enabled: true, |
| webhookPath: "/new", |
| botToken: "tok", |
| }); |
| }); |
|
|
| it("patches named account config and preserves existing account enabled flag", () => { |
| const next = applySetupAccountConfigPatch({ |
| cfg: asConfig({ |
| channels: { |
| zalo: { |
| enabled: false, |
| accounts: { |
| work: { botToken: "old", enabled: false }, |
| }, |
| }, |
| }, |
| }), |
| channelKey: "zalo", |
| accountId: "work", |
| patch: { botToken: "new" }, |
| }); |
|
|
| expect(next.channels?.zalo).toMatchObject({ |
| enabled: true, |
| accounts: { |
| work: { enabled: false, botToken: "new" }, |
| }, |
| }); |
| }); |
|
|
| it("normalizes account id and preserves other accounts", () => { |
| const next = applySetupAccountConfigPatch({ |
| cfg: asConfig({ |
| channels: { |
| zalo: { |
| accounts: { |
| personal: { botToken: "personal-token" }, |
| }, |
| }, |
| }, |
| }), |
| channelKey: "zalo", |
| accountId: "Work Team", |
| patch: { botToken: "work-token" }, |
| }); |
|
|
| expect(next.channels?.zalo).toMatchObject({ |
| accounts: { |
| personal: { botToken: "personal-token" }, |
| "work-team": { enabled: true, botToken: "work-token" }, |
| }, |
| }); |
| }); |
| }); |
|
|