mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-28 00:06:53 +01:00
ccaab0c47b
Instead of instructing users to do static calls in to Unleash, she should instead be allwed to specify the log provider as an option to Unleash. This commit introduces the "getLogger" option, a function responsible for creating a logger.
145 lines
3.9 KiB
JavaScript
145 lines
3.9 KiB
JavaScript
'use strict';
|
|
|
|
const test = require('ava');
|
|
const store = require('./../../../test/fixtures/store');
|
|
const permissions = require('../../../test/fixtures/permissions');
|
|
const getLogger = require('../../../test/fixtures/no-logger');
|
|
const supertest = require('supertest');
|
|
const getApp = require('../../app');
|
|
const { UPDATE_APPLICATION } = require('../../permissions');
|
|
|
|
const { EventEmitter } = require('events');
|
|
const eventBus = new EventEmitter();
|
|
|
|
function getSetup() {
|
|
const stores = store.createStores();
|
|
const perms = permissions();
|
|
const app = getApp({
|
|
baseUriPath: '',
|
|
stores,
|
|
eventBus,
|
|
extendedPermissions: true,
|
|
preRouterHook: perms.hook,
|
|
getLogger,
|
|
});
|
|
|
|
return {
|
|
request: supertest(app),
|
|
stores,
|
|
perms,
|
|
};
|
|
}
|
|
|
|
test('should return seen toggles even when there is nothing', t => {
|
|
t.plan(1);
|
|
const { request } = getSetup();
|
|
return request
|
|
.get('/api/admin/metrics/seen-toggles')
|
|
.expect(200)
|
|
.expect(res => {
|
|
t.true(res.body.length === 0);
|
|
});
|
|
});
|
|
|
|
test('should return list of seen-toggles per app', t => {
|
|
t.plan(3);
|
|
const { request, stores } = getSetup();
|
|
const appName = 'asd!23';
|
|
stores.clientMetricsStore.emit('metrics', {
|
|
appName,
|
|
instanceId: 'instanceId',
|
|
bucket: {
|
|
start: new Date(),
|
|
stop: new Date(),
|
|
toggles: {
|
|
toggleX: { yes: 123, no: 0 },
|
|
toggleY: { yes: 123, no: 0 },
|
|
},
|
|
},
|
|
});
|
|
|
|
return request
|
|
.get('/api/admin/metrics/seen-toggles')
|
|
.expect(200)
|
|
.expect(res => {
|
|
const seenAppsWithToggles = res.body;
|
|
t.true(seenAppsWithToggles.length === 1);
|
|
t.true(seenAppsWithToggles[0].appName === appName);
|
|
t.true(seenAppsWithToggles[0].seenToggles.length === 2);
|
|
});
|
|
});
|
|
|
|
test('should return feature-toggles metrics even when there is nothing', t => {
|
|
t.plan(0);
|
|
const { request } = getSetup();
|
|
return request.get('/api/admin/metrics/feature-toggles').expect(200);
|
|
});
|
|
|
|
test('should return metrics for all toggles', t => {
|
|
t.plan(2);
|
|
const { request, stores } = getSetup();
|
|
const appName = 'asd!23';
|
|
stores.clientMetricsStore.emit('metrics', {
|
|
appName,
|
|
instanceId: 'instanceId',
|
|
bucket: {
|
|
start: new Date(),
|
|
stop: new Date(),
|
|
toggles: {
|
|
toggleX: { yes: 123, no: 0 },
|
|
toggleY: { yes: 123, no: 0 },
|
|
},
|
|
},
|
|
});
|
|
|
|
return request
|
|
.get('/api/admin/metrics/feature-toggles')
|
|
.expect(200)
|
|
.expect(res => {
|
|
const metrics = res.body;
|
|
t.true(metrics.lastHour !== undefined);
|
|
t.true(metrics.lastMinute !== undefined);
|
|
});
|
|
});
|
|
|
|
test('should return empty list of client applications', t => {
|
|
t.plan(1);
|
|
const { request } = getSetup();
|
|
|
|
return request
|
|
.get('/api/admin/metrics/applications')
|
|
.expect(200)
|
|
.expect(res => {
|
|
t.true(res.body.applications.length === 0);
|
|
});
|
|
});
|
|
|
|
test('should return applications', t => {
|
|
t.plan(2);
|
|
const { request, stores } = getSetup();
|
|
const appName = '123!23';
|
|
|
|
stores.clientApplicationsStore.upsert({ appName });
|
|
|
|
return request
|
|
.get(`/api/admin/metrics/applications/`)
|
|
.expect(200)
|
|
.expect(res => {
|
|
const metrics = res.body;
|
|
t.true(metrics.applications.length === 1);
|
|
t.true(metrics.applications[0].appName === appName);
|
|
});
|
|
});
|
|
|
|
test('should store application', t => {
|
|
t.plan(0);
|
|
const { request, perms } = getSetup();
|
|
const appName = '123!23';
|
|
perms.withPermissions(UPDATE_APPLICATION);
|
|
|
|
return request
|
|
.post(`/api/admin/metrics/applications/${appName}`)
|
|
.send({ appName, strategies: ['default'] })
|
|
.expect(202);
|
|
});
|