diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2024-12-07 12:15:38 -0500 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2024-12-07 12:15:38 -0500 |
| commit | 32635ecc25d328314988db3c3f91e3d1c7d9d6c2 (patch) | |
| tree | e03976cd66a2a978c88db76ee9f8843ec0a35e02 /packages/backend/test/unit/server/api | |
| parent | fix incorrect X-RateLimit-Remaining header (diff) | |
| download | sharkey-32635ecc25d328314988db3c3f91e3d1c7d9d6c2.tar.gz sharkey-32635ecc25d328314988db3c3f91e3d1c7d9d6c2.tar.bz2 sharkey-32635ecc25d328314988db3c3f91e3d1c7d9d6c2.zip | |
fix rate limit storage in redis
Diffstat (limited to 'packages/backend/test/unit/server/api')
| -rw-r--r-- | packages/backend/test/unit/server/api/SkRateLimiterServiceTests.ts | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/packages/backend/test/unit/server/api/SkRateLimiterServiceTests.ts b/packages/backend/test/unit/server/api/SkRateLimiterServiceTests.ts index 8554aa39ef..711894095d 100644 --- a/packages/backend/test/unit/server/api/SkRateLimiterServiceTests.ts +++ b/packages/backend/test/unit/server/api/SkRateLimiterServiceTests.ts @@ -4,6 +4,7 @@ */ import { KEYWORD } from 'color-convert/conversions.js'; +import { jest } from '@jest/globals'; import type Redis from 'ioredis'; import { LegacyRateLimit, LimitCounter, RateLimit, SkRateLimiterService } from '@/server/api/SkRateLimiterService.js'; import { LoggerService } from '@/core/LoggerService.js'; @@ -98,7 +99,7 @@ describe(SkRateLimiterService, () => { minCounter = undefined; mockRedisGet = (key: string) => { - if (key === 'rl_actor_test' && counter) { + if (key === 'rl_actor_test_bucket' && counter) { return JSON.stringify(counter); } @@ -112,7 +113,7 @@ describe(SkRateLimiterService, () => { mockRedisSet = (args: unknown[]) => { const [key, value] = args; - if (key === 'rl_actor_test') { + if (key === 'rl_actor_test_bucket') { if (value == null) counter = undefined; else if (typeof(value) === 'string') counter = JSON.parse(value); else throw new Error('invalid redis call'); @@ -280,12 +281,12 @@ describe(SkRateLimiterService, () => { }); it('should set key expiration', async () => { - mockRedisSet = args => { - expect(args[2]).toBe('PX'); - expect(args[3]).toBe(1000); - }; + const mock = jest.fn(mockRedisSet); + mockRedisSet = mock; await serviceUnderTest().limit(limit, actor); + + expect(mock).toHaveBeenCalledWith(['rl_actor_test_bucket', '{"t":0,"c":1}', 'EX', 1]); }); it('should not increment when already blocked', async () => { @@ -434,12 +435,12 @@ describe(SkRateLimiterService, () => { }); it('should set key expiration', async () => { - mockRedisSet = args => { - expect(args[2]).toBe('PX'); - expect(args[3]).toBe(1000); - }; + const mock = jest.fn(mockRedisSet); + mockRedisSet = mock; await serviceUnderTest().limit(limit, actor); + + expect(mock).toHaveBeenCalledWith(['rl_actor_test_min', '{"t":0,"c":1}', 'EX', 1]); }); it('should not increment when already blocked', async () => { @@ -547,12 +548,12 @@ describe(SkRateLimiterService, () => { }); it('should set key expiration', async () => { - mockRedisSet = args => { - expect(args[2]).toBe('PX'); - expect(args[3]).toBe(1000); - }; + const mock = jest.fn(mockRedisSet); + mockRedisSet = mock; await serviceUnderTest().limit(limit, actor); + + expect(mock).toHaveBeenCalledWith(['rl_actor_test_bucket', '{"t":0,"c":1}', 'EX', 1]); }); it('should not increment when already blocked', async () => { @@ -670,12 +671,13 @@ describe(SkRateLimiterService, () => { }); it('should set key expiration', async () => { - mockRedisSet = args => { - expect(args[2]).toBe('PX'); - expect(args[3]).toBe(1000); - }; + const mock = jest.fn(mockRedisSet); + mockRedisSet = mock; await serviceUnderTest().limit(limit, actor); + + expect(mock).toHaveBeenCalledWith(['rl_actor_test_bucket', '{"t":0,"c":1}', 'EX', 1]); + expect(mock).toHaveBeenCalledWith(['rl_actor_test_min', '{"t":0,"c":1}', 'EX', 1]); }); it('should not increment when already blocked', async () => { |