limiter
Version:
A generic rate limiter for the web and node.js. Useful for API clients, web crawling, or other tasks that need to be throttled
22 lines (19 loc) • 1.08 kB
text/typescript
import { RateLimiter } from "./RateLimiter.js";
import { Interval } from "./TokenBucket.js";
describe("RateLimiter", () => {
describe("interval validation", () => {
it("invalid interval", () => {
const junkInterval = ("junk" as unknown) as Interval;
expect(() => new RateLimiter({ tokensPerInterval: 1, interval: junkInterval })).toThrow();
});
it("valid intervals", () => {
expect(() => new RateLimiter({ tokensPerInterval: 1, interval: "sec" })).not.toThrow();
expect(() => new RateLimiter({ tokensPerInterval: 1, interval: "second" })).not.toThrow();
expect(() => new RateLimiter({ tokensPerInterval: 1, interval: "min" })).not.toThrow();
expect(() => new RateLimiter({ tokensPerInterval: 1, interval: "minute" })).not.toThrow();
expect(() => new RateLimiter({ tokensPerInterval: 1, interval: "hr" })).not.toThrow();
expect(() => new RateLimiter({ tokensPerInterval: 1, interval: "hour" })).not.toThrow();
expect(() => new RateLimiter({ tokensPerInterval: 1, interval: "day" })).not.toThrow();
});
});
});