Skip to content

Commit

Permalink
feat: default session id in frontend api (#5083)
Browse files Browse the repository at this point in the history
  • Loading branch information
kwasniew authored Oct 18, 2023
1 parent f8fba50 commit 1f8d12b
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/lib/services/proxy-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,19 @@ export class ProxyService {
const client = await this.clientForProxyToken(token);
const definitions = client.getFeatureToggleDefinitions() || [];

const sessionId = context.sessionId || String(Math.random());

return definitions
.filter((feature) => client.isEnabled(feature.name, context))
.filter((feature) =>
client.isEnabled(feature.name, { ...context, sessionId }),
)
.map((feature) => ({
name: feature.name,
enabled: Boolean(feature.enabled),
variant: client.forceGetVariant(feature.name, context),
variant: client.getVariant(feature.name, {
...context,
sessionId,
}),
impressionData: Boolean(feature.impressionData),
}));
}
Expand Down
40 changes: 40 additions & 0 deletions src/test/e2e/api/proxy/proxy.e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1236,3 +1236,43 @@ test('should return 204 if metrics are disabled', async () => {
})
.expect(204);
});

test('should resolve variable rollout percentage consistently', async () => {
const frontendToken = await createApiToken(ApiTokenType.FRONTEND);
await createFeatureToggle({
name: 'randomFeature',
enabled: true,
strategies: [
{
name: 'flexibleRollout',
constraints: [],
parameters: {
rollout: '50',
stickiness: 'default',
groupId: 'some-new',
},
variants: [
{
name: 'a',
stickiness: 'default',
weightType: 'variable',
weight: 1000,
},
],
},
],
});

for (let i = 0; i < 10; ++i) {
const { body } = await app.request
.get('/api/frontend')
.set('Authorization', frontendToken.secret)
.expect('Content-Type', /json/)
.expect(200);

if (body.toggles.length > 0) {
// disabled variant should not be possible for enabled toggles
expect(body.toggles[0].variant.name).toBe('a');
}
}
});

0 comments on commit 1f8d12b

Please sign in to comment.