mirror of
https://github.com/Unleash/unleash.git
synced 2025-04-19 01:17:18 +02:00
fix: Add admin api for context-field definitions
This commit is contained in:
parent
c86c035c6c
commit
c9c26e249c
@ -27,6 +27,7 @@ function defaultOptions() {
|
|||||||
importFile: undefined,
|
importFile: undefined,
|
||||||
dropBeforeImport: false,
|
dropBeforeImport: false,
|
||||||
getLogger: defaultLogProvider,
|
getLogger: defaultLogProvider,
|
||||||
|
customContextFields: [],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,9 @@
|
|||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"uri": "/api/admin/state"
|
"uri": "/api/admin/state"
|
||||||
|
},
|
||||||
|
"context": {
|
||||||
|
"uri": "/api/admin/context"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
27
lib/routes/admin-api/context.js
Normal file
27
lib/routes/admin-api/context.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../controller');
|
||||||
|
|
||||||
|
const builtInContextFields = [
|
||||||
|
{ name: 'environment' },
|
||||||
|
{ name: 'userId' },
|
||||||
|
{ name: 'appName' },
|
||||||
|
];
|
||||||
|
|
||||||
|
class ContextController extends Controller {
|
||||||
|
constructor(config) {
|
||||||
|
super(config);
|
||||||
|
this.contextFields = builtInContextFields.concat(
|
||||||
|
config.customContextFields
|
||||||
|
);
|
||||||
|
this.get('/', this.getContextFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
getContextFields(req, res) {
|
||||||
|
res.status(200)
|
||||||
|
.json(this.contextFields)
|
||||||
|
.end();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = ContextController;
|
42
lib/routes/admin-api/context.test.js
Normal file
42
lib/routes/admin-api/context.test.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const test = require('ava');
|
||||||
|
const store = require('./../../../test/fixtures/store');
|
||||||
|
const getLogger = require('../../../test/fixtures/no-logger');
|
||||||
|
const supertest = require('supertest');
|
||||||
|
const getApp = require('../../app');
|
||||||
|
|
||||||
|
const { EventEmitter } = require('events');
|
||||||
|
const eventBus = new EventEmitter();
|
||||||
|
|
||||||
|
function getSetup() {
|
||||||
|
const base = `/random${Math.round(Math.random() * 1000)}`;
|
||||||
|
const stores = store.createStores();
|
||||||
|
const app = getApp({
|
||||||
|
baseUriPath: base,
|
||||||
|
stores,
|
||||||
|
eventBus,
|
||||||
|
extendedPermissions: false,
|
||||||
|
customContextFields: [{ name: 'tenantId' }],
|
||||||
|
getLogger,
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
base,
|
||||||
|
request: supertest(app),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
test('should get context definition', t => {
|
||||||
|
t.plan(2);
|
||||||
|
const { request, base } = getSetup();
|
||||||
|
return request
|
||||||
|
.get(`${base}/api/admin/context`)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.expect(200)
|
||||||
|
.expect(res => {
|
||||||
|
t.true(res.body.length === 4);
|
||||||
|
const envField = res.body.find(c => c.name === 'environment');
|
||||||
|
t.true(envField.name === 'environment');
|
||||||
|
});
|
||||||
|
});
|
@ -8,6 +8,7 @@ const StrategyController = require('./strategy');
|
|||||||
const MetricsController = require('./metrics');
|
const MetricsController = require('./metrics');
|
||||||
const UserController = require('./user');
|
const UserController = require('./user');
|
||||||
const ConfigController = require('./config');
|
const ConfigController = require('./config');
|
||||||
|
const ContextController = require('./context');
|
||||||
const StateController = require('./state');
|
const StateController = require('./state');
|
||||||
const apiDef = require('./api-def.json');
|
const apiDef = require('./api-def.json');
|
||||||
|
|
||||||
@ -23,6 +24,7 @@ class AdminApi extends Controller {
|
|||||||
this.app.use('/metrics', new MetricsController(config).router);
|
this.app.use('/metrics', new MetricsController(config).router);
|
||||||
this.app.use('/user', new UserController(config).router);
|
this.app.use('/user', new UserController(config).router);
|
||||||
this.app.use('/ui-config', new ConfigController(config).router);
|
this.app.use('/ui-config', new ConfigController(config).router);
|
||||||
|
this.app.use('/context', new ContextController(config).router);
|
||||||
this.app.use('/state', new StateController(config).router);
|
this.app.use('/state', new StateController(config).router);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,9 @@ class RegisterController extends Controller {
|
|||||||
await this.clientApplicationsStore.upsert(clientRegistration);
|
await this.clientApplicationsStore.upsert(clientRegistration);
|
||||||
await this.clientInstanceStore.insert(clientRegistration);
|
await this.clientInstanceStore.insert(clientRegistration);
|
||||||
this.logger.info(
|
this.logger.info(
|
||||||
`New client registered with appName=${clientRegistration.appName} and instanceId=${clientRegistration.instanceId}`
|
`New client registered with appName=${
|
||||||
|
clientRegistration.appName
|
||||||
|
} and instanceId=${clientRegistration.instanceId}`
|
||||||
);
|
);
|
||||||
return res.status(202).end();
|
return res.status(202).end();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
Loading…
Reference in New Issue
Block a user