mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-05 16:50:23 +00:00
refactor(gateway): share interface discovery helpers
This commit is contained in:
47
src/infra/network-interfaces.test.ts
Normal file
47
src/infra/network-interfaces.test.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
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");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user