1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-05-22 01:16:07 +02:00

Should not be allow creation of archived toggle

closes #284
This commit is contained in:
ivaosthu 2017-12-18 09:08:04 +01:00 committed by Ivar Conradi Østhus
parent ff261047df
commit 4999bb93cf
4 changed files with 31 additions and 6 deletions

View File

@ -51,6 +51,14 @@ class FeatureToggleStore {
.then(this.rowToFeature); .then(this.rowToFeature);
} }
hasFeatureName(name) {
return this.db
.first('name')
.from(TABLE)
.where({ name })
.then(n => !!n);
}
getArchivedFeatures() { getArchivedFeatures() {
return this.db return this.db
.select(FEATURE_COLUMNS) .select(FEATURE_COLUMNS)

View File

@ -97,12 +97,13 @@ module.exports.router = function(config) {
function validateUniqueName(req) { function validateUniqueName(req) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
featureToggleStore featureToggleStore.hasFeatureName(req.body.name).then(hasName => {
.getFeature(req.body.name) if (hasName) {
.then(() => reject(new NameExistsError('Feature name already exist'));
reject(new NameExistsError('Feature name already exist')) } else {
) resolve(req);
.catch(() => resolve(req)); }
});
}); });
} }

View File

@ -193,3 +193,18 @@ test.serial(
.then(destroy); .then(destroy);
} }
); );
test.serial('should not be possible to create archived toggle', async t => {
t.plan(0);
const { request, destroy } = await setupApp('feature_api_serial');
return request
.post('/api/admin/features')
.send({
name: 'featureArchivedX',
enabled: false,
strategies: [{ name: 'default' }],
})
.set('Content-Type', 'application/json')
.expect(403)
.then(destroy);
});

View File

@ -12,6 +12,7 @@ module.exports = () => {
} }
}, },
getFeatures: () => Promise.resolve(_features), getFeatures: () => Promise.resolve(_features),
hasFeatureName: () => Promise.resolve(false),
addFeature: feature => _features.push(feature), addFeature: feature => _features.push(feature),
}; };
}; };