UNPKG

unleash-server

Version:

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

60 lines 2.19 kB
import { setupAppWithoutSupertest, } from '../../../test/e2e/helpers/test-helper.js'; import dbInit from '../../../test/e2e/helpers/database-init.js'; import getLogger from '../../../test/fixtures/no-logger.js'; import { DEFAULT_ENV, randomId } from '../../util/index.js'; import { ApiTokenType } from '../../types/model.js'; import { vi } from 'vitest'; let app; let db; let appErrorLogs = []; beforeAll(async () => { db = await dbInit('frontend_api_concurrency', getLogger); const baseLogger = getLogger(); const appLogger = { ...baseLogger, error: (msg, ...args) => { appErrorLogs.push(msg); baseLogger.error(msg, ...args); }, }; app = await setupAppWithoutSupertest(db.stores, { frontendApiOrigins: ['https://example.com'], getLogger: () => appLogger, }, db.rawDatabase); }); afterEach(() => { app.services.frontendApiService.stopAll(); vi.clearAllMocks(); }); afterAll(async () => { await app.destroy(); await db.destroy(); }); beforeEach(async () => { appErrorLogs = []; }); /** * This test needs to run on a new instance of the application and a clean DB * which is why it should be the only test of this file */ test('multiple parallel calls to api/frontend should not create multiple instances', async () => { const frontendTokenDefault = await app.services.apiTokenService.createApiTokenWithProjects({ type: ApiTokenType.FRONTEND, projects: ['default'], environment: DEFAULT_ENV, tokenName: `test-token-${randomId()}`, }); const address = app.server.address(); expect(address).not.toBeNull(); expect(address).toHaveProperty('port'); // @ts-ignore - We've just checked that we have this property const serverUrl = `http://localhost:${address.port}/api/frontend`; await Promise.all(Array.from(Array(10).keys()).map(() => fetch(serverUrl, { method: 'GET', headers: { Authorization: frontendTokenDefault.secret, }, }).then((res) => expect(res.status).toBe(200)))); expect(appErrorLogs).toHaveLength(0); }); //# sourceMappingURL=frontend-api.concurrency.e2e.test.js.map