import { assertEquals } from "@std/assert"; import type { NbEvent } from "../netbird/types.ts"; import { processEnrollmentEvents } from "./poller.ts"; /** Helper: build an NbEvent with sensible defaults, overridable per-field. */ function makeEvent(overrides: Partial = {}): NbEvent { return { id: 1, timestamp: "2025-06-01T12:00:00Z", activity: "peer setup key added", activity_code: "peer.setupkey.add", initiator_id: "init-1", initiator_name: "admin", target_id: "peer-1", meta: { setup_key: "drone-key", name: "drone-01" }, ...overrides, }; } Deno.test("processEnrollmentEvents detects peer.setupkey.add", () => { const events: NbEvent[] = [ makeEvent(), // enrollment — should match makeEvent({ id: 2, activity_code: "peer.login", target_id: "peer-2", }), // not an enrollment makeEvent({ id: 3, activity_code: "group.add", target_id: "group-1", }), // unrelated event ]; const known = new Set(["drone-key"]); const result = processEnrollmentEvents(events, known, null); assertEquals(result.length, 1); assertEquals(result[0].setupKeyName, "drone-key"); assertEquals(result[0].peerId, "peer-1"); assertEquals(result[0].peerHostname, "drone-01"); assertEquals(result[0].timestamp, "2025-06-01T12:00:00Z"); }); Deno.test("processEnrollmentEvents filters by lastTimestamp", () => { const events: NbEvent[] = [ makeEvent({ id: 1, timestamp: "2025-06-01T10:00:00Z", target_id: "p1" }), makeEvent({ id: 2, timestamp: "2025-06-01T12:00:00Z", target_id: "p2" }), makeEvent({ id: 3, timestamp: "2025-06-01T14:00:00Z", target_id: "p3" }), ]; const known = new Set(["drone-key"]); // Only events strictly after the watermark should pass. const result = processEnrollmentEvents( events, known, "2025-06-01T12:00:00Z", ); assertEquals(result.length, 1); assertEquals(result[0].peerId, "p3"); assertEquals(result[0].timestamp, "2025-06-01T14:00:00Z"); }); Deno.test("processEnrollmentEvents ignores unknown keys", () => { const events: NbEvent[] = [ makeEvent({ meta: { setup_key: "rogue-key", name: "rogue-host" }, target_id: "peer-x", }), ]; const known = new Set(["drone-key", "gcs-key"]); const result = processEnrollmentEvents(events, known, null); assertEquals(result.length, 0); });