Files
tutti/tools/scripts/openapi-fragments.test.mjs
T
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

67 lines
1.8 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import {
normalizeOpenApiFragmentRefs,
resolveOpenApiFragmentPath
} from "./openapi-fragments.mjs";
const extensionKey = "x-tutti-openapi-fragments";
test("normalizes repository and package fragment references", () => {
assert.deepEqual(
normalizeOpenApiFragmentRefs(
[
"packages/workspace/issue-manager/openapi/issue-manager.v1.yaml",
{
package: "@tutti-os/connector-contracts",
path: "openapi/connector-market.v1.yaml"
}
],
extensionKey
),
[
"packages/workspace/issue-manager/openapi/issue-manager.v1.yaml",
{
package: "@tutti-os/connector-contracts",
path: "openapi/connector-market.v1.yaml"
}
]
);
});
test("resolves package fragments through package exports", () => {
const resolved = resolveOpenApiFragmentPath(
{
package: "@tutti-os/connector-contracts",
path: "openapi/connector-market.v1.yaml"
},
{
repoRoot: "/repo",
specPath: "/repo/services/daemon/openapi.yaml",
resolvePackageSpecifier(specifier) {
assert.equal(
specifier,
"@tutti-os/connector-contracts/openapi/connector-market.v1.yaml"
);
return "/node_modules/@tutti-os/connector-contracts/openapi/connector-market.v1.yaml";
}
}
);
assert.equal(
resolved,
"/node_modules/@tutti-os/connector-contracts/openapi/connector-market.v1.yaml"
);
});
test("rejects package paths that escape the package export boundary", () => {
assert.throws(
() =>
normalizeOpenApiFragmentRefs(
[{ package: "@tutti-os/connector-contracts", path: "../private.yaml" }],
extensionKey
),
/package-relative/
);
});