Files

35 lines
1.1 KiB
JavaScript

const test = require("node:test");
const assert = require("node:assert/strict");
const { parseTdToolboxImport } = require("../electron/lib/deeplink");
const validUrl =
"tdtoolbox://v1/import?resource=provider&app=codex&name=Sub2API&endpoint=https%3A%2F%2Fapi.example.com&apiKey=sk-test&model=gpt-5.5&source=sub2api&sourceGroupId=42";
test("parses a valid Sub2API provider deep link", () => {
const result = parseTdToolboxImport(validUrl);
assert.equal(result.ok, true);
assert.deepEqual(result.input, {
resource: "provider",
app: "codex",
name: "Sub2API",
endpoint: "https://api.example.com",
apiKey: "sk-test",
model: "gpt-5.5",
source: "sub2api",
sourceGroupId: "42",
});
});
test("rejects unsupported schemes, endpoints, and sources", () => {
for (const url of [
"ccswitch://v1/import?resource=provider",
validUrl.replace("endpoint=https%3A%2F%2Fapi.example.com", "endpoint=ftp%3A%2F%2Fapi.example.com"),
validUrl.replace("source=sub2api", "source=unknown"),
]) {
const result = parseTdToolboxImport(url);
assert.equal(result.ok, false);
assert.ok(result.error);
}
});