Files
homepage/src/utils/config/shvl.test.js
2026-02-04 19:58:39 -08:00

31 lines
881 B
JavaScript

import { describe, expect, it } from "vitest";
import { get, set } from "./shvl";
describe("utils/config/shvl", () => {
it("get reads nested paths with arrays and returns default when missing", () => {
const obj = { a: { b: [{ c: 1 }] } };
expect(get(obj, "a.b[0].c")).toBe(1);
expect(get(obj, "a.b[1].c", "dflt")).toBe("dflt");
});
it("set creates nested objects/arrays as needed", () => {
const obj = {};
set(obj, "a.b[0].c", 123);
expect(obj).toEqual({ a: { b: [{ c: 123 }] } });
});
it("set blocks prototype pollution", () => {
const obj = {};
set(obj, "__proto__.polluted", true);
set(obj, "a.__proto__.polluted", true);
set(obj, "constructor.prototype.polluted", true);
expect(obj.polluted).toBeUndefined();
expect({}.polluted).toBeUndefined();
expect(Object.prototype.polluted).toBeUndefined();
});
});