16 lines · 603 B
import { describe, expect, test } from "bun:test";
import { ReadonlyOpenLimiter } from "./room-throttle";

describe("ReadonlyOpenLimiter", () => {
  test("caps opens per socket per window and resets after it", () => {
    const limiter = new ReadonlyOpenLimiter();
    const socket = {};
    const other = {};
    const limit = 30;
    for (let index = 0; index < limit; index++) expect(limiter.allow(socket, 1000)).toBe(true);
    expect(limiter.allow(socket, 1000)).toBe(false);
    expect(limiter.allow(other, 1000)).toBe(true);
    expect(limiter.allow(socket, 1000 + 61_000)).toBe(true);
  });
});