mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-06 06:41:08 +00:00
34 lines
1.3 KiB
TypeScript
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();
|
|
});
|
|
});
|