openclaw/extensions/telegram/src/approval-callback-data.test.ts

34 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
fitsTelegramCallbackData,
rewriteTelegramApprovalDecisionAlias,
sanitizeTelegramCallbackData,
} from "./approval-callback-data.js";
describe("approval callback data", () => {
it("enforces Telegram callback byte boundaries", () => {
expect(fitsTelegramCallbackData("x".repeat(63))).toBe(true);
expect(fitsTelegramCallbackData("x".repeat(64))).toBe(true);
expect(fitsTelegramCallbackData("x".repeat(65))).toBe(false);
});
it("rewrites /approve allow-always callbacks to always", () => {
const approvalId = `plugin:${"a".repeat(36)}`;
expect(rewriteTelegramApprovalDecisionAlias(`/approve ${approvalId} allow-always`)).toBe(
`/approve ${approvalId} always`,
);
});
it("keeps rewritten allow-always callbacks when canonical form would overflow", () => {
const approvalId = `plugin:${"a".repeat(36)}`;
expect(sanitizeTelegramCallbackData(`/approve ${approvalId} allow-always`)).toBe(
`/approve ${approvalId} always`,
);
});
it("keeps 64-byte callbacks and drops 65-byte callbacks through sanitize", () => {
expect(sanitizeTelegramCallbackData("x".repeat(64))).toBe("x".repeat(64));
expect(sanitizeTelegramCallbackData("x".repeat(65))).toBeUndefined();
});
});