openclaw/src/gateway/server-discovery.test.ts

46 lines
1.5 KiB
TypeScript
Raw Normal View History

2026-01-25 02:49:16 +00:00
import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
const getTailnetHostname = vi.hoisted(() => vi.fn());
vi.mock("../infra/tailscale.js", () => ({ getTailnetHostname }));
import { resolveTailnetDnsHint } from "./server-discovery.js";
describe("resolveTailnetDnsHint", () => {
const prevTailnetDns = { value: undefined as string | undefined };
beforeEach(() => {
2026-01-30 03:15:10 +01:00
prevTailnetDns.value = process.env.OPENCLAW_TAILNET_DNS;
delete process.env.OPENCLAW_TAILNET_DNS;
2026-01-25 02:49:16 +00:00
getTailnetHostname.mockReset();
});
afterEach(() => {
if (prevTailnetDns.value === undefined) {
2026-01-30 03:15:10 +01:00
delete process.env.OPENCLAW_TAILNET_DNS;
2026-01-25 02:49:16 +00:00
} else {
2026-01-30 03:15:10 +01:00
process.env.OPENCLAW_TAILNET_DNS = prevTailnetDns.value;
2026-01-25 02:49:16 +00:00
}
});
test("returns env hint when disabled", async () => {
2026-01-30 03:15:10 +01:00
process.env.OPENCLAW_TAILNET_DNS = "studio.tailnet.ts.net.";
2026-01-25 02:49:16 +00:00
const value = await resolveTailnetDnsHint({ enabled: false });
expect(value).toBe("studio.tailnet.ts.net");
expect(getTailnetHostname).not.toHaveBeenCalled();
});
test("skips tailscale lookup when disabled", async () => {
const value = await resolveTailnetDnsHint({ enabled: false });
expect(value).toBeUndefined();
expect(getTailnetHostname).not.toHaveBeenCalled();
});
test("uses tailscale lookup when enabled", async () => {
getTailnetHostname.mockResolvedValue("host.tailnet.ts.net");
const value = await resolveTailnetDnsHint({ enabled: true });
expect(value).toBe("host.tailnet.ts.net");
expect(getTailnetHostname).toHaveBeenCalledTimes(1);
});
});