diff --git a/extensions/msteams/src/monitor-handler/message-handler.authz.test.ts b/extensions/msteams/src/monitor-handler/message-handler.authz.test.ts index 58413f85aab..ab1983af015 100644 --- a/extensions/msteams/src/monitor-handler/message-handler.authz.test.ts +++ b/extensions/msteams/src/monitor-handler/message-handler.authz.test.ts @@ -39,10 +39,40 @@ const graphThreadMockState = vi.hoisted(() => ({ >(async () => []), })); -vi.mock("../graph-thread.js", async () => { - const actual = await vi.importActual("../graph-thread.js"); +vi.mock("../graph-thread.js", () => { + const stripHtmlFromTeamsMessage = (html: string) => + html + .replace(/]*>(.*?)<\/at>/gi, "@$1") + .replace(/<[^>]*>/g, " ") + .replace(/&/g, "&") + .replace(/</g, "<") + .replace(/>/g, ">") + .replace(/"/g, '"') + .replace(/'/g, "'") + .replace(/ /g, " ") + .replace(/\s+/g, " ") + .trim(); + const formatThreadContext = (messages: GraphThreadMessage[], currentMessageId?: string) => { + const lines: string[] = []; + for (const msg of messages) { + if (msg.id && msg.id === currentMessageId) { + continue; + } + const sender = msg.from?.user?.displayName ?? msg.from?.application?.displayName ?? "unknown"; + const rawContent = msg.body?.content ?? ""; + const content = + msg.body?.contentType === "html" + ? stripHtmlFromTeamsMessage(rawContent) + : rawContent.trim(); + if (content) { + lines.push(`${sender}: ${content}`); + } + } + return lines.join("\n"); + }; return { - ...actual, + stripHtmlFromTeamsMessage, + formatThreadContext, resolveTeamGroupId: graphThreadMockState.resolveTeamGroupId, fetchChannelMessage: graphThreadMockState.fetchChannelMessage, fetchThreadReplies: graphThreadMockState.fetchThreadReplies,