openclaw/src/agents/skills/frontmatter.test.ts
2026-03-01 23:45:41 +00:00

68 lines
2.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { resolveOpenClawMetadata, resolveSkillInvocationPolicy } from "./frontmatter.js";
describe("resolveSkillInvocationPolicy", () => {
it("defaults to enabled behaviors", () => {
const policy = resolveSkillInvocationPolicy({});
expect(policy.userInvocable).toBe(true);
expect(policy.disableModelInvocation).toBe(false);
});
it("parses frontmatter boolean strings", () => {
const policy = resolveSkillInvocationPolicy({
"user-invocable": "no",
"disable-model-invocation": "yes",
});
expect(policy.userInvocable).toBe(false);
expect(policy.disableModelInvocation).toBe(true);
});
});
describe("resolveOpenClawMetadata install validation", () => {
function resolveInstall(frontmatter: Record<string, string>) {
return resolveOpenClawMetadata(frontmatter)?.install;
}
it("accepts safe install specs", () => {
const install = resolveInstall({
metadata:
'{"openclaw":{"install":[{"kind":"brew","formula":"python@3.12"},{"kind":"node","package":"@scope/pkg@1.2.3"},{"kind":"go","module":"example.com/tool/cmd@v1.2.3"},{"kind":"uv","package":"uvicorn[standard]==0.31.0"},{"kind":"download","url":"https://example.com/tool.tar.gz"}]}}',
});
expect(install).toEqual([
{ kind: "brew", formula: "python@3.12" },
{ kind: "node", package: "@scope/pkg@1.2.3" },
{ kind: "go", module: "example.com/tool/cmd@v1.2.3" },
{ kind: "uv", package: "uvicorn[standard]==0.31.0" },
{ kind: "download", url: "https://example.com/tool.tar.gz" },
]);
});
it("drops unsafe brew formula values", () => {
const install = resolveInstall({
metadata: '{"openclaw":{"install":[{"kind":"brew","formula":"wget --HEAD"}]}}',
});
expect(install).toBeUndefined();
});
it("drops unsafe npm package specs for node installers", () => {
const install = resolveInstall({
metadata: '{"openclaw":{"install":[{"kind":"node","package":"file:../malicious"}]}}',
});
expect(install).toBeUndefined();
});
it("drops unsafe go module specs", () => {
const install = resolveInstall({
metadata: '{"openclaw":{"install":[{"kind":"go","module":"https://evil.example/mod"}]}}',
});
expect(install).toBeUndefined();
});
it("drops unsafe download urls", () => {
const install = resolveInstall({
metadata: '{"openclaw":{"install":[{"kind":"download","url":"file:///tmp/payload.tgz"}]}}',
});
expect(install).toBeUndefined();
});
});