mirror of https://github.com/openclaw/openclaw.git
test: expand install safe path coverage
This commit is contained in:
parent
6a545c04eb
commit
0f48556241
|
|
@ -2,7 +2,33 @@ import fs from "node:fs/promises";
|
|||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { assertCanonicalPathWithinBase, safePathSegmentHashed } from "./install-safe-path.js";
|
||||
import {
|
||||
assertCanonicalPathWithinBase,
|
||||
resolveSafeInstallDir,
|
||||
safeDirName,
|
||||
safePathSegmentHashed,
|
||||
unscopedPackageName,
|
||||
} from "./install-safe-path.js";
|
||||
|
||||
describe("unscopedPackageName", () => {
|
||||
it.each([
|
||||
{ value: "@openclaw/matrix", expected: "matrix" },
|
||||
{ value: " matrix ", expected: "matrix" },
|
||||
{ value: "", expected: "" },
|
||||
])("normalizes package names for %j", ({ value, expected }) => {
|
||||
expect(unscopedPackageName(value)).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe("safeDirName", () => {
|
||||
it.each([
|
||||
{ value: " matrix ", expected: "matrix" },
|
||||
{ value: "../matrix/plugin", expected: "..__matrix__plugin" },
|
||||
{ value: "dir\\plugin", expected: "dir__plugin" },
|
||||
])("normalizes install dir names for %j", ({ value, expected }) => {
|
||||
expect(safeDirName(value)).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe("safePathSegmentHashed", () => {
|
||||
it("keeps safe names unchanged", () => {
|
||||
|
|
@ -24,6 +50,34 @@ describe("safePathSegmentHashed", () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe("resolveSafeInstallDir", () => {
|
||||
it("resolves install dirs under the base directory", () => {
|
||||
expect(
|
||||
resolveSafeInstallDir({
|
||||
baseDir: "/tmp/plugins",
|
||||
id: "@openclaw/matrix",
|
||||
invalidNameMessage: "invalid plugin name",
|
||||
}),
|
||||
).toEqual({
|
||||
ok: true,
|
||||
path: path.join("/tmp/plugins", "@openclaw__matrix"),
|
||||
});
|
||||
});
|
||||
|
||||
it("rejects ids that resolve to the base directory itself", () => {
|
||||
expect(
|
||||
resolveSafeInstallDir({
|
||||
baseDir: "/tmp/plugins",
|
||||
id: " ",
|
||||
invalidNameMessage: "invalid plugin name",
|
||||
}),
|
||||
).toEqual({
|
||||
ok: false,
|
||||
error: "invalid plugin name",
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("assertCanonicalPathWithinBase", () => {
|
||||
it("accepts in-base directories", async () => {
|
||||
const baseDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-install-safe-"));
|
||||
|
|
|
|||
Loading…
Reference in New Issue