35 lines
1.1 KiB
JavaScript
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);
|
|
}
|
|
});
|