mirror of https://github.com/openclaw/openclaw.git
48 lines
1.5 KiB
TypeScript
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");
|
|
});
|
|
});
|