openclaw/src/auto-reply/reply/session-delivery.test.ts
Vincent Koc 9fed9f1302
fix(session): tighten direct-session webchat routing matching (#37867)
* fix(session): require strict direct key routing shapes

* test(session): cover direct route poisoning cases
2026-03-06 08:53:16 -05:00

57 lines
1.8 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { resolveLastChannelRaw, resolveLastToRaw } from "./session-delivery.js";
describe("session delivery direct-session routing overrides", () => {
it.each([
"agent:main:direct:user-1",
"agent:main:telegram:direct:123456",
"agent:main:telegram:account-a:direct:123456",
"agent:main:telegram:dm:123456",
"agent:main:telegram:direct:123456:thread:99",
"agent:main:telegram:account-a:direct:123456:topic:ops",
])("lets webchat override persisted routes for strict direct key %s", (sessionKey) => {
expect(
resolveLastChannelRaw({
originatingChannelRaw: "webchat",
persistedLastChannel: "telegram",
sessionKey,
}),
).toBe("webchat");
expect(
resolveLastToRaw({
originatingChannelRaw: "webchat",
originatingToRaw: "session:dashboard",
persistedLastChannel: "telegram",
persistedLastTo: "123456",
sessionKey,
}),
).toBe("session:dashboard");
});
it.each([
"agent:main:main:direct",
"agent:main:cron:job-1:dm",
"agent:main:subagent:worker:direct:user-1",
"agent:main:telegram:channel:direct",
"agent:main:telegram:account-a:direct",
"agent:main:telegram:direct:123456:cron:job-1",
])("keeps persisted external routes for malformed direct-like key %s", (sessionKey) => {
expect(
resolveLastChannelRaw({
originatingChannelRaw: "webchat",
persistedLastChannel: "telegram",
sessionKey,
}),
).toBe("telegram");
expect(
resolveLastToRaw({
originatingChannelRaw: "webchat",
originatingToRaw: "session:dashboard",
persistedLastChannel: "telegram",
persistedLastTo: "group:12345",
sessionKey,
}),
).toBe("group:12345");
});
});