Skip to content

Commit

Permalink
feat: add configuration option for disabling legacy api
Browse files Browse the repository at this point in the history
  • Loading branch information
FredrikOseberg authored and ivarconr committed Jan 11, 2022
1 parent 979d786 commit a3e448a
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 5 deletions.
5 changes: 5 additions & 0 deletions src/lib/create-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,10 @@ export function createConfig(options: IUnleashOptions): IUnleashConfig {
const enableOAS =
options.enableOAS || safeBoolean(process.env.ENABLE_OAS, false);

const disableLegacyFeaturesApi =
options.disableLegacyFeaturesApi ||
safeBoolean(process.env.DISABLE_LEGACY_FEATURES_API, false);

return {
db,
session,
Expand All @@ -301,6 +305,7 @@ export function createConfig(options: IUnleashOptions): IUnleashConfig {
email,
secureHeaders,
enableOAS,
disableLegacyFeaturesApi,
preHook: options.preHook,
preRouterHook: options.preRouterHook,
eventHook: options.eventHook,
Expand Down
12 changes: 8 additions & 4 deletions src/lib/routes/admin-api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,14 @@ class AdminApi extends Controller {
super(config);

this.app.get('/', this.index);
this.app.use(
'/features',
new FeatureController(config, services).router,
);

if (!config.disableLegacyFeaturesApi) {
this.app.use(
'/features',
new FeatureController(config, services).router,
);
}

this.app.use(
'/feature-types',
new FeatureTypeController(config, services).router,
Expand Down
2 changes: 2 additions & 0 deletions src/lib/types/option.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ export interface IUnleashOptions {
preRouterHook?: Function;
eventHook?: EventHook;
enterpriseVersion?: string;
disableLegacyFeaturesApi?: boolean;
}

export interface IEmailOption {
Expand Down Expand Up @@ -156,4 +157,5 @@ export interface IUnleashConfig {
eventHook?: EventHook;
enterpriseVersion?: string;
eventBus: EventEmitter;
disableLegacyFeaturesApi?: boolean;
}
24 changes: 23 additions & 1 deletion src/test/e2e/api/admin/feature.e2e.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import faker from 'faker';
import { FeatureToggleDTO, IStrategyConfig, IVariant } from 'lib/types/model';
import dbInit, { ITestDb } from '../../helpers/database-init';
import { IUnleashTest, setupApp } from '../../helpers/test-helper';
import {
IUnleashTest,
setupApp,
setupAppWithCustomConfig,
} from '../../helpers/test-helper';
import getLogger from '../../../fixtures/no-logger';
import { DEFAULT_ENV } from '../../../../lib/util/constants';

Expand Down Expand Up @@ -680,3 +684,21 @@ test('marks feature toggle as stale', async () => {
expect(res.body.stale).toBe(true);
});
});

test('should not hit endpoints if disable configuration is set', async () => {
const appWithDisabledLegacyFeatures = await setupAppWithCustomConfig(
db.stores,
{
disableLegacyFeaturesApi: true,
},
);

await appWithDisabledLegacyFeatures.request
.get('/api/admin/features')
.expect(404);

return appWithDisabledLegacyFeatures.request
.get('/api/admin/features/featureX')
.expect('Content-Type', /json/)
.expect(404);
});

0 comments on commit a3e448a

Please sign in to comment.