refactor(doctor): model legacy file copies as plans

This commit is contained in:
Peter Steinberger
2026-03-08 02:07:17 +00:00
parent 01cff3a7a6
commit 44e7c1142e
2 changed files with 109 additions and 26 deletions

View File

@@ -296,6 +296,9 @@ describe("doctor legacy state migrations", () => {
env: { OPENCLAW_STATE_DIR: root } as NodeJS.ProcessEnv,
});
expect(detected.pairingAllowFrom.hasLegacyTelegram).toBe(true);
expect(
detected.pairingAllowFrom.copyPlans.map((plan) => path.basename(plan.targetPath)),
).toEqual(["telegram-default-allowFrom.json"]);
const result = await runLegacyStateMigrations({ detected, now: () => 123 });
expect(result.warnings).toEqual([]);
@@ -308,6 +311,59 @@ describe("doctor legacy state migrations", () => {
});
});
it("fans out legacy Telegram pairing allowFrom store to configured named accounts", async () => {
const root = await makeTempRoot();
const cfg: OpenClawConfig = {
channels: {
telegram: {
accounts: {
bot1: {},
bot2: {},
},
},
},
};
const oauthDir = ensureCredentialsDir(root);
fs.writeFileSync(
path.join(oauthDir, "telegram-allowFrom.json"),
JSON.stringify(
{
version: 1,
allowFrom: ["123456"],
},
null,
2,
) + "\n",
"utf-8",
);
const detected = await detectLegacyStateMigrations({
cfg,
env: { OPENCLAW_STATE_DIR: root } as NodeJS.ProcessEnv,
});
expect(detected.pairingAllowFrom.hasLegacyTelegram).toBe(true);
expect(
detected.pairingAllowFrom.copyPlans.map((plan) => path.basename(plan.targetPath)).toSorted(),
).toEqual(["telegram-bot1-allowFrom.json", "telegram-bot2-allowFrom.json"]);
const result = await runLegacyStateMigrations({ detected, now: () => 123 });
expect(result.warnings).toEqual([]);
const bot1Target = path.join(oauthDir, "telegram-bot1-allowFrom.json");
const bot2Target = path.join(oauthDir, "telegram-bot2-allowFrom.json");
expect(fs.existsSync(bot1Target)).toBe(true);
expect(fs.existsSync(bot2Target)).toBe(true);
expect(fs.existsSync(path.join(oauthDir, "telegram-default-allowFrom.json"))).toBe(false);
expect(JSON.parse(fs.readFileSync(bot1Target, "utf-8"))).toEqual({
version: 1,
allowFrom: ["123456"],
});
expect(JSON.parse(fs.readFileSync(bot2Target, "utf-8"))).toEqual({
version: 1,
allowFrom: ["123456"],
});
});
it("no-ops when nothing detected", async () => {
const root = await makeTempRoot();
const cfg: OpenClawConfig = {};