Skip to content
22 linesCodeBlameRaw
1import assert from "node:assert/strict";
2import { test } from "node:test";
3
4import { connectLink, parseDiscovery } from "./discovery.ts";
5
6test("a discovery document is read for its origins", () => {
7 assert.deepEqual(
8 parseDiscovery({ name: "g1t", site: "https://g1t.example.com/", api: "http://10.0.0.5:8789/x", mcp: "https://g1t.example.com/mcp/", hosted: false, phone: { chat: true, push: false } }),
9 { name: "g1t", site: "https://g1t.example.com", api: "http://10.0.0.5:8789", mcp: "https://g1t.example.com/mcp", hosted: false, phone: { chat: true, push: false } },
10 );
11});
12
13test("anything else is not one", () => {
14 assert.equal(parseDiscovery(null), null);
15 assert.equal(parseDiscovery({ site: "https://a.example", api: "https://b.example" }), null, "no name");
16 assert.equal(parseDiscovery({ name: "g1t", site: "javascript:alert(1)", api: "https://b.example" }), null);
17 assert.equal(parseDiscovery({ name: "g1t", site: "https://a.example" }), null, "no API");
18});
19
20test("a connect link carries the site", () => {
21 assert.equal(connectLink("https://g1t.example.com"), "g1t://connect?server=https%3A%2F%2Fg1t.example.com");
22});