Something went wrong. Try again.
opencode v2 mirror
Something went wrong. Try again.
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879import { afterEach, describe, expect, test } from "bun:test"import { uuid } from "./uuid"
const cryptoDescriptor = Object.getOwnPropertyDescriptor(globalThis, "crypto")const secureDescriptor = Object.getOwnPropertyDescriptor(globalThis, "isSecureContext")const randomDescriptor = Object.getOwnPropertyDescriptor(Math, "random")
const setCrypto = (value: Partial<Crypto>) => { Object.defineProperty(globalThis, "crypto", { configurable: true, value: value as Crypto, })}
const setSecure = (value: boolean) => { Object.defineProperty(globalThis, "isSecureContext", { configurable: true, value, })}
const setRandom = (value: () => number) => { Object.defineProperty(Math, "random", { configurable: true, value, })}
afterEach(() => { if (cryptoDescriptor) { Object.defineProperty(globalThis, "crypto", cryptoDescriptor) }
if (secureDescriptor) { Object.defineProperty(globalThis, "isSecureContext", secureDescriptor) }
if (!secureDescriptor) { delete (globalThis as { isSecureContext?: boolean }).isSecureContext }
if (randomDescriptor) { Object.defineProperty(Math, "random", randomDescriptor) }})
describe("uuid", () => { test("uses randomUUID in secure contexts", () => { setCrypto({ randomUUID: () => "00000000-0000-0000-0000-000000000000" }) setSecure(true) expect(uuid()).toBe("00000000-0000-0000-0000-000000000000") })
test("falls back in insecure contexts", () => { setCrypto({ randomUUID: () => "00000000-0000-0000-0000-000000000000" }) setSecure(false) setRandom(() => 0.5) expect(uuid()).toBe("8") })
test("falls back when randomUUID throws", () => { setCrypto({ randomUUID: () => { throw new DOMException("Failed", "OperationError") }, }) setSecure(true) setRandom(() => 0.5) expect(uuid()).toBe("8") })
test("falls back when randomUUID is unavailable", () => { setCrypto({}) setSecure(true) setRandom(() => 0.5) expect(uuid()).toBe("8") })})