Spaces:
Running
Running
File size: 1,728 Bytes
6c3af4e 765119d 6c3af4e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | import { beforeEach, describe, expect, it, vi } from "vitest";
describe("rejectedTokens", () => {
beforeEach(() => {
vi.resetModules();
});
it("refuses a token it recorded and nothing else", async () => {
const { addRejectedToken, isRejectedToken } = await import(
"./rejectedTokens"
);
expect(isRejectedToken("a")).toBe(false);
addRejectedToken("a");
expect(isRejectedToken("a")).toBe(true);
expect(isRejectedToken("b")).toBe(false);
});
it("counts each distinct token once, however often it is recorded", async () => {
const { addRejectedToken, getRejectedTokenCount } = await import(
"./rejectedTokens"
);
addRejectedToken("a");
addRejectedToken("a");
addRejectedToken("b");
expect(getRejectedTokenCount()).toBe(2);
});
it("evicts the oldest token once the cap is reached, so the set stays bounded", async () => {
const { addRejectedToken, isRejectedToken, MAX_REJECTED_TOKENS } =
await import("./rejectedTokens");
for (let i = 0; i <= MAX_REJECTED_TOKENS; i++) {
addRejectedToken(`token-${i}`);
}
expect(isRejectedToken("token-0")).toBe(false);
expect(isRejectedToken(`token-${MAX_REJECTED_TOKENS}`)).toBe(true);
});
it("does not evict anything when an already recorded token is recorded again at the cap", async () => {
const { addRejectedToken, isRejectedToken, MAX_REJECTED_TOKENS } =
await import("./rejectedTokens");
for (let i = 0; i < MAX_REJECTED_TOKENS; i++) {
addRejectedToken(`token-${i}`);
}
addRejectedToken("token-5");
expect(isRejectedToken("token-0")).toBe(true);
expect(isRejectedToken(`token-${MAX_REJECTED_TOKENS - 1}`)).toBe(true);
});
});
|