openclaw/ui/src/ui/uuid.test.ts
2026-01-03 13:43:20 +00:00

34 lines
877 B
TypeScript

import { describe, expect, it } from "vitest";
import { generateUUID } from "./uuid";
describe("generateUUID", () => {
it("uses crypto.randomUUID when available", () => {
const id = generateUUID({
randomUUID: () => "randomuuid",
getRandomValues: () => {
throw new Error("should not be called");
},
});
expect(id).toBe("randomuuid");
});
it("falls back to crypto.getRandomValues", () => {
const id = generateUUID({
getRandomValues: (bytes) => {
for (let i = 0; i < bytes.length; i++) bytes[i] = i;
return bytes;
},
});
expect(id).toBe("00010203-0405-4607-8809-0a0b0c0d0e0f");
});
it("still returns a v4 UUID when crypto is missing", () => {
const id = generateUUID(null);
expect(id).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
});
});