Archived
1
0

refactor: rateLimiter.canTry logic to check >= 1

This commit is contained in:
Joe Previte 2021-04-19 11:21:38 -07:00
parent 7a5042176e
commit f80d5c3764
No known key found for this signature in database
GPG Key ID: 2C91590C6B742C24
2 changed files with 5 additions and 2 deletions

View File

@ -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 {

View File

@ -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