refactor: rateLimiter.canTry logic to check >= 1
This commit is contained in:
parent
7a5042176e
commit
f80d5c3764
@ -18,7 +18,10 @@ export class RateLimiter {
|
|||||||
private readonly hourLimiter = new Limiter(12, "hour")
|
private readonly hourLimiter = new Limiter(12, "hour")
|
||||||
|
|
||||||
public canTry(): boolean {
|
public canTry(): boolean {
|
||||||
return this.minuteLimiter.getTokensRemaining() > 0 || this.hourLimiter.getTokensRemaining() > 0
|
// Note: we must check using >= 1 because technically when there are no tokens left
|
||||||
|
// you get back a number like 0.00013333333333333334
|
||||||
|
// which would cause fail if the logic were > 0
|
||||||
|
return this.minuteLimiter.getTokensRemaining() >= 1 || this.hourLimiter.getTokensRemaining() >= 1
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeToken(): boolean {
|
public removeToken(): boolean {
|
||||||
|
@ -54,7 +54,7 @@ test.describe("login", () => {
|
|||||||
// The current RateLimiter allows 2 logins per minute plus
|
// The current RateLimiter allows 2 logins per minute plus
|
||||||
// 12 logins per hour for a total of 14
|
// 12 logins per hour for a total of 14
|
||||||
// See: src/node/routes/login.ts
|
// See: src/node/routes/login.ts
|
||||||
for (let i = 1; i <= 13; i++) {
|
for (let i = 1; i <= 14; i++) {
|
||||||
await page.click(".submit")
|
await page.click(".submit")
|
||||||
await page.waitForLoadState("networkidle")
|
await page.waitForLoadState("networkidle")
|
||||||
// We double-check that the correct error message shows
|
// We double-check that the correct error message shows
|
||||||
|
Reference in New Issue
Block a user