67 lines
1.7 KiB
TypeScript
67 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import type { MsgContext } from "../../auto-reply/templating.js";
|
|
import { normalizeExplicitSessionKey } from "./explicit-session-key-normalization.js";
|
|
|
|
function makeCtx(overrides: Partial<MsgContext>): MsgContext {
|
|
return {
|
|
Body: "",
|
|
From: "",
|
|
To: "",
|
|
...overrides,
|
|
} as MsgContext;
|
|
}
|
|
|
|
describe("normalizeExplicitSessionKey", () => {
|
|
it("dispatches discord keys through the provider normalizer", () => {
|
|
expect(
|
|
normalizeExplicitSessionKey(
|
|
"agent:fina:discord:channel:123456",
|
|
makeCtx({
|
|
Surface: "discord",
|
|
ChatType: "direct",
|
|
From: "discord:123456",
|
|
SenderId: "123456",
|
|
}),
|
|
),
|
|
).toBe("agent:fina:discord:direct:123456");
|
|
});
|
|
|
|
it("infers the provider from From when explicit provider fields are absent", () => {
|
|
expect(
|
|
normalizeExplicitSessionKey(
|
|
"discord:dm:123456",
|
|
makeCtx({
|
|
ChatType: "direct",
|
|
From: "discord:123456",
|
|
SenderId: "123456",
|
|
}),
|
|
),
|
|
).toBe("discord:direct:123456");
|
|
});
|
|
|
|
it("uses Provider when Surface is absent", () => {
|
|
expect(
|
|
normalizeExplicitSessionKey(
|
|
"agent:fina:discord:dm:123456",
|
|
makeCtx({
|
|
Provider: "Discord",
|
|
ChatType: "direct",
|
|
SenderId: "123456",
|
|
}),
|
|
),
|
|
).toBe("agent:fina:discord:direct:123456");
|
|
});
|
|
|
|
it("lowercases and passes through unknown providers unchanged", () => {
|
|
expect(
|
|
normalizeExplicitSessionKey(
|
|
"Agent:Fina:Slack:DM:ABC",
|
|
makeCtx({
|
|
Surface: "slack",
|
|
From: "slack:U123",
|
|
}),
|
|
),
|
|
).toBe("agent:fina:slack:dm:abc");
|
|
});
|
|
});
|