import { describe, expect, it, vi } from "vitest"; import { logGatewayStartup } from "./server-startup-log.js"; describe("gateway startup log", () => { it("warns when dangerous config flags are enabled", () => { const info = vi.fn(); const warn = vi.fn(); logGatewayStartup({ cfg: { gateway: { controlUi: { dangerouslyDisableDeviceAuth: true, }, }, }, bindHost: "127.0.0.1", port: 18789, log: { info, warn }, isNixMode: false, }); expect(warn).toHaveBeenCalledTimes(1); expect(warn).toHaveBeenCalledWith(expect.stringContaining("dangerous config flags enabled")); expect(warn).toHaveBeenCalledWith( expect.stringContaining("gateway.controlUi.dangerouslyDisableDeviceAuth=true"), ); expect(warn).toHaveBeenCalledWith(expect.stringContaining("openclaw security audit")); }); it("does not warn when dangerous config flags are disabled", () => { const info = vi.fn(); const warn = vi.fn(); logGatewayStartup({ cfg: {}, bindHost: "127.0.0.1", port: 18789, log: { info, warn }, isNixMode: false, }); expect(warn).not.toHaveBeenCalled(); }); it("logs all listen endpoints on a single line", () => { const info = vi.fn(); const warn = vi.fn(); logGatewayStartup({ cfg: {}, bindHost: "127.0.0.1", bindHosts: ["127.0.0.1", "::1"], port: 18789, log: { info, warn }, isNixMode: false, }); const listenMessages = info.mock.calls .map((call) => call[0]) .filter((message) => message.startsWith("listening on ")); expect(listenMessages).toEqual([ `listening on ws://127.0.0.1:18789, ws://[::1]:18789 (PID ${process.pid})`, ]); }); });