85 lines · 2.7 KB · TypeScript
RawDownload
import { describe, expect, it } from "vitest"; import { appendTokenFromPageUrl, resolveWsUrl } from "./wsTransport"; describe("resolveWsUrl", () => {  it("prefers explicit url when provided", () => {    const resolved = resolveWsUrl({      explicitUrl: "ws://explicit.example:3773/socket",      bridgeUrl: "ws://bridge.example:3773",      envUrl: "ws://env.example:3773",      pageUrl: "http://device.local:3773/?token=abc",      pageProtocol: "http:",      pageHostname: "device.local",      pagePort: "3773",    });     expect(resolved).toBe("ws://explicit.example:3773/socket");  });   it("prefers desktop bridge url over env url", () => {    const resolved = resolveWsUrl({      bridgeUrl: "ws://bridge.example:3773",      envUrl: "ws://env.example:3773",      pageUrl: "http://device.local:3773/",      pageProtocol: "http:",      pageHostname: "device.local",      pagePort: "3773",    });     expect(resolved).toBe("ws://bridge.example:3773");  });   it("falls back to env url when bridge url is missing", () => {    const resolved = resolveWsUrl({      envUrl: "ws://env.example:3773/path",      pageUrl: "http://device.local:3773/",      pageProtocol: "http:",      pageHostname: "device.local",      pagePort: "3773",    });     expect(resolved).toBe("ws://env.example:3773/path");  });   it("derives wss url from https page when no explicit, bridge, or env url exists", () => {    const resolved = resolveWsUrl({      pageUrl: "https://tailnet-host.ts.net/",      pageProtocol: "https:",      pageHostname: "tailnet-host.ts.net",      pagePort: "",    });     expect(resolved).toBe("wss://tailnet-host.ts.net");  });   it("adds token from page url when missing on websocket url", () => {    const resolved = resolveWsUrl({      envUrl: "ws://tailnet-host.ts.net:3773",      pageUrl: "http://tailnet-host.ts.net:3773/?token=super-secret",      pageProtocol: "http:",      pageHostname: "tailnet-host.ts.net",      pagePort: "3773",    });     expect(resolved).toBe("ws://tailnet-host.ts.net:3773/?token=super-secret");  });   it("does not overwrite existing websocket token", () => {    const resolved = resolveWsUrl({      envUrl: "ws://tailnet-host.ts.net:3773/?token=already-set",      pageUrl: "http://tailnet-host.ts.net:3773/?token=super-secret",      pageProtocol: "http:",      pageHostname: "tailnet-host.ts.net",      pagePort: "3773",    });     expect(resolved).toBe("ws://tailnet-host.ts.net:3773/?token=already-set");  });}); describe("appendTokenFromPageUrl", () => {  it("returns original url for invalid page urls", () => {    expect(appendTokenFromPageUrl("ws://localhost:3773", "not-a-url")).toBe("ws://localhost:3773");  });});