import { describe, it, expect } from 'vitest' import { bucketKey, KEY_NAMESPACE } from '../src/key.js' describe('key', () => { it('带命名空间前缀(防与其它 redis key 撞)', () => { const k = bucketKey({ endpoint: 'llm', by: 'ip' }, '1.2.3.4') expect(k.startsWith(`${KEY_NAMESPACE}\x1f`)).toBe(true) }) it('不同 endpoint / subject / by 不串桶', () => { const a = bucketKey({ endpoint: 'llm', by: 'ip' }, '1.2.3.4') const b = bucketKey({ endpoint: 'tts', by: 'ip' }, '1.2.3.4') const c = bucketKey({ endpoint: 'llm', by: 'ip' }, '5.6.7.8') const d = bucketKey({ endpoint: 'llm', by: 'anon' }, '1.2.3.4') expect(new Set([a, b, c, d]).size).toBe(4) }) it('subject 含分隔符样字符不与结构分隔混淆', () => { const a = bucketKey({ endpoint: 'llm', by: 'ip' }, 'a:b') const b = bucketKey({ endpoint: 'llm', by: 'ip' }, 'a') expect(a).not.toBe(b) }) })