openclaw/src/infra/network-interfaces.test.ts

48 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { makeNetworkInterfacesSnapshot } from "../test-helpers/network-interfaces.js";
import {
listExternalInterfaceAddresses,
pickMatchingExternalInterfaceAddress,
safeNetworkInterfaces,
} from "./network-interfaces.js";
describe("network-interfaces", () => {
it("returns undefined when interface discovery throws", () => {
expect(
safeNetworkInterfaces(() => {
throw new Error("uv_interface_addresses failed");
}),
).toBeUndefined();
});
it("lists trimmed non-internal external addresses only", () => {
const snapshot = makeNetworkInterfacesSnapshot({
lo0: [{ address: "127.0.0.1", family: "IPv4", internal: true }],
en0: [
{ address: " 192.168.1.42 ", family: "IPv4" },
{ address: "fd7a:115c:a1e0::1", family: "IPv6" },
{ address: " ", family: "IPv6" },
],
});
expect(listExternalInterfaceAddresses(snapshot)).toEqual([
{ name: "en0", address: "192.168.1.42", family: "IPv4" },
{ name: "en0", address: "fd7a:115c:a1e0::1", family: "IPv6" },
]);
});
it("prefers configured interface names before falling back", () => {
const snapshot = makeNetworkInterfacesSnapshot({
wlan0: [{ address: "172.16.0.99", family: "IPv4" }],
en0: [{ address: "192.168.1.42", family: "IPv4" }],
});
expect(
pickMatchingExternalInterfaceAddress(snapshot, {
family: "IPv4",
preferredNames: ["en0", "eth0"],
}),
).toBe("192.168.1.42");
});
});