summaryrefslogtreecommitdiff
path: root/packages/backend/test/unit/server/api
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2024-12-08 09:22:38 -0500
committerHazelnoot <acomputerdog@gmail.com>2024-12-08 09:22:38 -0500
commita7a1edc92ea2c40ddaacf804c268e31f383816c5 (patch)
tree4498472a6a745f27813e6e5e9795d2a99d224a52 /packages/backend/test/unit/server/api
parentsupport fractional rate limit scaling (diff)
downloadsharkey-a7a1edc92ea2c40ddaacf804c268e31f383816c5.tar.gz
sharkey-a7a1edc92ea2c40ddaacf804c268e31f383816c5.tar.bz2
sharkey-a7a1edc92ea2c40ddaacf804c268e31f383816c5.zip
fix NaN from extremely high rate limits
Diffstat (limited to 'packages/backend/test/unit/server/api')
-rw-r--r--packages/backend/test/unit/server/api/SkRateLimiterServiceTests.ts14
1 files changed, 14 insertions, 0 deletions
diff --git a/packages/backend/test/unit/server/api/SkRateLimiterServiceTests.ts b/packages/backend/test/unit/server/api/SkRateLimiterServiceTests.ts
index 07bcfb6309..7e0c01f849 100644
--- a/packages/backend/test/unit/server/api/SkRateLimiterServiceTests.ts
+++ b/packages/backend/test/unit/server/api/SkRateLimiterServiceTests.ts
@@ -564,6 +564,20 @@ describe(SkRateLimiterService, () => {
expect(counter?.c).toBe(1);
expect(counter?.t).toBe(0);
});
+
+ it('should not allow dripRate to be lower than 0', async () => {
+ // real-world case; taken from StreamingApiServerService
+ limit.max = 4096;
+ limit.duration = 2000;
+ counter = { c: 4096, t: 0 };
+
+ const i1 = await serviceUnderTest().limit(limit, actor);
+ mockTimeService.now = 1;
+ const i2 = await serviceUnderTest().limit(limit, actor);
+
+ expect(i1.blocked).toBeTruthy();
+ expect(i2.blocked).toBeFalsy();
+ });
});
describe('with legacy limit and min interval', () => {