99 lines
3.1 KiB
TypeScript
99 lines
3.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import type { ClawdbotConfig } from "../config/config.js";
|
|
import { resolveTelegramAccount } from "./accounts.js";
|
|
|
|
describe("resolveTelegramAccount", () => {
|
|
it("falls back to the first configured account when accountId is omitted", () => {
|
|
const prevTelegramToken = process.env.TELEGRAM_BOT_TOKEN;
|
|
process.env.TELEGRAM_BOT_TOKEN = "";
|
|
try {
|
|
const cfg: ClawdbotConfig = {
|
|
channels: {
|
|
telegram: { accounts: { work: { botToken: "tok-work" } } },
|
|
},
|
|
};
|
|
|
|
const account = resolveTelegramAccount({ cfg });
|
|
expect(account.accountId).toBe("work");
|
|
expect(account.token).toBe("tok-work");
|
|
expect(account.tokenSource).toBe("config");
|
|
} finally {
|
|
if (prevTelegramToken === undefined) {
|
|
delete process.env.TELEGRAM_BOT_TOKEN;
|
|
} else {
|
|
process.env.TELEGRAM_BOT_TOKEN = prevTelegramToken;
|
|
}
|
|
}
|
|
});
|
|
|
|
it("uses TELEGRAM_BOT_TOKEN when default account config is missing", () => {
|
|
const prevTelegramToken = process.env.TELEGRAM_BOT_TOKEN;
|
|
process.env.TELEGRAM_BOT_TOKEN = "tok-env";
|
|
try {
|
|
const cfg: ClawdbotConfig = {
|
|
channels: {
|
|
telegram: { accounts: { work: { botToken: "tok-work" } } },
|
|
},
|
|
};
|
|
|
|
const account = resolveTelegramAccount({ cfg });
|
|
expect(account.accountId).toBe("default");
|
|
expect(account.token).toBe("tok-env");
|
|
expect(account.tokenSource).toBe("env");
|
|
} finally {
|
|
if (prevTelegramToken === undefined) {
|
|
delete process.env.TELEGRAM_BOT_TOKEN;
|
|
} else {
|
|
process.env.TELEGRAM_BOT_TOKEN = prevTelegramToken;
|
|
}
|
|
}
|
|
});
|
|
|
|
it("prefers default config token over TELEGRAM_BOT_TOKEN", () => {
|
|
const prevTelegramToken = process.env.TELEGRAM_BOT_TOKEN;
|
|
process.env.TELEGRAM_BOT_TOKEN = "tok-env";
|
|
try {
|
|
const cfg: ClawdbotConfig = {
|
|
channels: {
|
|
telegram: { botToken: "tok-config" },
|
|
},
|
|
};
|
|
|
|
const account = resolveTelegramAccount({ cfg });
|
|
expect(account.accountId).toBe("default");
|
|
expect(account.token).toBe("tok-config");
|
|
expect(account.tokenSource).toBe("config");
|
|
} finally {
|
|
if (prevTelegramToken === undefined) {
|
|
delete process.env.TELEGRAM_BOT_TOKEN;
|
|
} else {
|
|
process.env.TELEGRAM_BOT_TOKEN = prevTelegramToken;
|
|
}
|
|
}
|
|
});
|
|
|
|
it("does not fall back when accountId is explicitly provided", () => {
|
|
const prevTelegramToken = process.env.TELEGRAM_BOT_TOKEN;
|
|
process.env.TELEGRAM_BOT_TOKEN = "";
|
|
try {
|
|
const cfg: ClawdbotConfig = {
|
|
channels: {
|
|
telegram: { accounts: { work: { botToken: "tok-work" } } },
|
|
},
|
|
};
|
|
|
|
const account = resolveTelegramAccount({ cfg, accountId: "default" });
|
|
expect(account.accountId).toBe("default");
|
|
expect(account.tokenSource).toBe("none");
|
|
expect(account.token).toBe("");
|
|
} finally {
|
|
if (prevTelegramToken === undefined) {
|
|
delete process.env.TELEGRAM_BOT_TOKEN;
|
|
} else {
|
|
process.env.TELEGRAM_BOT_TOKEN = prevTelegramToken;
|
|
}
|
|
}
|
|
});
|
|
});
|