1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-06-09 01:17:06 +02:00

Export import flag (#2866)

Export import flag
This commit is contained in:
sjaanus 2023-01-11 09:23:47 +02:00 committed by GitHub
parent 11d5a157c4
commit 6c9ef53ea4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 28 additions and 2 deletions

View File

@ -72,6 +72,7 @@ exports[`should create default config 1`] = `
"batchMetrics": false, "batchMetrics": false,
"embedProxy": true, "embedProxy": true,
"embedProxyFrontend": true, "embedProxyFrontend": true,
"featuresExportImport": false,
"maintenance": false, "maintenance": false,
"maintenanceMode": false, "maintenanceMode": false,
"messageBanner": false, "messageBanner": false,
@ -89,6 +90,7 @@ exports[`should create default config 1`] = `
"batchMetrics": false, "batchMetrics": false,
"embedProxy": true, "embedProxy": true,
"embedProxyFrontend": true, "embedProxyFrontend": true,
"featuresExportImport": false,
"maintenance": false, "maintenance": false,
"maintenanceMode": false, "maintenanceMode": false,
"messageBanner": false, "messageBanner": false,

View File

@ -8,6 +8,7 @@ import { OpenApiService } from '../../services/openapi-service';
import ExportImportService, { import ExportImportService, {
IExportQuery, IExportQuery,
} from 'lib/services/export-import-service'; } from 'lib/services/export-import-service';
import { InvalidOperationError } from '../../error';
class ExportImportController extends Controller { class ExportImportController extends Controller {
private logger: Logger; private logger: Logger;
@ -50,10 +51,19 @@ class ExportImportController extends Controller {
req: Request<unknown, unknown, IExportQuery, unknown>, req: Request<unknown, unknown, IExportQuery, unknown>,
res: Response, res: Response,
): Promise<void> { ): Promise<void> {
this.verifyExportImportEnabled();
const query = req.body; const query = req.body;
const data = await this.exportImportService.export(query); const data = await this.exportImportService.export(query);
res.json(data); res.json(data);
} }
private verifyExportImportEnabled() {
if (!this.config.flagResolver.isEnabled('featuresExportImport')) {
throw new InvalidOperationError(
'Feature export/import is not enabled',
);
}
}
} }
export default ExportImportController; export default ExportImportController;

View File

@ -50,6 +50,10 @@ const flags = {
process.env.UNLEASH_EXPERIMENTAL_SERVICE_ACCOUNTS, process.env.UNLEASH_EXPERIMENTAL_SERVICE_ACCOUNTS,
false, false,
), ),
featuresExportImport: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_FEATURES_EXPORT_IMPORT,
false,
),
}; };
export const defaultExperimentalOptions: IExperimentalOptions = { export const defaultExperimentalOptions: IExperimentalOptions = {

View File

@ -41,6 +41,7 @@ process.nextTick(async () => {
responseTimeWithAppName: true, responseTimeWithAppName: true,
variantsPerEnvironment: true, variantsPerEnvironment: true,
maintenance: false, maintenance: false,
featuresExportImport: true,
}, },
}, },
authentication: { authentication: {

View File

@ -1,4 +1,7 @@
import { IUnleashTest, setupApp } from '../../helpers/test-helper'; import {
IUnleashTest,
setupAppWithCustomConfig,
} from '../../helpers/test-helper';
import dbInit, { ITestDb } from '../../helpers/database-init'; import dbInit, { ITestDb } from '../../helpers/database-init';
import getLogger from '../../../fixtures/no-logger'; import getLogger from '../../../fixtures/no-logger';
import { IEventStore } from 'lib/types/stores/event-store'; import { IEventStore } from 'lib/types/stores/event-store';
@ -31,7 +34,13 @@ const createToggle = async (
beforeAll(async () => { beforeAll(async () => {
db = await dbInit('export_import_api_serial', getLogger); db = await dbInit('export_import_api_serial', getLogger);
app = await setupApp(db.stores); app = await setupAppWithCustomConfig(db.stores, {
experimental: {
flags: {
featuresExportImport: true,
},
},
});
eventStore = db.stores.eventStore; eventStore = db.stores.eventStore;
}); });