import { describe, it, expect, beforeEach } from 'vitest' import { assertNotBlocked, noteFailure, resetFailures } from './rateLimiter' const cfg = { limit: 3, windowMs: 5 * 60 * 1000, blockMs: 5 * 60 * 1000, escalateAfterBlocks: 3, escalateBlockMs: 24 * 60 * 60 * 1000 } describe('rateLimiter', () => { beforeEach(() => { resetFailures('key') }) it('blocks after threshold', () => { assertNotBlocked('key') noteFailure('key', cfg) noteFailure('key', cfg) noteFailure('key', cfg) expect(() => assertNotBlocked('key')).toThrow() }) it('resets after resetFailures', () => { noteFailure('key', cfg) noteFailure('key', cfg) noteFailure('key', cfg) resetFailures('key') expect(() => assertNotBlocked('key')).not.toThrow() }) })