import * as Express from 'express'; import { DyNTS_createLoadShedMiddleware } from './load-shed.util'; import { DyNTS_MemoryGuard } from '../_services/core/memory-guard.service'; // Az auto-load-shed middleware tesztjei (BFR-OVERSEER-009 maradék): critical-nyomásnál 503, // esszenciális útvonalon SOHA, ok-nyomásnál átenged. describe('| DyNTS_createLoadShedMiddleware', (): void => { /** Minimál Express req/res/next hármas a middleware meghajtásához. */ function buildContext(path: string): { req: Express.Request; res: Express.Response; next: jasmine.Spy; sent: { status?: number; body?: unknown }; } { const sent: { status?: number; body?: unknown } = {}; const res: Partial = { status: (code: number): Express.Response => { sent.status = code; return res as Express.Response; }, setHeader: (): Express.Response => res as Express.Response, send: (body: unknown): Express.Response => { sent.body = body; return res as Express.Response; }, }; return { req: { path: path } as Express.Request, res: res as Express.Response, next: jasmine.createSpy('next'), sent: sent, }; } it('| critical nyomásnál 503-mal ejti a nem-esszenciális kérést', (): void => { spyOn(DyNTS_MemoryGuard.getInstance(), 'shouldShedLoad').and.returnValue(true); const middleware: Express.Handler = DyNTS_createLoadShedMiddleware(); const ctx = buildContext('/api/heavy-operation'); middleware(ctx.req, ctx.res, ctx.next); expect(ctx.sent.status).toBe(503); expect(ctx.next).not.toHaveBeenCalled(); }); it('| esszenciális útvonalon (health) critical alatt SEM shed-el', (): void => { spyOn(DyNTS_MemoryGuard.getInstance(), 'shouldShedLoad').and.returnValue(true); const middleware: Express.Handler = DyNTS_createLoadShedMiddleware(); const ctx = buildContext('/api/server/health'); middleware(ctx.req, ctx.res, ctx.next); expect(ctx.next).toHaveBeenCalled(); expect(ctx.sent.status).toBeUndefined(); }); it('| ok-nyomásnál átengedi a kérést', (): void => { spyOn(DyNTS_MemoryGuard.getInstance(), 'shouldShedLoad').and.returnValue(false); const middleware: Express.Handler = DyNTS_createLoadShedMiddleware(); const ctx = buildContext('/api/anything'); middleware(ctx.req, ctx.res, ctx.next); expect(ctx.next).toHaveBeenCalled(); expect(ctx.sent.status).toBeUndefined(); }); });