mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-14 11:30:41 +00:00
56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { buildViewerUrl, normalizeViewerBaseUrl } from "./url.js";
|
|
|
|
describe("diffs viewer URL helpers", () => {
|
|
it("defaults to loopback for lan/tailnet bind modes", () => {
|
|
expect(
|
|
buildViewerUrl({
|
|
config: { gateway: { bind: "lan", port: 18789 } },
|
|
viewerPath: "/plugins/diffs/view/id/token",
|
|
}),
|
|
).toBe("http://127.0.0.1:18789/plugins/diffs/view/id/token");
|
|
|
|
expect(
|
|
buildViewerUrl({
|
|
config: { gateway: { bind: "tailnet", port: 24444 } },
|
|
viewerPath: "/plugins/diffs/view/id/token",
|
|
}),
|
|
).toBe("http://127.0.0.1:24444/plugins/diffs/view/id/token");
|
|
});
|
|
|
|
it("uses custom bind host when provided", () => {
|
|
expect(
|
|
buildViewerUrl({
|
|
config: {
|
|
gateway: {
|
|
bind: "custom",
|
|
customBindHost: "gateway.example.com",
|
|
port: 443,
|
|
tls: { enabled: true },
|
|
},
|
|
},
|
|
viewerPath: "/plugins/diffs/view/id/token",
|
|
}),
|
|
).toBe("https://gateway.example.com/plugins/diffs/view/id/token");
|
|
});
|
|
|
|
it("joins viewer path under baseUrl pathname", () => {
|
|
expect(
|
|
buildViewerUrl({
|
|
config: {},
|
|
baseUrl: "https://example.com/openclaw",
|
|
viewerPath: "/plugins/diffs/view/id/token",
|
|
}),
|
|
).toBe("https://example.com/openclaw/plugins/diffs/view/id/token");
|
|
});
|
|
|
|
it("rejects base URLs with query/hash", () => {
|
|
expect(() => normalizeViewerBaseUrl("https://example.com?a=1")).toThrow(
|
|
"baseUrl must not include query/hash",
|
|
);
|
|
expect(() => normalizeViewerBaseUrl("https://example.com#frag")).toThrow(
|
|
"baseUrl must not include query/hash",
|
|
);
|
|
});
|
|
});
|