258 lines · 6.8 KB · TypeScript
RawDownload
import { describe, expect, it } from "vitest"; import {  resolveDesktopCoreAdvertisedEndpoints,  resolveDesktopServerExposure,  resolveLanAdvertisedHost,} from "./serverExposure.ts"; describe("resolveLanAdvertisedHost", () => {  it("prefers an explicit host override", () => {    expect(      resolveLanAdvertisedHost(        {          en0: [            {              address: "192.168.1.44",              family: "IPv4",              internal: false,              netmask: "255.255.255.0",              cidr: "192.168.1.44/24",              mac: "00:00:00:00:00:00",            },          ],        },        "10.0.0.9",      ),    ).toBe("10.0.0.9");  });   it("returns the first usable non-internal IPv4 address", () => {    expect(      resolveLanAdvertisedHost(        {          lo0: [            {              address: "127.0.0.1",              family: "IPv4",              internal: true,              netmask: "255.0.0.0",              cidr: "127.0.0.1/8",              mac: "00:00:00:00:00:00",            },          ],          en0: [            {              address: "192.168.1.44",              family: "IPv4",              internal: false,              netmask: "255.255.255.0",              cidr: "192.168.1.44/24",              mac: "00:00:00:00:00:00",            },          ],        },        undefined,      ),    ).toBe("192.168.1.44");  });   it("returns null when no usable network address is available", () => {    expect(      resolveLanAdvertisedHost(        {          lo0: [            {              address: "127.0.0.1",              family: "IPv4",              internal: true,              netmask: "255.0.0.0",              cidr: "127.0.0.1/8",              mac: "00:00:00:00:00:00",            },          ],        },        undefined,      ),    ).toBeNull();  });}); describe("resolveDesktopCoreAdvertisedEndpoints", () => {  it("advertises loopback and LAN endpoints without provider-specific assumptions", () => {    const exposure = resolveDesktopServerExposure({      mode: "network-accessible",      port: 3773,      networkInterfaces: {        en0: [          {            address: "192.168.1.44",            family: "IPv4",            internal: false,            netmask: "255.255.255.0",            cidr: "192.168.1.44/24",            mac: "00:00:00:00:00:00",          },        ],      },    });     expect(      resolveDesktopCoreAdvertisedEndpoints({        port: 3773,        exposure,        customHttpsEndpointUrls: [          "https://desktop.example.ts.net",          "http://desktop.example.test:3773",          "not-a-url",        ],      }),    ).toEqual([      {        id: "desktop-loopback:3773",        label: "This machine",        provider: {          id: "desktop-core",          label: "Desktop",          kind: "core",          isAddon: false,        },        httpBaseUrl: "http://127.0.0.1:3773/",        wsBaseUrl: "ws://127.0.0.1:3773/",        reachability: "loopback",        compatibility: {          hostedHttpsApp: "mixed-content-blocked",          desktopApp: "compatible",        },        source: "desktop-core",        status: "available",        description: "Loopback endpoint for this desktop app.",      },      {        id: "desktop-lan:http://192.168.1.44:3773",        label: "Local network",        provider: {          id: "desktop-core",          label: "Desktop",          kind: "core",          isAddon: false,        },        httpBaseUrl: "http://192.168.1.44:3773/",        wsBaseUrl: "ws://192.168.1.44:3773/",        reachability: "lan",        compatibility: {          hostedHttpsApp: "mixed-content-blocked",          desktopApp: "compatible",        },        source: "desktop-core",        status: "available",        isDefault: true,        description: "Reachable from devices on the same network.",      },      {        id: "manual:https://desktop.example.ts.net",        label: "Custom HTTPS",        provider: {          id: "manual",          label: "Manual",          kind: "manual",          isAddon: false,        },        httpBaseUrl: "https://desktop.example.ts.net/",        wsBaseUrl: "wss://desktop.example.ts.net/",        reachability: "public",        compatibility: {          hostedHttpsApp: "compatible",          desktopApp: "compatible",        },        source: "user",        status: "unknown",        description: "User-configured HTTPS endpoint for this desktop backend.",      },      {        id: "manual:http://desktop.example.test:3773",        label: "Custom endpoint",        provider: {          id: "manual",          label: "Manual",          kind: "manual",          isAddon: false,        },        httpBaseUrl: "http://desktop.example.test:3773/",        wsBaseUrl: "ws://desktop.example.test:3773/",        reachability: "public",        compatibility: {          hostedHttpsApp: "mixed-content-blocked",          desktopApp: "compatible",        },        source: "user",        status: "unknown",        description: "User-configured endpoint for this desktop backend.",      },    ]);  });}); describe("resolveDesktopServerExposure", () => {  it("keeps the desktop server loopback-only when local-only mode is selected", () => {    expect(      resolveDesktopServerExposure({        mode: "local-only",        port: 3773,        networkInterfaces: {},      }),    ).toEqual({      mode: "local-only",      bindHost: "127.0.0.1",      localHttpUrl: "http://127.0.0.1:3773",      localWsUrl: "ws://127.0.0.1:3773",      endpointUrl: null,      advertisedHost: null,    });  });   it("binds to all interfaces in network-accessible mode", () => {    expect(      resolveDesktopServerExposure({        mode: "network-accessible",        port: 3773,        networkInterfaces: {          en0: [            {              address: "192.168.1.44",              family: "IPv4",              internal: false,              netmask: "255.255.255.0",              cidr: "192.168.1.44/24",              mac: "00:00:00:00:00:00",            },          ],        },      }),    ).toEqual({      mode: "network-accessible",      bindHost: "0.0.0.0",      localHttpUrl: "http://127.0.0.1:3773",      localWsUrl: "ws://127.0.0.1:3773",      endpointUrl: "http://192.168.1.44:3773",      advertisedHost: "192.168.1.44",    });  });   it("stays network-accessible even when no LAN address is currently detectable", () => {    expect(      resolveDesktopServerExposure({        mode: "network-accessible",        port: 3773,        networkInterfaces: {},      }),    ).toEqual({      mode: "network-accessible",      bindHost: "0.0.0.0",      localHttpUrl: "http://127.0.0.1:3773",      localWsUrl: "ws://127.0.0.1:3773",      endpointUrl: null,      advertisedHost: null,    });  });});