diff --git a/src/shared/net/ip.ts b/src/shared/net/ip.ts index c386c687898..57c8cccd697 100644 --- a/src/shared/net/ip.ts +++ b/src/shared/net/ip.ts @@ -128,12 +128,16 @@ function normalizeIpv4MappedAddress(address: ParsedIpAddress): ParsedIpAddress { return address.toIPv4Address(); } -export function parseCanonicalIpAddress(raw: string | undefined): ParsedIpAddress | undefined { +function normalizeIpParseInput(raw: string | undefined): string | undefined { const trimmed = raw?.trim(); if (!trimmed) { return undefined; } - const normalized = stripIpv6Brackets(trimmed); + return stripIpv6Brackets(trimmed); +} + +export function parseCanonicalIpAddress(raw: string | undefined): ParsedIpAddress | undefined { + const normalized = normalizeIpParseInput(raw); if (!normalized) { return undefined; } @@ -150,11 +154,7 @@ export function parseCanonicalIpAddress(raw: string | undefined): ParsedIpAddres } export function parseLooseIpAddress(raw: string | undefined): ParsedIpAddress | undefined { - const trimmed = raw?.trim(); - if (!trimmed) { - return undefined; - } - const normalized = stripIpv6Brackets(trimmed); + const normalized = normalizeIpParseInput(raw); if (!normalized) { return undefined; } diff --git a/src/slack/monitor/message-handler.test.ts b/src/slack/monitor/message-handler.test.ts index 8453b9ce4b0..1417ca3e6ec 100644 --- a/src/slack/monitor/message-handler.test.ts +++ b/src/slack/monitor/message-handler.test.ts @@ -48,6 +48,20 @@ function createHandlerWithTracker(overrides?: { return { handler, trackEvent }; } +async function handleDirectMessage( + handler: ReturnType["handler"], +) { + await handler( + { + type: "message", + channel: "D1", + ts: "123.456", + text: "hello", + } as never, + { source: "message" }, + ); +} + describe("createSlackMessageHandler", () => { beforeEach(() => { enqueueMock.mockClear(); @@ -82,15 +96,7 @@ describe("createSlackMessageHandler", () => { it("does not track duplicate messages that are already seen", async () => { const { handler, trackEvent } = createHandlerWithTracker({ markMessageSeen: () => true }); - await handler( - { - type: "message", - channel: "D1", - ts: "123.456", - text: "hello", - } as never, - { source: "message" }, - ); + await handleDirectMessage(handler); expect(trackEvent).not.toHaveBeenCalled(); expect(resolveThreadTsMock).not.toHaveBeenCalled(); @@ -100,15 +106,7 @@ describe("createSlackMessageHandler", () => { it("tracks accepted non-duplicate messages", async () => { const { handler, trackEvent } = createHandlerWithTracker(); - await handler( - { - type: "message", - channel: "D1", - ts: "123.456", - text: "hello", - } as never, - { source: "message" }, - ); + await handleDirectMessage(handler); expect(trackEvent).toHaveBeenCalledTimes(1); expect(resolveThreadTsMock).toHaveBeenCalledTimes(1);