@@ -278,12 +278,6 @@ test('should allow requests with a frontend token', async () => {
278
278
279
279
test ( 'should return 405 from unimplemented endpoints' , async ( ) => {
280
280
const frontendToken = await createApiToken ( ApiTokenType . FRONTEND ) ;
281
- await app . request
282
- . post ( '/api/frontend' )
283
- . send ( { } )
284
- . set ( 'Authorization' , frontendToken . secret )
285
- . expect ( 'Content-Type' , / j s o n / )
286
- . expect ( 405 ) ;
287
281
await app . request
288
282
. get ( '/api/frontend/client/features' )
289
283
. set ( 'Authorization' , frontendToken . secret )
@@ -1234,3 +1228,103 @@ test('should resolve variable rollout percentage consistently', async () => {
1234
1228
}
1235
1229
}
1236
1230
} ) ;
1231
+
1232
+ test ( 'should return enabled feature flags using POST' , async ( ) => {
1233
+ const frontendToken = await createApiToken ( ApiTokenType . FRONTEND ) ;
1234
+ await createFeatureToggle ( {
1235
+ name : 'enabledFeature1' ,
1236
+ enabled : true ,
1237
+ strategies : [ { name : 'default' , constraints : [ ] , parameters : { } } ] ,
1238
+ } ) ;
1239
+ await createFeatureToggle ( {
1240
+ name : 'enabledFeature2' ,
1241
+ enabled : true ,
1242
+ strategies : [ { name : 'default' , constraints : [ ] , parameters : { } } ] ,
1243
+ } ) ;
1244
+ await createFeatureToggle ( {
1245
+ name : 'disabledFeature' ,
1246
+ enabled : false ,
1247
+ strategies : [ { name : 'default' , constraints : [ ] , parameters : { } } ] ,
1248
+ } ) ;
1249
+ await frontendApiService . refreshData ( ) ;
1250
+ await app . request
1251
+ . post ( '/api/frontend' )
1252
+ . set ( 'Authorization' , frontendToken . secret )
1253
+ . set ( 'Content-Type' , 'application/json' )
1254
+ . send ( )
1255
+ . expect ( 'Content-Type' , / j s o n / )
1256
+ . expect ( 200 )
1257
+ . expect ( ( res ) => {
1258
+ expect ( res . body ) . toEqual ( {
1259
+ toggles : [
1260
+ {
1261
+ name : 'enabledFeature1' ,
1262
+ enabled : true ,
1263
+ impressionData : false ,
1264
+ variant : {
1265
+ enabled : false ,
1266
+ name : 'disabled' ,
1267
+ feature_enabled : true ,
1268
+ featureEnabled : true ,
1269
+ } ,
1270
+ } ,
1271
+ {
1272
+ name : 'enabledFeature2' ,
1273
+ enabled : true ,
1274
+ impressionData : false ,
1275
+ variant : {
1276
+ enabled : false ,
1277
+ name : 'disabled' ,
1278
+ feature_enabled : true ,
1279
+ featureEnabled : true ,
1280
+ } ,
1281
+ } ,
1282
+ ] ,
1283
+ } ) ;
1284
+ } ) ;
1285
+ } ) ;
1286
+
1287
+ test ( 'should return enabled feature flags based on context using POST' , async ( ) => {
1288
+ const frontendToken = await createApiToken ( ApiTokenType . FRONTEND ) ;
1289
+ const featureName = 'featureWithEnvironmentConstraint' ;
1290
+ await createFeatureToggle ( {
1291
+ name : featureName ,
1292
+ enabled : true ,
1293
+ strategies : [
1294
+ {
1295
+ name : 'default' ,
1296
+ constraints : [
1297
+ {
1298
+ contextName : 'userId' ,
1299
+ operator : 'IN' ,
1300
+ values : [ '1337' ] ,
1301
+ } ,
1302
+ ] ,
1303
+ parameters : { } ,
1304
+ } ,
1305
+ ] ,
1306
+ } ) ;
1307
+
1308
+ await frontendApiService . refreshData ( ) ;
1309
+ await app . request
1310
+ . post ( '/api/frontend' )
1311
+ . set ( 'Authorization' , frontendToken . secret )
1312
+ . set ( 'Content-Type' , 'application/json' )
1313
+ . send ( { context : { userId : '1337' } } )
1314
+ . expect ( 'Content-Type' , / j s o n / )
1315
+ . expect ( 200 )
1316
+ . expect ( ( res ) => {
1317
+ expect ( res . body . toggles ) . toHaveLength ( 1 ) ;
1318
+ expect ( res . body . toggles [ 0 ] . name ) . toBe ( featureName ) ;
1319
+ } ) ;
1320
+
1321
+ await app . request
1322
+ . post ( '/api/frontend' )
1323
+ . set ( 'Authorization' , frontendToken . secret )
1324
+ . send ( { context : { appName : 'test' , userId : '42' } } )
1325
+ . expect ( 'Content-Type' , / j s o n / )
1326
+ . expect ( 200 )
1327
+ . expect ( ( res ) => {
1328
+ expect ( res . body . toggles ) . toHaveLength ( 0 ) ;
1329
+ } ) ;
1330
+ } ) ;
0 commit comments