test: cover bound channel delivery and persistedLastTo fallback

Add regression tests for inter-session reply delivery:
- Test delivery to bound external channel when persistedLastTo is set
- Test fallback to originatingToRaw when persistedLastTo is undefined
- Regression test: ensure messages are not silently dropped

Fixes #34308
Ref: #43703 (Greptile review feedback)
This commit is contained in:
hope 2026-03-13 09:55:14 +08:00
parent 17243b9cb7
commit 9da7988efc

View File

@ -1,6 +1,63 @@
import { describe, expect, it } from "vitest";
import { resolveLastChannelRaw, resolveLastToRaw } from "./session-delivery.js";
describe("session delivery bound channel routing", () => {
it("delivers to bound external channel when persistedLastTo is set", () => {
// Session has deliveryContext bound to Telegram channel
const sessionKey = "agent:main:telegram:default:channel:C123456";
expect(
resolveLastChannelRaw({
originatingChannelRaw: "INTERNAL_MESSAGE_CHANNEL",
persistedLastChannel: "telegram",
sessionKey,
}),
).toBe("telegram");
expect(
resolveLastToRaw({
originatingChannelRaw: "INTERNAL_MESSAGE_CHANNEL",
originatingToRaw: "session:inter-session-123",
persistedLastChannel: "telegram",
persistedLastTo: "C123456",
sessionKey,
}),
).toBe("C123456");
});
it("falls back to originatingToRaw when persistedLastTo is not set", () => {
// Session bound to external channel but lastTo not yet persisted
const sessionKey = "agent:main:telegram:default:channel:C123456";
expect(
resolveLastToRaw({
originatingChannelRaw: "INTERNAL_MESSAGE_CHANNEL",
originatingToRaw: "session:inter-session-123",
persistedLastChannel: "telegram",
persistedLastTo: undefined,
sessionKey,
}),
).toBe("session:inter-session-123");
});
it("does not drop delivery when persistedLastTo is falsy", () => {
// Regression test: ensure we don't silently drop messages
const sessionKey = "agent:main:telegram:default:channel:C123456";
const result = resolveLastToRaw({
originatingChannelRaw: "INTERNAL_MESSAGE_CHANNEL",
originatingToRaw: "session:inter-session-123",
persistedLastChannel: "telegram",
persistedLastTo: undefined,
sessionKey,
});
// Should NOT return undefined (which would drop the message)
expect(result).not.toBeUndefined();
expect(result).toBe("session:inter-session-123");
});
});
describe("session delivery direct-session routing overrides", () => {
it.each([
"agent:main:direct:user-1",