mirror of https://github.com/openclaw/openclaw.git
test: tighten numeric parsing and path safety coverage
This commit is contained in:
parent
cf43951abc
commit
4a6020c574
|
|
@ -11,11 +11,13 @@ describe("parseFiniteNumber", () => {
|
|||
{ value: 42, expected: 42 },
|
||||
{ value: "3.14", expected: 3.14 },
|
||||
{ value: " 3.14ms", expected: 3.14 },
|
||||
{ value: "+7", expected: 7 },
|
||||
{ value: "1e3", expected: 1000 },
|
||||
])("parses %j", ({ value, expected }) => {
|
||||
expect(parseFiniteNumber(value)).toBe(expected);
|
||||
});
|
||||
|
||||
it.each([Number.NaN, Number.POSITIVE_INFINITY, "not-a-number", " ", null])(
|
||||
it.each([Number.NaN, Number.POSITIVE_INFINITY, "not-a-number", " ", "", null])(
|
||||
"returns undefined for %j",
|
||||
(value) => {
|
||||
expect(parseFiniteNumber(value)).toBeUndefined();
|
||||
|
|
@ -28,13 +30,17 @@ describe("parseStrictInteger", () => {
|
|||
{ value: "42", expected: 42 },
|
||||
{ value: " -7 ", expected: -7 },
|
||||
{ value: 12, expected: 12 },
|
||||
{ value: "+9", expected: 9 },
|
||||
])("parses %j", ({ value, expected }) => {
|
||||
expect(parseStrictInteger(value)).toBe(expected);
|
||||
});
|
||||
|
||||
it.each(["42ms", "0abc", "1.5", " ", Number.MAX_SAFE_INTEGER + 1])("rejects %j", (value) => {
|
||||
it.each(["42ms", "0abc", "1.5", "1e3", " ", Number.MAX_SAFE_INTEGER + 1])(
|
||||
"rejects %j",
|
||||
(value) => {
|
||||
expect(parseStrictInteger(value)).toBeUndefined();
|
||||
});
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
describe("parseStrictPositiveInteger", () => {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ describe("path-safety", () => {
|
|||
it.each([
|
||||
{ rootDir: "/tmp/demo", expected: `${path.resolve("/tmp/demo")}${path.sep}` },
|
||||
{ rootDir: `/tmp/demo${path.sep}`, expected: `${path.resolve("/tmp/demo")}${path.sep}` },
|
||||
{ rootDir: "/tmp/demo/..", expected: `${path.resolve("/tmp")}${path.sep}` },
|
||||
])("resolves safe base dir for %j", ({ rootDir, expected }) => {
|
||||
expect(resolveSafeBaseDir(rootDir)).toBe(expected);
|
||||
});
|
||||
|
|
@ -13,8 +14,11 @@ describe("path-safety", () => {
|
|||
it.each([
|
||||
{ rootDir: "/tmp/demo", targetPath: "/tmp/demo", expected: true },
|
||||
{ rootDir: "/tmp/demo", targetPath: "/tmp/demo/sub/file.txt", expected: true },
|
||||
{ rootDir: "/tmp/demo", targetPath: "/tmp/demo/./nested/../file.txt", expected: true },
|
||||
{ rootDir: "/tmp/demo", targetPath: "/tmp/demo-two/../demo/file.txt", expected: true },
|
||||
{ rootDir: "/tmp/demo", targetPath: "/tmp/demo/../escape.txt", expected: false },
|
||||
{ rootDir: "/tmp/demo", targetPath: "/tmp/demo-sibling/file.txt", expected: false },
|
||||
{ rootDir: "/tmp/demo", targetPath: "/tmp/demo/../../escape.txt", expected: false },
|
||||
{ rootDir: "/tmp/demo", targetPath: "sub/file.txt", expected: false },
|
||||
])("checks containment for %j", ({ rootDir, targetPath, expected }) => {
|
||||
expect(isWithinDir(rootDir, targetPath)).toBe(expected);
|
||||
|
|
|
|||
Loading…
Reference in New Issue