Harden Telegram poll gating and schema consistency (#36547)

Merged via squash.

Prepared head SHA: f77824419e
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
This commit is contained in:
Gustavo Madeira Santana
2026-03-05 19:24:43 -05:00
committed by GitHub
parent f771ba8de9
commit 6dfd39c32f
27 changed files with 1129 additions and 65 deletions

View File

@@ -166,6 +166,24 @@ const createTelegramSendPluginRegistration = () => ({
}),
});
const createTelegramPollPluginRegistration = () => ({
pluginId: "telegram",
source: "test",
plugin: createStubPlugin({
id: "telegram",
label: "Telegram",
actions: {
listActions: () => ["poll"],
handleAction: (async ({ action, params, cfg, accountId }: ChannelActionParams) => {
return await handleTelegramAction(
{ action, to: params.to, accountId: accountId ?? undefined },
cfg,
);
}) as unknown as NonNullable<ChannelPlugin["actions"]>["handleAction"],
},
}),
});
const { messageCommand } = await import("./message.js");
describe("messageCommand", () => {
@@ -468,4 +486,34 @@ describe("messageCommand", () => {
expect.any(Object),
);
});
it("routes telegram polls through message action", async () => {
await setRegistry(
createTestRegistry([
{
...createTelegramPollPluginRegistration(),
},
]),
);
const deps = makeDeps();
await messageCommand(
{
action: "poll",
channel: "telegram",
target: "123456789",
pollQuestion: "Ship it?",
pollOption: ["Yes", "No"],
pollDurationSeconds: 120,
},
deps,
runtime,
);
expect(handleTelegramAction).toHaveBeenCalledWith(
expect.objectContaining({
action: "poll",
to: "123456789",
}),
expect.any(Object),
);
});
});