Skip to content

Commit

Permalink
#296: refactored middleware tests
Browse files Browse the repository at this point in the history
  • Loading branch information
petermasking committed Sep 30, 2024
1 parent b47982c commit dd8b55a
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 1 deletion.
2 changes: 1 addition & 1 deletion packages/health/test/HealthManager.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { describe, expect, it } from 'vitest';

import { HEALTH_MANAGERS } from './fixtures';

describe('services/LocalWorker', () =>
describe('HealthManager', () =>
{
describe('.isHealthy()', () =>
{
Expand Down
27 changes: 27 additions & 0 deletions packages/middleware/test/MiddlewareManager.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@

import { describe, expect, it } from 'vitest';

import { Request, RunModes, Version } from '@jitar/execution';

import { MIDDLEWARE_MANAGERS } from './fixtures';

describe('MiddlewareManager', () =>
{
describe('.handle(fqn, version, args, headers', () =>
{
it('should execute the middleware in the correct order', async () =>
{
const args = new Map();
const headers = new Map();

const request = new Request('test', new Version(1, 0, 0), args, headers, RunModes.NORMAL);
const response = await MIDDLEWARE_MANAGERS.DEFAULT.handle(request);

expect(response.result).toBe('123');
expect(headers.get('first')).toBe('yes');
expect(headers.get('second')).toBe('yes');
expect(headers.get('third')).toBe('yes');
expect(headers.get('last')).toBe('3'); // The last middleware to be called is the last one added
});
});
});
3 changes: 3 additions & 0 deletions packages/middleware/test/fixtures/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

export * from './middlewares.fixture';
export * from './middlewareManagers.fixture';
14 changes: 14 additions & 0 deletions packages/middleware/test/fixtures/middlewareManagers.fixture.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

import MiddlewareManager from '../../src/middlewareManager';

import { MIDDLEWARES } from './middlewares.fixture';

const manager = new MiddlewareManager();
manager.addMiddleware(MIDDLEWARES.FIRST);
manager.addMiddleware(MIDDLEWARES.SECOND);
manager.addMiddleware(MIDDLEWARES.THIRD);

export const MIDDLEWARE_MANAGERS =
{
DEFAULT: manager
};
53 changes: 53 additions & 0 deletions packages/middleware/test/fixtures/middlewares.fixture.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@

import { Request, Response, StatusCodes } from '@jitar/execution';

import Middleware from '../../src/interfaces/Middleware';

class FirstMiddleware implements Middleware
{
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async handle(request: Request, next: () => Promise<Response>): Promise<Response>
{
request.setHeader('first', 'yes');
request.setHeader('last', '1');

const response = await next();
response.result = '1' + response.result;

return response;
}
}

class SecondMiddleware implements Middleware
{
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async handle(request: Request, next: () => Promise<Response>): Promise<Response>
{
request.setHeader('second', 'yes');
request.setHeader('last', '2');

const response = await next();
response.result = '2' + response.result;

return response;
}
}

class ThirdMiddleware implements Middleware
{
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async handle(request: Request, next: () => Promise<Response>): Promise<Response>
{
request.setHeader('third', 'yes');
request.setHeader('last', '3');

return new Response(StatusCodes.OK, '3');
}
}

export const MIDDLEWARES =
{
FIRST: new FirstMiddleware(),
SECOND: new SecondMiddleware(),
THIRD: new ThirdMiddleware()
};

0 comments on commit dd8b55a

Please sign in to comment.