tests
This commit is contained in:
parent
3a7254708e
commit
b63e58784c
41 changed files with 5762 additions and 4477 deletions
|
|
@ -32,7 +32,7 @@ describe('QueueRateLimiter', () => {
|
|||
describe('addRule', () => {
|
||||
it('should add a rate limit rule', () => {
|
||||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
|
||||
const rule: RateLimitRule = {
|
||||
level: 'queue',
|
||||
queueName: 'test-queue',
|
||||
|
|
@ -55,7 +55,7 @@ describe('QueueRateLimiter', () => {
|
|||
|
||||
it('should add operation-level rule', () => {
|
||||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
|
||||
const rule: RateLimitRule = {
|
||||
level: 'operation',
|
||||
queueName: 'test-queue',
|
||||
|
|
@ -86,7 +86,7 @@ describe('QueueRateLimiter', () => {
|
|||
|
||||
it('should check against global rule', async () => {
|
||||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
|
||||
const globalRule: RateLimitRule = {
|
||||
level: 'global',
|
||||
config: { points: 1000, duration: 60 },
|
||||
|
|
@ -110,7 +110,7 @@ describe('QueueRateLimiter', () => {
|
|||
|
||||
it('should prefer more specific rules', async () => {
|
||||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
|
||||
// Add rules from least to most specific
|
||||
const globalRule: RateLimitRule = {
|
||||
level: 'global',
|
||||
|
|
@ -161,7 +161,7 @@ describe('QueueRateLimiter', () => {
|
|||
describe('getStatus', () => {
|
||||
it('should get rate limit status', async () => {
|
||||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
|
||||
const rule: RateLimitRule = {
|
||||
level: 'queue',
|
||||
queueName: 'test-queue',
|
||||
|
|
@ -171,7 +171,7 @@ describe('QueueRateLimiter', () => {
|
|||
limiter.addRule(rule);
|
||||
|
||||
const status = await limiter.getStatus('test-queue', 'handler', 'operation');
|
||||
|
||||
|
||||
expect(status.queueName).toBe('test-queue');
|
||||
expect(status.handler).toBe('handler');
|
||||
expect(status.operation).toBe('operation');
|
||||
|
|
@ -182,7 +182,7 @@ describe('QueueRateLimiter', () => {
|
|||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
const status = await limiter.getStatus('test-queue', 'handler', 'operation');
|
||||
|
||||
|
||||
expect(status.queueName).toBe('test-queue');
|
||||
expect(status.appliedRule).toBeUndefined();
|
||||
expect(status.limit).toBeUndefined();
|
||||
|
|
@ -192,7 +192,7 @@ describe('QueueRateLimiter', () => {
|
|||
describe('reset', () => {
|
||||
it('should reset rate limits for specific operation', async () => {
|
||||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
|
||||
const rule: RateLimitRule = {
|
||||
level: 'operation',
|
||||
queueName: 'test-queue',
|
||||
|
|
@ -229,7 +229,7 @@ describe('QueueRateLimiter', () => {
|
|||
describe('removeRule', () => {
|
||||
it('should remove a rule', () => {
|
||||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
|
||||
const rule: RateLimitRule = {
|
||||
level: 'queue',
|
||||
queueName: 'test-queue',
|
||||
|
|
@ -255,7 +255,7 @@ describe('QueueRateLimiter', () => {
|
|||
describe('getRules', () => {
|
||||
it('should return all configured rules', () => {
|
||||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
|
||||
const rule1: RateLimitRule = {
|
||||
level: 'global',
|
||||
config: { points: 1000, duration: 60 },
|
||||
|
|
@ -280,7 +280,7 @@ describe('QueueRateLimiter', () => {
|
|||
describe('error handling', () => {
|
||||
it('should allow on rate limiter error', async () => {
|
||||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
|
||||
// Add a rule but don't set up the actual limiter to cause an error
|
||||
const rule: RateLimitRule = {
|
||||
level: 'queue',
|
||||
|
|
@ -294,7 +294,7 @@ describe('QueueRateLimiter', () => {
|
|||
(limiter as any).limiters.clear();
|
||||
|
||||
const result = await limiter.checkLimit('test-queue', 'handler', 'operation');
|
||||
|
||||
|
||||
expect(result.allowed).toBe(true); // Should allow on error
|
||||
expect(mockLogger.warn).toHaveBeenCalledWith(
|
||||
'Rate limiter not found for rule',
|
||||
|
|
@ -306,7 +306,7 @@ describe('QueueRateLimiter', () => {
|
|||
describe('hierarchical rule precedence', () => {
|
||||
it('should correctly apply rule hierarchy', () => {
|
||||
const limiter = new QueueRateLimiter(mockRedisClient, mockLogger);
|
||||
|
||||
|
||||
// Add multiple rules at different levels
|
||||
const rules: RateLimitRule[] = [
|
||||
{
|
||||
|
|
@ -346,4 +346,4 @@ describe('QueueRateLimiter', () => {
|
|||
expect(specificRule?.config.points).toBe(10);
|
||||
});
|
||||
});
|
||||
})
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue