import assert from "node:assert/strict" import { test } from "node:test" import { buildProbeInterfaces } from "./probe-interface-model.js" const iface = { ".id": "*1", name: "ether1", running: "true", disabled: "false" } test("only observed active enabled interfaces are eligible; unknown flags remain visible", () => { const result = buildProbeInterfaces([iface, { ...iface, ".id": "*2", name: "unknown", running: "" }, { ...iface, ".id": "*3", name: "down", running: "false" }, { ...iface, ".id": "*4", name: "disabled", disabled: "true" }]) assert.deepEqual(result.interfaces.map(row => row.name), ["ether1"]) assert.equal(result.unknownInterfaces[0].name, "unknown"); assert.equal(result.incomplete, true) assert.equal(result.forwardingVerified, false) }) test("known static/dynamic IPv4 address rows retain order, uniqueness and observed flags", () => { const result = buildProbeInterfaces([iface], [ { interface: "ether1", address: "192.0.2.2/24", dynamic: "true", disabled: "false", invalid: "false" }, { interface: "ether1", address: "192.0.2.1/24", dynamic: "false", disabled: "false", invalid: "false" }, { interface: "ether1", address: "192.0.2.3/24", disabled: "true" }, ]) assert.deepEqual(result.interfaces[0].addresses, ["192.0.2.1", "192.0.2.2"]) assert.equal(result.interfaces[0].addressStateVerified, true); assert.equal(result.incomplete, false) }) test("omitted address flags and invalid IPv4 are not confirmed address availability", () => { const result = buildProbeInterfaces([iface], [{ interface: "ether1", address: "192.0.2.1/24" }, { interface: "ether1", address: "192.0.2.2/24junk" }]) assert.deepEqual(result.interfaces[0].addresses, ["192.0.2.1"]) assert.equal(result.interfaces[0].invalidAddressRows, 1); assert.equal(result.interfaces[0].addressStateVerified, false); assert.equal(result.incomplete, true) }) test("known empty sources stay empty, malformed/duplicate identities are rejected", () => { assert.equal(buildProbeInterfaces([], []).incomplete, false) for (const payload of [{}, [null], [iface, iface], [iface, { ...iface, name: "ether2" }], [iface, { ...iface, ".id": "*2" }]]) assert.throws(() => buildProbeInterfaces(payload)) assert.throws(() => buildProbeInterfaces([iface], {})) })