Files
pulse/lib/utils/__tests__/requestId.test.ts
2026-03-01 00:11:54 +01:00

62 lines
1.6 KiB
TypeScript

import { describe, it, expect, beforeEach } from 'vitest'
import {
generateRequestId,
getRequestIdHeader,
setLastRequestId,
getLastRequestId,
clearLastRequestId,
} from '../requestId'
describe('generateRequestId', () => {
it('returns a string starting with REQ', () => {
const id = generateRequestId()
expect(id).toMatch(/^REQ/)
})
it('contains a timestamp and random segment separated by underscore', () => {
const id = generateRequestId()
const parts = id.replace('REQ', '').split('_')
expect(parts).toHaveLength(2)
expect(parts[0].length).toBeGreaterThan(0)
expect(parts[1].length).toBeGreaterThan(0)
})
it('generates unique IDs across calls', () => {
const ids = new Set(Array.from({ length: 100 }, () => generateRequestId()))
expect(ids.size).toBe(100)
})
})
describe('getRequestIdHeader', () => {
it('returns X-Request-ID', () => {
expect(getRequestIdHeader()).toBe('X-Request-ID')
})
})
describe('lastRequestId storage', () => {
beforeEach(() => {
clearLastRequestId()
})
it('returns null when no ID has been set', () => {
expect(getLastRequestId()).toBeNull()
})
it('stores and retrieves a request ID', () => {
setLastRequestId('REQ123_abc')
expect(getLastRequestId()).toBe('REQ123_abc')
})
it('overwrites previous ID on set', () => {
setLastRequestId('first')
setLastRequestId('second')
expect(getLastRequestId()).toBe('second')
})
it('clears the stored ID', () => {
setLastRequestId('REQ123_abc')
clearLastRequestId()
expect(getLastRequestId()).toBeNull()
})
})