UNPKG

unleash-server

Version:

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

51 lines 2.02 kB
import { log } from 'db-migrate-shared'; import { createStores } from '../../../lib/db/index.js'; import { createDb } from '../../../lib/db/db-pool.js'; import { getDbConfig } from './database-config.js'; import { createTestConfig } from '../../config/test-config.js'; import noLoggerProvider from '../../fixtures/no-logger.js'; import postgresPkg from 'pg'; const { Client } = postgresPkg; import { randomUUID } from 'crypto'; // require('db-migrate-shared').log.silence(false); // because of db-migrate bug (https://github.com/Unleash/unleash/issues/171) process.setMaxListeners(0); export const testDbPrefix = 'unleashtestdb_'; export default async function init(_databaseSchema = 'test', getLogger = noLoggerProvider, configOverride = {}) { const testDbName = `${testDbPrefix}${randomUUID().replace(/-/g, '')}`; const testDBTemplateName = process.env.TEST_DB_TEMPLATE_NAME; const config = createTestConfig({ db: { ...getDbConfig(), pool: { min: 1, max: 4 }, database: testDbName, ssl: false, }, ...configOverride, getLogger, }); log.setLogLevel('error'); if (!testDBTemplateName) { throw new Error('TEST_DB_TEMPLATE_NAME environment variable is not set'); } const client = new Client(getDbConfig()); await client.connect(); await client.query(`CREATE DATABASE ${testDbName} TEMPLATE ${testDBTemplateName}`); await client.query(`ALTER DATABASE ${testDbName} SET TIMEZONE TO UTC`); await client.end(); const testDb = createDb(config); const stores = createStores(config, testDb); stores.eventStore.setMaxListeners(0); return { config, rawDatabase: testDb, stores, reset: async () => { }, destroy: async () => { return new Promise((resolve, reject) => { testDb.destroy((error) => (error ? reject(error) : resolve())); }); }, }; } //# sourceMappingURL=database-init.js.map