1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-04-10 01:16:39 +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,
"embedProxy": true,
"embedProxyFrontend": true,
"featuresExportImport": false,
"maintenance": false,
"maintenanceMode": false,
"messageBanner": false,
@ -89,6 +90,7 @@ exports[`should create default config 1`] = `
"batchMetrics": false,
"embedProxy": true,
"embedProxyFrontend": true,
"featuresExportImport": false,
"maintenance": false,
"maintenanceMode": false,
"messageBanner": false,

View File

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

View File

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

View File

@ -41,6 +41,7 @@ process.nextTick(async () => {
responseTimeWithAppName: true,
variantsPerEnvironment: true,
maintenance: false,
featuresExportImport: true,
},
},
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 getLogger from '../../../fixtures/no-logger';
import { IEventStore } from 'lib/types/stores/event-store';
@ -31,7 +34,13 @@ const createToggle = async (
beforeAll(async () => {
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;
});