24 lines
999 B
TypeScript
24 lines
999 B
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { InstallationLimiter } from '../src/server/installation-limiter.js'
|
|
|
|
describe('InstallationLimiter', () => {
|
|
it('enforces a bounded window independently per installation', () => {
|
|
const limiter = new InstallationLimiter(2, 1_000)
|
|
expect(limiter.consume('first', 0)).toBe(true)
|
|
expect(limiter.consume('first', 1)).toBe(true)
|
|
expect(limiter.consume('first', 2)).toBe(false)
|
|
expect(limiter.consume('second', 2)).toBe(true)
|
|
expect(limiter.consume('first', 1_000)).toBe(true)
|
|
})
|
|
|
|
it('fails closed when too many active installation counters exist', () => {
|
|
const limiter = new InstallationLimiter(2, 1_000)
|
|
for (let index = 0; index < 10_000; index += 1) {
|
|
expect(limiter.consume(`installation-${index}`, 0)).toBe(true)
|
|
}
|
|
expect(limiter.consume('overflow', 1)).toBe(false)
|
|
expect(limiter.consume('installation-0', 1)).toBe(true)
|
|
expect(limiter.consume('overflow', 1_000)).toBe(true)
|
|
})
|
|
})
|