From 6fa4adb67a42158ba9ffd8caf9370f840511090e Mon Sep 17 00:00:00 2001 From: andreas-unleash Date: Thu, 2 Mar 2023 23:10:41 +0200 Subject: [PATCH] fix: Return all toggles when env var is set and flag is on Signed-off-by: andreas-unleash --- src/lib/__snapshots__/create-config.test.ts.snap | 2 ++ src/lib/routes/proxy-api/index.ts | 12 +++++++----- src/lib/types/experimental.ts | 6 +++++- src/test/e2e/api/proxy/proxy.e2e.test.ts | 9 +++++---- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/lib/__snapshots__/create-config.test.ts.snap b/src/lib/__snapshots__/create-config.test.ts.snap index 2c650e6b8a..842982b75c 100644 --- a/src/lib/__snapshots__/create-config.test.ts.snap +++ b/src/lib/__snapshots__/create-config.test.ts.snap @@ -82,6 +82,7 @@ exports[`should create default config 1`] = ` "proPlanAutoCharge": false, "projectStatusApi": false, "proxyReturnAllToggles": false, + "proxyReturnAllTogglesKillSwitch": false, "responseTimeWithAppNameKillSwitch": false, "showProjectApiAccess": false, "strictSchemaValidation": false, @@ -104,6 +105,7 @@ exports[`should create default config 1`] = ` "proPlanAutoCharge": false, "projectStatusApi": false, "proxyReturnAllToggles": false, + "proxyReturnAllTogglesKillSwitch": false, "responseTimeWithAppNameKillSwitch": false, "showProjectApiAccess": false, "strictSchemaValidation": false, diff --git a/src/lib/routes/proxy-api/index.ts b/src/lib/routes/proxy-api/index.ts index cd82a1d01e..4c5577acd1 100644 --- a/src/lib/routes/proxy-api/index.ts +++ b/src/lib/routes/proxy-api/index.ts @@ -20,7 +20,6 @@ import { import { Context } from 'unleash-client'; import { enrichContextWithIp } from '../../proxy'; import { corsOriginMiddleware } from '../../middleware'; -import * as process from 'process'; interface ApiUserRequest< PARAM = any, @@ -146,10 +145,13 @@ export default class ProxyController extends Controller { res: Response, ) { let toggles; - if ( - this.flagResolver.isEnabled('proxyReturnAllToggles') && - Boolean(process.env.RETURN_ALL_TOGGLES) - ) { + const releaseFlag = this.flagResolver.isEnabled( + 'proxyReturnAllTogglesKillSwitch', + ); + const featureflag = this.flagResolver.isEnabled( + 'proxyReturnAllToggles', + ); + if (releaseFlag && featureflag) { toggles = await this.services.proxyService.getAllProxyFeatures( req.user, ProxyController.createContext(req), diff --git a/src/lib/types/experimental.ts b/src/lib/types/experimental.ts index 2bafbb3fc1..1f2de08a2b 100644 --- a/src/lib/types/experimental.ts +++ b/src/lib/types/experimental.ts @@ -26,8 +26,12 @@ const flags = { process.env.UNLEASH_RESPONSE_TIME_WITH_APP_NAME_KILL_SWITCH, false, ), + proxyReturnAllTogglesKillSwitch: parseEnvVarBoolean( + process.env.UNLEASH_EXPERIMENTAL_PROXY_RETURN_ALL_TOGGLES_KILL_SWITCH, + false, + ), proxyReturnAllToggles: parseEnvVarBoolean( - process.env.UNLEASH_EXPERIMENTAL_PROXY_RETURN_ALL_TOGGLES, + process.env.UNLEASH_PROXY_RETURN_ALL_TOGGLES, false, ), maintenanceMode: parseEnvVarBoolean( diff --git a/src/test/e2e/api/proxy/proxy.e2e.test.ts b/src/test/e2e/api/proxy/proxy.e2e.test.ts index 0a7bfe8267..8b51e51cd2 100644 --- a/src/test/e2e/api/proxy/proxy.e2e.test.ts +++ b/src/test/e2e/api/proxy/proxy.e2e.test.ts @@ -934,8 +934,8 @@ test('Should not recursively set off timers on events', async () => { }); test('should return all features when specified', async () => { + app.config.experimental.flags.proxyReturnAllTogglesKillSwitch = true; app.config.experimental.flags.proxyReturnAllToggles = true; - process.env.RETURN_ALL_TOGGLES = 'true'; const frontendToken = await createApiToken(ApiTokenType.FRONTEND); await createFeatureToggle({ name: 'enabledFeature1', @@ -972,6 +972,7 @@ test('should return all features when specified', async () => { }, ], }); + await app.request .get('/api/frontend') .set('Authorization', frontendToken.secret) @@ -1001,11 +1002,11 @@ test('should return all features when specified', async () => { ], }); }); - process.env.RETURN_ALL_TOGGLES = 'false'; }); -test('should return all features when env var is set only', async () => { - app.config.experimental.flags.proxyReturnAllToggles = true; +test('should return all features when both feature flags are set only', async () => { + app.config.experimental.flags.proxyReturnAllTogglesKillSwitch = true; + app.config.experimental.flags.proxyReturnAllToggles = false; const frontendToken = await createApiToken(ApiTokenType.FRONTEND); await createFeatureToggle({ name: 'enabledFeature1',