UNPKG

unleash-server

Version:

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

59 lines 2.67 kB
import ClientInstanceService from '../instance/instance-service.js'; import { secondsToMilliseconds } from 'date-fns'; import { createTestConfig } from '../../../../test/config/test-config.js'; import { APPLICATION_CREATED } from '../../../events/index.js'; import { FakePrivateProjectChecker } from '../../private-project/fakePrivateProjectChecker.js'; import dbInit from '../../../../test/e2e/helpers/database-init.js'; import { noLoggerProvider as getLogger } from '../../../../test/fixtures/no-logger.js'; import { faker } from '@faker-js/faker'; let stores; let db; let clientInstanceService; let config; beforeAll(async () => { db = await dbInit('client_metrics_service_serial', getLogger); stores = db.stores; config = createTestConfig({}); const _bulkInterval = secondsToMilliseconds(0.5); const _announcementInterval = secondsToMilliseconds(2); clientInstanceService = new ClientInstanceService(stores, config, new FakePrivateProjectChecker()); }); afterAll(async () => { await db.destroy(); }); test('Apps registered should be announced', async () => { expect.assertions(3); const clientRegistration = { appName: faker.internet.domainName(), instanceId: faker.string.uuid(), strategies: ['default'], started: Date.now(), interval: faker.number.int(), icon: '', description: faker.company.catchPhrase(), color: faker.color.rgb(), }; const differentClient = { appName: faker.string.uuid(), instanceId: faker.string.uuid(), strategies: ['default'], started: Date.now(), interval: faker.number.int(), icon: '', description: faker.company.catchPhrase(), color: faker.color.rgb(), }; await clientInstanceService.registerBackendClient(clientRegistration, '127.0.0.1'); await clientInstanceService.registerBackendClient(differentClient, '127.0.0.1'); await clientInstanceService.bulkAdd(); // in prod called by a SchedulerService const first = await stores.clientApplicationsStore.getUnannounced(); expect(first.length).toBe(2); await clientInstanceService.registerBackendClient(clientRegistration, '127.0.0.1'); await clientInstanceService.announceUnannounced(); // in prod called by a SchedulerService const second = await stores.clientApplicationsStore.getUnannounced(); expect(second.length).toBe(0); const events = await stores.eventStore.getEvents(); const appCreatedEvents = events.filter((e) => e.type === APPLICATION_CREATED); expect(appCreatedEvents.length).toBe(2); }); //# sourceMappingURL=client-metrics-service.e2e.test.js.map