mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-25 00:07:47 +01:00
parent
4b4effda19
commit
5ad2e246e5
@ -6,6 +6,7 @@ const logger = require('../../logger')('/admin-api/archive.js');
|
|||||||
const { FEATURE_REVIVED } = require('../../event-type');
|
const { FEATURE_REVIVED } = require('../../event-type');
|
||||||
const ValidationError = require('../../error/validation-error');
|
const ValidationError = require('../../error/validation-error');
|
||||||
const validateRequest = require('../../error/validate-request');
|
const validateRequest = require('../../error/validate-request');
|
||||||
|
const extractUser = require('../../extract-user');
|
||||||
|
|
||||||
const handleErrors = (req, res, error) => {
|
const handleErrors = (req, res, error) => {
|
||||||
switch (error.constructor) {
|
switch (error.constructor) {
|
||||||
@ -33,11 +34,13 @@ module.exports.router = function(config) {
|
|||||||
router.post('/revive/:name', (req, res) => {
|
router.post('/revive/:name', (req, res) => {
|
||||||
req.checkParams('name', 'Name is required').notEmpty();
|
req.checkParams('name', 'Name is required').notEmpty();
|
||||||
|
|
||||||
|
const userName = extractUser(req);
|
||||||
|
|
||||||
validateRequest(req)
|
validateRequest(req)
|
||||||
.then(() =>
|
.then(() =>
|
||||||
eventStore.store({
|
eventStore.store({
|
||||||
type: FEATURE_REVIVED,
|
type: FEATURE_REVIVED,
|
||||||
createdBy: req.connection.remoteAddress,
|
createdBy: userName,
|
||||||
data: { name: req.params.name },
|
data: { name: req.params.name },
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
@ -20,6 +20,7 @@ function getSetup() {
|
|||||||
return {
|
return {
|
||||||
base,
|
base,
|
||||||
archiveStore: stores.featureToggleStore,
|
archiveStore: stores.featureToggleStore,
|
||||||
|
eventStore: stores.eventStore,
|
||||||
request: supertest(app),
|
request: supertest(app),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -67,3 +68,21 @@ test('should revive toggle', t => {
|
|||||||
|
|
||||||
return request.post(`${base}/api/admin/archive/revive/${name}`).expect(200);
|
return request.post(`${base}/api/admin/archive/revive/${name}`).expect(200);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should create event when reviving toggle', async t => {
|
||||||
|
t.plan(4);
|
||||||
|
const name = 'name1';
|
||||||
|
const { request, base, archiveStore, eventStore } = getSetup();
|
||||||
|
archiveStore.addArchivedFeature({
|
||||||
|
name,
|
||||||
|
strategies: [{ name: 'default' }],
|
||||||
|
});
|
||||||
|
|
||||||
|
await request.post(`${base}/api/admin/archive/revive/${name}`);
|
||||||
|
|
||||||
|
const events = await eventStore.getEvents();
|
||||||
|
t.is(events.length, 1);
|
||||||
|
t.is(events[0].type, 'feature-revived');
|
||||||
|
t.is(events[0].data.name, name);
|
||||||
|
t.is(events[0].createdBy, 'unknown');
|
||||||
|
});
|
||||||
|
15
test/fixtures/fake-event-store.js
vendored
15
test/fixtures/fake-event-store.js
vendored
@ -1,6 +1,13 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
module.exports = () => ({
|
module.exports = () => {
|
||||||
store: () => Promise.resolve(),
|
const events = [];
|
||||||
getEvents: () => Promise.resolve([]),
|
|
||||||
});
|
return {
|
||||||
|
store: event => {
|
||||||
|
events.push(event);
|
||||||
|
Promise.resolve();
|
||||||
|
},
|
||||||
|
getEvents: () => Promise.resolve(events),
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user