diff --git a/src/lib/__snapshots__/create-config.test.ts.snap b/src/lib/__snapshots__/create-config.test.ts.snap index 4fe95a3cd2..90f9fe4ea2 100644 --- a/src/lib/__snapshots__/create-config.test.ts.snap +++ b/src/lib/__snapshots__/create-config.test.ts.snap @@ -108,7 +108,6 @@ exports[`should create default config 1`] = ` "proPlanAutoCharge": false, "responseTimeWithAppNameKillSwitch": false, "scheduledConfigurationChanges": false, - "separateAdminClientApi": false, "strictSchemaValidation": false, "useLastSeenRefactor": false, "variantTypeNumber": false, diff --git a/src/lib/features/client-feature-toggles/client-feature-toggle.controller.ts b/src/lib/features/client-feature-toggles/client-feature-toggle.controller.ts index 9e2b6283e9..ee83e6d9bd 100644 --- a/src/lib/features/client-feature-toggles/client-feature-toggle.controller.ts +++ b/src/lib/features/client-feature-toggles/client-feature-toggle.controller.ts @@ -161,15 +161,8 @@ export default class FeatureController extends Controller { private async resolveFeaturesAndSegments( query?: IFeatureToggleQuery, ): Promise<[FeatureConfigurationClient[], IClientSegment[]]> { - if (this.flagResolver.isEnabled('separateAdminClientApi')) { - return Promise.all([ - this.clientFeatureToggleService.getClientFeatures(query), - this.segmentService.getActiveForClient(), - ]); - } - return Promise.all([ - this.featureToggleService.getClientFeatures(query), + this.clientFeatureToggleService.getClientFeatures(query), this.segmentService.getActiveForClient(), ]); } @@ -310,13 +303,9 @@ export default class FeatureController extends Controller { const featureQuery = await this.resolveQuery(req); const q = { ...featureQuery, namePrefix: name }; - let toggles = await this.featureToggleService.getClientFeatures(q); - - if (this.flagResolver.isEnabled('separateAdminClientApi')) { - toggles = await this.clientFeatureToggleService.getClientFeatures( - q, - ); - } + const toggles = await this.clientFeatureToggleService.getClientFeatures( + q, + ); const toggle = toggles.find((t) => t.name === name); if (!toggle) { diff --git a/src/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.ts b/src/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.ts index 18f6767935..6f7aa935fa 100644 --- a/src/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.ts +++ b/src/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.ts @@ -187,53 +187,3 @@ test('should return correct data structure from /api/client/features', async () expect(result.body.features).toEqual(apiClientResponse); }); - -test('should return correct data structure from /api/client/features | separateAdminClientApi', async () => { - const appWithFeatureFlag = await setupAppWithCustomConfig( - db.stores, - { - experimental: { - flags: { - strictSchemaValidation: true, - dependentFeatures: true, - separateAdminClientApi: true, - }, - }, - }, - db.rawDatabase, - ); - - await db.rawDatabase.raw('DELETE FROM features'); - - await appWithFeatureFlag.createFeature('test1', 'default'); - await appWithFeatureFlag.createFeature('test2', 'default'); - - await appWithFeatureFlag.addStrategyToFeatureEnv( - { - name: 'flexibleRollout', - constraints: [], - parameters: { rollout: '100' }, - }, - DEFAULT_ENV, - 'test1', - ); - - await appWithFeatureFlag.addStrategyToFeatureEnv( - { - name: 'default', - constraints: [ - { contextName: 'userId', operator: 'IN', values: ['123'] }, - ], - parameters: {}, - }, - DEFAULT_ENV, - 'test2', - ); - - const result = await appWithFeatureFlag.request - .get('/api/client/features') - .expect('Content-Type', /json/) - .expect(200); - - expect(result.body.features).toEqual(apiClientResponse); -}); diff --git a/src/lib/features/feature-toggle/feature-toggle-service.ts b/src/lib/features/feature-toggle/feature-toggle-service.ts index 36c79cd84f..9e665cde69 100644 --- a/src/lib/features/feature-toggle/feature-toggle-service.ts +++ b/src/lib/features/feature-toggle/feature-toggle-service.ts @@ -1048,16 +1048,9 @@ class FeatureToggleService { async getPlaygroundFeatures( query?: IFeatureToggleQuery, ): Promise { - // Remove with with feature flag - const [featuresFromClientStore, featuresFromFeatureToggleStore] = - await Promise.all([ - await this.clientFeatureToggleStore.getPlayground(query || {}), - await this.featureToggleStore.getPlaygroundFeatures(query), - ]); - - const features = this.flagResolver.isEnabled('separateAdminClientApi') - ? featuresFromFeatureToggleStore - : featuresFromClientStore; + const features = await this.featureToggleStore.getPlaygroundFeatures( + query, + ); return features as FeatureConfigurationClient[]; } @@ -1076,23 +1069,11 @@ class FeatureToggleService { archived: boolean = false, ): Promise { // Remove with with feature flag - const [featuresFromClientStore, featuresFromFeatureToggleStore] = - await Promise.all([ - (await this.clientFeatureToggleStore.getAdmin({ - featureQuery: query, - userId: userId, - archived: false, - })) as FeatureToggle[], - await this.featureToggleStore.getFeatureToggleList( - query, - userId, - archived, - ), - ]); - - const features = this.flagResolver.isEnabled('separateAdminClientApi') - ? featuresFromFeatureToggleStore - : featuresFromClientStore; + const features = await this.featureToggleStore.getFeatureToggleList( + query, + userId, + archived, + ); if (this.flagResolver.isEnabled('privateProjects') && userId) { const projectAccess = diff --git a/src/lib/features/feature-toggle/tests/feature-toggle-last-seen-at.e2e.test.ts b/src/lib/features/feature-toggle/tests/feature-toggle-last-seen-at.e2e.test.ts index 3180e395d2..85225f4aef 100644 --- a/src/lib/features/feature-toggle/tests/feature-toggle-last-seen-at.e2e.test.ts +++ b/src/lib/features/feature-toggle/tests/feature-toggle-last-seen-at.e2e.test.ts @@ -23,7 +23,6 @@ beforeAll(async () => { flags: { strictSchemaValidation: true, dependentFeatures: true, - separateAdminClientApi: true, useLastSeenRefactor: true, }, }, diff --git a/src/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.ts b/src/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.ts index 510b56493c..974c51c45e 100644 --- a/src/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.ts +++ b/src/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.ts @@ -38,7 +38,9 @@ const irrelevantDate = new Date(); beforeAll(async () => { const config = createTestConfig({ - experimental: { flags: { featureNamingPattern: true } }, + experimental: { + flags: { featureNamingPattern: true, playgroundImprovements: true }, + }, }); db = await dbInit( 'feature_toggle_service_v2_service_serial', @@ -690,75 +692,3 @@ test('Should return last seen at per environment', async () => { new Date(lastSeenAtStoreDate), ); }); - -test('Should return same object for /api/admin/features | separateAdminClientApi', async () => { - const featureName = 'same-object-for-features'; - const projectId = 'default'; - - const userName = 'same-object-user'; - - await service.createFeatureToggle( - projectId, - { - name: featureName, - }, - userName, - ); - - const data = await service.getFeatureToggles(); - - // Test with feature flag on - const config = createTestConfig({ - experimental: { flags: { useLastSeenRefactor: true } }, - }); - - const featureService = await createFeatureToggleService( - db.rawDatabase, - config, - ); - - const toggledData = await featureService.getFeatureToggles(); - - const foundToggleOne = data.find((feature) => feature.name === featureName); - const foundToggleTwo = toggledData.find( - (feature) => feature.name === featureName, - ); - - expect(foundToggleOne).toEqual(foundToggleTwo); -}); - -test('Should return same object for playground | separateAdminClientApi', async () => { - const featureName = 'same-object-for-playground'; - const projectId = 'default'; - - const userName = 'same-object-user-playground'; - - await service.createFeatureToggle( - projectId, - { - name: featureName, - }, - userName, - ); - - const data = await service.getPlaygroundFeatures(); - - // Test with feature flag on - const config = createTestConfig({ - experimental: { flags: { useLastSeenRefactor: true } }, - }); - - const featureService = await createFeatureToggleService( - db.rawDatabase, - config, - ); - - const toggledData = await featureService.getPlaygroundFeatures(); - - const foundToggleOne = data.find((feature) => feature.name === featureName); - const foundToggleTwo = toggledData.find( - (feature) => feature.name === featureName, - ); - - expect(foundToggleOne).toEqual(foundToggleTwo); -}); diff --git a/src/lib/features/playground/advanced-playground.test.ts b/src/lib/features/playground/advanced-playground.test.ts index cc44509c4f..6ecab21c1d 100644 --- a/src/lib/features/playground/advanced-playground.test.ts +++ b/src/lib/features/playground/advanced-playground.test.ts @@ -27,7 +27,6 @@ beforeAll(async () => { dependentFeatures: true, playgroundImprovements: true, useLastSeenRefactor: true, - separateAdminClientApi: true, }, }, }, diff --git a/src/lib/types/experimental.ts b/src/lib/types/experimental.ts index 29d81c82ba..690d584c5a 100644 --- a/src/lib/types/experimental.ts +++ b/src/lib/types/experimental.ts @@ -31,7 +31,6 @@ export type IFlagKey = | 'disableMetrics' | 'useLastSeenRefactor' | 'banners' - | 'separateAdminClientApi' | 'disableEnvsOnRevive' | 'playgroundImprovements' | 'featureSwitchRefactor' @@ -149,10 +148,6 @@ const flags: IFlags = { process.env.UNLEASH_EXPERIMENTAL_BANNERS, false, ), - separateAdminClientApi: parseEnvVarBoolean( - process.env.UNLEASH_EXPERIMENTAL_SEPARATE_ADMIN_CLIENT_API, - false, - ), disableEnvsOnRevive: parseEnvVarBoolean( process.env.UNLEASH_EXPERIMENTAL_DISABLE_ENVS_ON_REVIVE, false, diff --git a/src/server-dev.ts b/src/server-dev.ts index 16bb08e93d..44ffd4c1e3 100644 --- a/src/server-dev.ts +++ b/src/server-dev.ts @@ -45,7 +45,6 @@ process.nextTick(async () => { dependentFeatures: true, useLastSeenRefactor: true, disableEnvsOnRevive: true, - separateAdminClientApi: true, playgroundImprovements: true, featureSwitchRefactor: true, featureSearchAPI: true,