Download extensions/bluebubbles/src/monitor-normalize.test.ts from Darochin/openskynet: direct link, hf CLI and curl.
- Browser
- Download file 2.78 kB
-
https://huggingface.co/Darochin/openskynet/resolve/main/extensions/bluebubbles/src/monitor-normalize.test.ts
- Command line
-
hf download hf://Darochin/openskynet/extensions/bluebubbles/src/monitor-normalize.test.ts
-
curl -L -o monitor-normalize.test.ts https://huggingface.co/Darochin/openskynet/resolve/main/extensions/bluebubbles/src/monitor-normalize.test.ts
2.78 kB
| import { describe, expect, it } from "vitest"; | |
| import { normalizeWebhookMessage, normalizeWebhookReaction } from "./monitor-normalize.js"; | |
| function createFallbackDmPayload(overrides: Record<string, unknown> = {}) { | |
| return { | |
| guid: "msg-1", | |
| isGroup: false, | |
| isFromMe: false, | |
| handle: null, | |
| chatGuid: "iMessage;-;+15551234567", | |
| ...overrides, | |
| }; | |
| } | |
| describe("normalizeWebhookMessage", () => { | |
| it("falls back to DM chatGuid handle when sender handle is missing", () => { | |
| const result = normalizeWebhookMessage({ | |
| type: "new-message", | |
| data: createFallbackDmPayload({ | |
| text: "hello", | |
| }), | |
| }); | |
| expect(result).not.toBeNull(); | |
| expect(result?.senderId).toBe("+15551234567"); | |
| expect(result?.senderIdExplicit).toBe(false); | |
| expect(result?.chatGuid).toBe("iMessage;-;+15551234567"); | |
| }); | |
| it("marks explicit sender handles as explicit identity", () => { | |
| const result = normalizeWebhookMessage({ | |
| type: "new-message", | |
| data: { | |
| guid: "msg-explicit-1", | |
| text: "hello", | |
| isGroup: false, | |
| isFromMe: true, | |
| handle: { address: "+15551234567" }, | |
| chatGuid: "iMessage;-;+15551234567", | |
| }, | |
| }); | |
| expect(result).not.toBeNull(); | |
| expect(result?.senderId).toBe("+15551234567"); | |
| expect(result?.senderIdExplicit).toBe(true); | |
| }); | |
| it("does not infer sender from group chatGuid when sender handle is missing", () => { | |
| const result = normalizeWebhookMessage({ | |
| type: "new-message", | |
| data: { | |
| guid: "msg-1", | |
| text: "hello group", | |
| isGroup: true, | |
| isFromMe: false, | |
| handle: null, | |
| chatGuid: "iMessage;+;chat123456", | |
| }, | |
| }); | |
| expect(result).toBeNull(); | |
| }); | |
| it("accepts array-wrapped payload data", () => { | |
| const result = normalizeWebhookMessage({ | |
| type: "new-message", | |
| data: [ | |
| { | |
| guid: "msg-1", | |
| text: "hello", | |
| handle: { address: "+15551234567" }, | |
| isGroup: false, | |
| isFromMe: false, | |
| }, | |
| ], | |
| }); | |
| expect(result).not.toBeNull(); | |
| expect(result?.senderId).toBe("+15551234567"); | |
| }); | |
| }); | |
| describe("normalizeWebhookReaction", () => { | |
| it("falls back to DM chatGuid handle when reaction sender handle is missing", () => { | |
| const result = normalizeWebhookReaction({ | |
| type: "updated-message", | |
| data: createFallbackDmPayload({ | |
| guid: "msg-2", | |
| associatedMessageGuid: "p:0/msg-1", | |
| associatedMessageType: 2000, | |
| }), | |
| }); | |
| expect(result).not.toBeNull(); | |
| expect(result?.senderId).toBe("+15551234567"); | |
| expect(result?.senderIdExplicit).toBe(false); | |
| expect(result?.messageId).toBe("p:0/msg-1"); | |
| expect(result?.action).toBe("added"); | |
| }); | |
| }); | |