mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-07 17:12:54 +00:00
91 lines
3.8 KiB
TypeScript
91 lines
3.8 KiB
TypeScript
import { MAX_TIMER_TIMEOUT_MS } from "openclaw/plugin-sdk/number-runtime";
|
|
import { describe, expect, it } from "vitest";
|
|
import {
|
|
resolveTelegramLongPollTimeoutSeconds,
|
|
resolveTelegramRequestTimeoutMs,
|
|
resolveTelegramStartupProbeTimeoutMs,
|
|
} from "./request-timeouts.js";
|
|
|
|
describe("resolveTelegramRequestTimeoutMs", () => {
|
|
it("bounds Telegram startup control-plane methods", () => {
|
|
expect(resolveTelegramRequestTimeoutMs("deletemycommands")).toBe(15_000);
|
|
expect(resolveTelegramRequestTimeoutMs("deletewebhook")).toBe(15_000);
|
|
expect(resolveTelegramRequestTimeoutMs("getme")).toBe(15_000);
|
|
expect(resolveTelegramRequestTimeoutMs("setmycommands")).toBe(15_000);
|
|
expect(resolveTelegramRequestTimeoutMs("setwebhook")).toBe(15_000);
|
|
});
|
|
|
|
it("keeps the longer polling timeout for getUpdates", () => {
|
|
expect(resolveTelegramRequestTimeoutMs("getupdates")).toBe(45_000);
|
|
});
|
|
|
|
it("bounds outbound delivery methods", () => {
|
|
expect(resolveTelegramRequestTimeoutMs("sendmessage")).toBe(60_000);
|
|
expect(resolveTelegramRequestTimeoutMs("sendchataction")).toBe(60_000);
|
|
expect(resolveTelegramRequestTimeoutMs("sendmessagedraft")).toBe(60_000);
|
|
expect(resolveTelegramRequestTimeoutMs("editmessagetext")).toBe(15_000);
|
|
expect(resolveTelegramRequestTimeoutMs("sendphoto")).toBe(30_000);
|
|
});
|
|
|
|
it("honors higher configured timeoutSeconds except for long polling", () => {
|
|
expect(resolveTelegramRequestTimeoutMs("sendmessage", 90)).toBe(90_000);
|
|
expect(resolveTelegramRequestTimeoutMs("sendchataction", 90)).toBe(90_000);
|
|
expect(resolveTelegramRequestTimeoutMs("editmessagetext", 90)).toBe(90_000);
|
|
expect(resolveTelegramRequestTimeoutMs("getupdates", 90)).toBe(45_000);
|
|
});
|
|
|
|
it("caps oversized configured timeoutSeconds before outbound timers use them", () => {
|
|
expect(resolveTelegramRequestTimeoutMs("sendmessage", Number.MAX_SAFE_INTEGER)).toBe(
|
|
MAX_TIMER_TIMEOUT_MS,
|
|
);
|
|
expect(resolveTelegramRequestTimeoutMs("sendmessage", Number.MAX_VALUE)).toBe(
|
|
MAX_TIMER_TIMEOUT_MS,
|
|
);
|
|
});
|
|
|
|
it("does not let low timeoutSeconds shorten method guards", () => {
|
|
expect(resolveTelegramRequestTimeoutMs("sendmessage", 10)).toBe(60_000);
|
|
expect(resolveTelegramRequestTimeoutMs("getme", 10)).toBe(15_000);
|
|
});
|
|
|
|
it("does not assign hard timeouts to unrelated Telegram methods", () => {
|
|
expect(resolveTelegramRequestTimeoutMs("answercallbackquery")).toBeUndefined();
|
|
expect(resolveTelegramRequestTimeoutMs(null)).toBeUndefined();
|
|
});
|
|
});
|
|
|
|
describe("resolveTelegramLongPollTimeoutSeconds", () => {
|
|
it("uses Telegram's default long-poll duration when no client timeout is configured", () => {
|
|
expect(resolveTelegramLongPollTimeoutSeconds(undefined)).toBe(30);
|
|
});
|
|
|
|
it("keeps isolated long polling below the getUpdates request abort guard", () => {
|
|
expect(resolveTelegramLongPollTimeoutSeconds(90)).toBe(40);
|
|
});
|
|
|
|
it("honors lower configured long-poll durations", () => {
|
|
expect(resolveTelegramLongPollTimeoutSeconds(10)).toBe(10);
|
|
});
|
|
});
|
|
|
|
describe("resolveTelegramStartupProbeTimeoutMs", () => {
|
|
it("uses the getMe request guard by default", () => {
|
|
expect(resolveTelegramStartupProbeTimeoutMs(undefined)).toBe(15_000);
|
|
});
|
|
|
|
it("does not let low client timeoutSeconds shorten startup getMe", () => {
|
|
expect(resolveTelegramStartupProbeTimeoutMs(2)).toBe(15_000);
|
|
});
|
|
|
|
it("honors higher configured timeoutSeconds", () => {
|
|
expect(resolveTelegramStartupProbeTimeoutMs(60)).toBe(60_000);
|
|
});
|
|
|
|
it("caps oversized configured timeoutSeconds before startup probe timers use them", () => {
|
|
expect(resolveTelegramStartupProbeTimeoutMs(Number.MAX_SAFE_INTEGER)).toBe(
|
|
MAX_TIMER_TIMEOUT_MS,
|
|
);
|
|
expect(resolveTelegramStartupProbeTimeoutMs(Number.MAX_VALUE)).toBe(MAX_TIMER_TIMEOUT_MS);
|
|
});
|
|
});
|