uuid.test.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { describe, expect, test } from "bun:test";
  2. import { validateUuid, createAgentId } from "../uuid";
  3. describe("validateUuid", () => {
  4. test("validates correct UUID", () => {
  5. const result = validateUuid("550e8400-e29b-41d4-a716-446655440000");
  6. expect(result).toBe("550e8400-e29b-41d4-a716-446655440000");
  7. });
  8. test("validates uppercase UUID", () => {
  9. const result = validateUuid("550E8400-E29B-41D4-A716-446655440000");
  10. expect(result).toBe("550E8400-E29B-41D4-A716-446655440000");
  11. });
  12. test("returns null for non-string", () => {
  13. expect(validateUuid(123)).toBeNull();
  14. expect(validateUuid(null)).toBeNull();
  15. expect(validateUuid(undefined)).toBeNull();
  16. });
  17. test("returns null for invalid UUID format", () => {
  18. expect(validateUuid("not-a-uuid")).toBeNull();
  19. expect(validateUuid("550e8400-e29b-41d4-a716")).toBeNull();
  20. expect(validateUuid("550e8400e29b41d4a716446655440000")).toBeNull();
  21. });
  22. test("returns null for empty string", () => {
  23. expect(validateUuid("")).toBeNull();
  24. });
  25. test("returns null for UUID with invalid chars", () => {
  26. expect(validateUuid("550e8400-e29b-41d4-a716-44665544000g")).toBeNull();
  27. });
  28. test("returns null for UUID with leading/trailing whitespace", () => {
  29. expect(validateUuid(" 550e8400-e29b-41d4-a716-446655440000")).toBeNull();
  30. expect(validateUuid("550e8400-e29b-41d4-a716-446655440000 ")).toBeNull();
  31. });
  32. });
  33. describe("createAgentId", () => {
  34. test("generates id without label in correct format", () => {
  35. const id = createAgentId();
  36. expect(id).toMatch(/^a[0-9a-f]{16}$/);
  37. });
  38. test("generates id with label in correct format", () => {
  39. const id = createAgentId("compact");
  40. expect(id).toMatch(/^acompact-[0-9a-f]{16}$/);
  41. });
  42. });