Spaces:
Paused
Paused
| import { describe, expect, it } from "vitest"; | |
| import { | |
| getConfigValueAtPath, | |
| parseConfigPath, | |
| setConfigValueAtPath, | |
| unsetConfigValueAtPath, | |
| } from "./config-paths.js"; | |
| describe("config paths", () => { | |
| it("rejects empty and blocked paths", () => { | |
| expect(parseConfigPath("")).toEqual({ | |
| ok: false, | |
| error: "Invalid path. Use dot notation (e.g. foo.bar).", | |
| }); | |
| expect(parseConfigPath("__proto__.polluted").ok).toBe(false); | |
| expect(parseConfigPath("constructor.polluted").ok).toBe(false); | |
| expect(parseConfigPath("prototype.polluted").ok).toBe(false); | |
| }); | |
| it("sets, gets, and unsets nested values", () => { | |
| const root: Record<string, unknown> = {}; | |
| const parsed = parseConfigPath("foo.bar"); | |
| if (!parsed.ok || !parsed.path) { | |
| throw new Error("path parse failed"); | |
| } | |
| setConfigValueAtPath(root, parsed.path, 123); | |
| expect(getConfigValueAtPath(root, parsed.path)).toBe(123); | |
| expect(unsetConfigValueAtPath(root, parsed.path)).toBe(true); | |
| expect(getConfigValueAtPath(root, parsed.path)).toBeUndefined(); | |
| }); | |
| }); | |