UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

72 lines 2.45 kB
import { originMiddleware } from './origin-middleware.js'; import { createTestConfig } from '../../test/config/test-config.js'; import { EventEmitter } from 'events'; import { REQUEST_ORIGIN } from '../metric-events.js'; import { vi } from 'vitest'; const TEST_UNLEASH_TOKEN = 'TEST_UNLEASH_TOKEN'; const TEST_USER_AGENT = 'TEST_USER_AGENT'; describe('originMiddleware', () => { const req = { headers: {}, path: '' }; const res = {}; const next = vi.fn(); const loggerMock = { debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn(), fatal: vi.fn(), }; const getLogger = vi.fn(() => loggerMock); const eventBus = new EventEmitter(); eventBus.emit = vi.fn(); let config; beforeEach(() => { config = { ...createTestConfig({ getLogger, experimental: { flags: { originMiddlewareRequestLogging: true, }, }, }), eventBus, }; }); it('should call next', () => { const middleware = originMiddleware(config); middleware(req, res, next); expect(next).toHaveBeenCalled(); }); it('should emit UI request origin event', () => { const middleware = originMiddleware(config); middleware(req, res, next); expect(eventBus.emit).toHaveBeenCalledWith(REQUEST_ORIGIN, { type: 'UI', method: req.method, }); }); it('should emit API request origin event', () => { const middleware = originMiddleware(config); req.headers.authorization = TEST_UNLEASH_TOKEN; req.headers['user-agent'] = TEST_USER_AGENT; middleware(req, res, next); expect(eventBus.emit).toHaveBeenCalledWith(REQUEST_ORIGIN, { type: 'API', method: req.method, source: 'Other', }); }); it('should log API request', () => { const middleware = originMiddleware(config); req.headers.authorization = TEST_UNLEASH_TOKEN; req.headers['user-agent'] = TEST_USER_AGENT; middleware(req, res, next); expect(loggerMock.info).toHaveBeenCalledWith('API request', { method: req.method, userAgent: TEST_USER_AGENT, origin: undefined, }); }); }); //# sourceMappingURL=origin-middleware.test.js.map