diff --git a/README.md b/README.md index 2d5bb17..34cb368 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,8 @@ Specific: * [indexKeyPrefix](https://github.com/animir/node-rate-limiter-flexible/wiki/Options#indexkeyprefix) Combined indexes of MongoDB. * [timeoutMs](https://github.com/animir/node-rate-limiter-flexible/wiki/Options#timeoutms) For Cluster. * [rejectIfRedisNotReady](https://github.com/animir/node-rate-limiter-flexible/wiki/Options#rejectifredisnotready) +* [useRedisPackage](https://github.com/animir/node-rate-limiter-flexible/wiki/Options#useredispackage) +* [useRedis3AndLowerPackage](https://github.com/animir/node-rate-limiter-flexible/wiki/Options#useredis3andlowerpackage) ## API diff --git a/lib/RateLimiterRedis.js b/lib/RateLimiterRedis.js index a45ab0a..b158901 100644 --- a/lib/RateLimiterRedis.js +++ b/lib/RateLimiterRedis.js @@ -28,7 +28,7 @@ class RateLimiterRedis extends RateLimiterStoreAbstract { this._rejectIfRedisNotReady = !!opts.rejectIfRedisNotReady; - this.useIoredis = opts.useIoredis; + this.useRedisPackage = opts.useRedisPackage; this.useRedis3AndLowerPackage = opts.useRedis3AndLowerPackage; if (typeof this.client.defineCommand === 'function') { this.client.defineCommand("rlflxIncr", { @@ -87,7 +87,7 @@ class RateLimiterRedis extends RateLimiterStoreAbstract { if (forceExpire) { if (secDuration > 0) { - if(this.useIoredis){ + if(!this.useRedisPackage && !this.useRedis3AndLowerPackage){ multi.set(rlKey, points, "EX", secDuration); }else{ multi.set(rlKey, points, { EX: secDuration }); @@ -96,14 +96,14 @@ class RateLimiterRedis extends RateLimiterStoreAbstract { multi.set(rlKey, points); } - if(this.useIoredis){ + if(!this.useRedisPackage && !this.useRedis3AndLowerPackage){ return multi.pttl(rlKey).exec(true); } return multi.pTTL(rlKey).exec(true); } if (secDuration > 0) { - if(this.useIoredis){ + if(!this.useRedisPackage && !this.useRedis3AndLowerPackage){ return this.client.rlflxIncr( [rlKey].concat([String(points), String(secDuration)])); } @@ -130,7 +130,7 @@ class RateLimiterRedis extends RateLimiterStoreAbstract { }); } } else { - if(this.useIoredis){ + if(!this.useRedisPackage && !this.useRedis3AndLowerPackage){ return multi.incrby(rlKey, points).pttl(rlKey).exec(true); } @@ -142,7 +142,7 @@ class RateLimiterRedis extends RateLimiterStoreAbstract { if (!this._isRedisReady()) { throw new Error('Redis connection is not ready'); } - if(this.useIoredis){ + if(!this.useRedisPackage && !this.useRedis3AndLowerPackage){ return this.client .multi() .get(rlKey) diff --git a/lib/index.d.ts b/lib/index.d.ts index 25c7bfa..6b85ce8 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -249,7 +249,7 @@ interface IRateLimiterMongoOptions extends IRateLimiterStoreOptions { interface IRateLimiterRedisOptions extends IRateLimiterStoreOptions { rejectIfRedisNotReady?: boolean; - useIoredis?: boolean; + useRedisPackage?: boolean; useRedis3AndLowerPackage?: boolean; } diff --git a/test/BurstyRateLimiter.test.js b/test/BurstyRateLimiter.test.js index ea61cd4..9c79775 100644 --- a/test/BurstyRateLimiter.test.js +++ b/test/BurstyRateLimiter.test.js @@ -86,14 +86,12 @@ describe('BurstyRateLimiter', () => { await redisClientClosed.disconnect(); const rlRedisClosed = new RateLimiterRedis({ storeClient: redisClientClosed, - useIoredis: true, }); const blRedis = new RateLimiterRedis({ storeClient: redisMockClient, keyPrefix: 'bursty', points: 1, duration: 1, - useIoredis: true, }); const bursty = new BurstyRateLimiter(rlRedisClosed, blRedis); @@ -124,12 +122,10 @@ describe('BurstyRateLimiter', () => { storeClient: redisMockClient, points: 1, duration: 1, - useIoredis: true, }); const blRedisClosed = new RateLimiterRedis({ storeClient: redisClientClosed, keyPrefix: 'bursty', - useIoredis: true, }); const bursty = new BurstyRateLimiter(rlRedis, blRedisClosed); await bursty.consume(testKey); diff --git a/test/RateLimiterRedis.ioredis.test.js b/test/RateLimiterRedis.ioredis.test.js index 7432a14..15c4e7e 100644 --- a/test/RateLimiterRedis.ioredis.test.js +++ b/test/RateLimiterRedis.ioredis.test.js @@ -26,7 +26,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 5, - useIoredis: true, }); rateLimiter .consume(testKey) @@ -47,7 +46,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 1, duration: 5, - useIoredis: true, }); rateLimiter .consume(testKey, 2) @@ -65,7 +63,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 2, duration: 5, execEvenly: true, - useIoredis: true, }); rateLimiter .consume(testKey) @@ -102,7 +99,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { duration: 1, execEvenly: true, execEvenlyMinDelayMs: 20, - useIoredis: true, }); rateLimiter .consume(testKey) @@ -129,7 +125,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 3, duration: 5, - useIoredis: true }); rateLimiter .consume(testKey) @@ -157,7 +152,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 1, duration: 5, - useIoredis: true }); rateLimiter .consume(testKey) @@ -187,7 +181,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { duration: 5, inMemoryBlockOnConsumed: 2, inMemoryBlockDuration: 10, - useIoredis: true }); rateLimiter .consume(testKey) @@ -213,7 +206,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 5, inMemoryBlockOnConsumed: 1, - useIoredis: true }); rateLimiter .consume(testKey) @@ -233,7 +225,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 5, inMemoryBlockOnConsumed: 1, - useIoredis: true }); rateLimiter .consume(testKey, 2) @@ -254,7 +245,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { duration: 1, inMemoryBlockOnConsumed: 2, inMemoryBlockDuration: 2, - useIoredis: true }); // It blocks on the first consume as consumed points more than available rateLimiter @@ -281,7 +271,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, inMemoryBlockDuration: 2, - useIoredis: true }); rateLimiter.reward('test'); } catch (err) { @@ -309,7 +298,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, - useIoredis: true }); await redisMockClient.disconnect(); @@ -335,9 +323,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 2, duration: 2, storeClient: redisMockClient, - useIoredis: true }), - useIoredis: true }); await redisClientClosed.disconnect(); @@ -362,9 +348,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 2, duration: 2, storeClient: redisMockClient, - useIoredis: true }), - useIoredis: true }); await redisClientClosed.disconnect(); @@ -388,9 +372,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 2, duration: 2, storeClient: redisMockClient, - useIoredis: true }), - useIoredis: true }); await redisClientClosed.disconnect(); @@ -420,9 +402,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 1, storeClient: redisMockClient, - useIoredis: true }), - useIoredis: true }); await redisClientClosed.disconnect(); @@ -436,7 +416,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { it('use keyPrefix from options', () => { const testKey = 'key'; const keyPrefix = 'test'; - const rateLimiter = new RateLimiterRedis({ keyPrefix, storeClient: redisMockClient, useIoredis: true }); + const rateLimiter = new RateLimiterRedis({ keyPrefix, storeClient: redisMockClient }); expect(rateLimiter.getKey(testKey)).to.equal('test:key'); }); @@ -448,7 +428,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 1, blockDuration: 2, - useIoredis: true }); rateLimiter .consume(testKey, 2) @@ -468,7 +447,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 1, blockDuration: 2, - useIoredis: true }); sinon.stub(rateLimiter, '_block').callsFake(() => Promise.reject(new Error())); rateLimiter @@ -489,7 +467,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 1, blockDuration: 2, - useIoredis: true }); rateLimiter .consume(testKey, 2) @@ -517,7 +494,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 1, duration: 1, - useIoredis: true }); rateLimiter.block(testKey, 2).then(() => { rateLimiter @@ -539,7 +515,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, - useIoredis: true }); rateLimiter .consume(testKey) @@ -567,7 +542,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, - useIoredis: true }); await redisMockClient.disconnect() await rateLimiter @@ -628,7 +602,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, - useIoredis: true }); rateLimiter .get(testKey) @@ -648,7 +621,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, - useIoredis: true }); rateLimiter .consume(testKey) @@ -668,7 +640,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, - useIoredis: true }); rateLimiter.delete(testKey) .then((resDel) => { @@ -684,7 +655,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, - useIoredis: true }); await redisMockClient.disconnect(); await rateLimiter.delete(testKey) @@ -698,7 +668,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 5, - useIoredis: true }); rateLimiter .consume(testKey, 1, { customDuration: 1 }) @@ -717,7 +686,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 5, - useIoredis: true }); rateLimiter .consume(testKey, 1, { customDuration: 1 }) @@ -743,9 +711,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 2, duration: 3, storeClient: redisMockClient, - useIoredis: true }), - useIoredis: true }); await redisClientClosed.disconnect(); @@ -766,7 +732,6 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { blockDuration: 10, inMemoryBlockOnConsumed: 2, inMemoryBlockDuration: 10, - useIoredis: true }); rateLimiter .consume(testKey) @@ -791,7 +756,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { it('does not expire key if duration set to 0', (done) => { const testKey = 'neverexpire'; - const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 2, duration: 0, useIoredis: true }); + const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 2, duration: 0 }); rateLimiter.consume(testKey, 1) .then(() => { rateLimiter.consume(testKey, 1) @@ -814,7 +779,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { it('block key forever, if secDuration is 0', (done) => { const testKey = 'neverexpire'; - const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1, useIoredis: true }); + const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1 }); rateLimiter.block(testKey, 0) .then(() => { setTimeout(() => { @@ -833,7 +798,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { it('set points by key', (done) => { const testKey = 'set'; - const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1, useIoredis: true }); + const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1 }); rateLimiter.set(testKey, 12) .then(() => { rateLimiter.get(testKey) @@ -849,7 +814,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { it('set points by key forever', (done) => { const testKey = 'setforever'; - const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1, useIoredis: true }); + const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1 }); rateLimiter.set(testKey, 12, 0) .then(() => { setTimeout(() => { diff --git a/test/RateLimiterRedis.redis.test.js b/test/RateLimiterRedis.redis.test.js index 114a5c6..6bf0cd1 100644 --- a/test/RateLimiterRedis.redis.test.js +++ b/test/RateLimiterRedis.redis.test.js @@ -26,6 +26,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 5, + useRedisPackage: true, }); rateLimiter .consume(testKey) @@ -46,6 +47,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 1, duration: 5, + useRedisPackage: true, }); rateLimiter .consume(testKey, 2) @@ -63,6 +65,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 2, duration: 5, execEvenly: true, + useRedisPackage: true, }); rateLimiter .consume(testKey) @@ -99,6 +102,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { duration: 1, execEvenly: true, execEvenlyMinDelayMs: 20, + useRedisPackage: true, }); rateLimiter .consume(testKey) @@ -125,6 +129,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 3, duration: 5, + useRedisPackage: true, }); rateLimiter .consume(testKey) @@ -152,6 +157,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 1, duration: 5, + useRedisPackage: true, }); rateLimiter .consume(testKey) @@ -181,6 +187,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { duration: 5, inMemoryBlockOnConsumed: 2, inMemoryBlockDuration: 10, + useRedisPackage: true, }); rateLimiter .consume(testKey) @@ -206,6 +213,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 5, inMemoryBlockOnConsumed: 1, + useRedisPackage: true, }); rateLimiter .consume(testKey) @@ -225,6 +233,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 5, inMemoryBlockOnConsumed: 1, + useRedisPackage: true, }); rateLimiter .consume(testKey, 2) @@ -245,6 +254,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { duration: 1, inMemoryBlockOnConsumed: 2, inMemoryBlockDuration: 2, + useRedisPackage: true, }); // It blocks on the first consume as consumed points more than available rateLimiter @@ -271,6 +281,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, inMemoryBlockDuration: 2, + useRedisPackage: true, }); rateLimiter.reward('test'); } catch (err) { @@ -285,6 +296,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, inMemoryBlockOnConsumed: 1, + useRedisPackage: true, }); rateLimiter.reward('test'); } catch (err) { @@ -298,6 +310,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, + useRedisPackage: true, }); await redisMockClient.quit(); @@ -320,10 +333,12 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisClientClosed, points: 1, duration: 1, + useRedisPackage: true, insuranceLimiter: new RateLimiterRedis({ points: 2, duration: 2, storeClient: redisMockClient, + useRedisPackage: true, }), }); await redisClientClosed.quit(); @@ -346,10 +361,12 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisClientClosed, points: 1, duration: 1, + useRedisPackage: true, insuranceLimiter: new RateLimiterRedis({ points: 2, duration: 2, storeClient: redisMockClient, + useRedisPackage: true, }), }); await redisClientClosed.quit(); @@ -371,10 +388,12 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisClientClosed, points: 1, duration: 1, + useRedisPackage: true, insuranceLimiter: new RateLimiterRedis({ points: 2, duration: 2, storeClient: redisMockClient, + useRedisPackage: true, }), }); await redisClientClosed.quit(); @@ -402,10 +421,12 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisClientClosed, points: 1, duration: 1, + useRedisPackage: true, insuranceLimiter: new RateLimiterRedis({ points: 1, duration: 1, storeClient: redisMockClient, + useRedisPackage: true, }), }); await redisClientClosed.quit(); @@ -420,7 +441,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { it('use keyPrefix from options', () => { const testKey = 'key'; const keyPrefix = 'test'; - const rateLimiter = new RateLimiterRedis({ keyPrefix, storeClient: redisMockClient }); + const rateLimiter = new RateLimiterRedis({ keyPrefix, storeClient: redisMockClient, useRedisPackage: true }); expect(rateLimiter.getKey(testKey)).to.equal('test:key'); }); @@ -432,6 +453,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 1, blockDuration: 2, + useRedisPackage: true, }); rateLimiter .consume(testKey, 2) @@ -451,6 +473,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 1, blockDuration: 2, + useRedisPackage: true, }); sinon.stub(rateLimiter, '_block').callsFake(() => Promise.reject(new Error())); rateLimiter @@ -471,6 +494,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 1, duration: 1, blockDuration: 2, + useRedisPackage: true, }); rateLimiter .consume(testKey, 2) @@ -498,6 +522,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 1, duration: 1, + useRedisPackage: true, }); rateLimiter.block(testKey, 2).then(() => { rateLimiter @@ -519,6 +544,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, + useRedisPackage: true, }); rateLimiter .consume(testKey) @@ -546,6 +572,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, + useRedisPackage: true, }); await redisMockClient.quit() await rateLimiter @@ -567,6 +594,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: disconnectedIoRedis, points: 2, duration: 1, + useRedisPackage: true, rejectIfRedisNotReady: true, }); rateLimiter @@ -585,6 +613,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, + useRedisPackage: true, }); rateLimiter .get(testKey) @@ -604,6 +633,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, + useRedisPackage: true }); rateLimiter .consume(testKey) @@ -623,6 +653,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, + useRedisPackage: true, }); rateLimiter.delete(testKey) .then((resDel) => { @@ -638,6 +669,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 1, + useRedisPackage: true, }); await redisMockClient.quit(); await rateLimiter.delete(testKey) @@ -651,6 +683,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 5, + useRedisPackage: true, }); rateLimiter .consume(testKey, 1, { customDuration: 1 }) @@ -669,6 +702,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { storeClient: redisMockClient, points: 2, duration: 5, + useRedisPackage: true, }); rateLimiter .consume(testKey, 1, { customDuration: 1 }) @@ -695,7 +729,9 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { points: 2, duration: 3, storeClient: redisMockClient, + useRedisPackage: true, }), + useRedisPackage: true, }); await redisClientClosed.quit(); @@ -716,6 +752,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { blockDuration: 10, inMemoryBlockOnConsumed: 2, inMemoryBlockDuration: 10, + useRedisPackage: true, }); rateLimiter .consume(testKey) @@ -740,7 +777,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { it('does not expire key if duration set to 0', (done) => { const testKey = 'neverexpire'; - const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 2, duration: 0 }); + const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 2, duration: 0, useRedisPackage: true }); rateLimiter.consume(testKey, 1) .then(() => { rateLimiter.consume(testKey, 1) @@ -763,7 +800,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { it('block key forever, if secDuration is 0', (done) => { const testKey = 'neverexpire'; - const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1 }); + const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1, useRedisPackage: true }); rateLimiter.block(testKey, 0) .then(() => { setTimeout(() => { @@ -782,7 +819,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { it('set points by key', (done) => { const testKey = 'set'; - const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1 }); + const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1, useRedisPackage: true }); rateLimiter.set(testKey, 12) .then(() => { rateLimiter.get(testKey) @@ -798,7 +835,7 @@ describe('RateLimiterRedis with fixed window', function RateLimiterRedisTest() { it('set points by key forever', (done) => { const testKey = 'setforever'; - const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1 }); + const rateLimiter = new RateLimiterRedis({ storeClient: redisMockClient, points: 1, duration: 1, useRedisPackage: true }); rateLimiter.set(testKey, 12, 0) .then(() => { setTimeout(() => {