From cf06b562f94e1b6a6fc2f027bf78c54d754756f6 Mon Sep 17 00:00:00 2001 From: olav Date: Fri, 1 Apr 2022 10:34:22 +0200 Subject: [PATCH] fix: allow instance ID to be empty for metrics (#1471) --- src/lib/routes/client-api/metrics.test.ts | 1 - src/lib/routes/client-api/register.test.ts | 13 +++++++++++++ src/lib/services/client-metrics/instance-service.ts | 5 +++-- src/lib/services/client-metrics/schema.ts | 4 ++-- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/lib/routes/client-api/metrics.test.ts b/src/lib/routes/client-api/metrics.test.ts index ea8b7a55ed..d589e53719 100644 --- a/src/lib/routes/client-api/metrics.test.ts +++ b/src/lib/routes/client-api/metrics.test.ts @@ -192,7 +192,6 @@ test('should set lastSeen on toggle', async () => { .post('/api/client/metrics') .send({ appName: 'demo', - instanceId: '1', bucket: { start: Date.now(), stop: Date.now(), diff --git a/src/lib/routes/client-api/register.test.ts b/src/lib/routes/client-api/register.test.ts index f6e6754977..49e55da352 100644 --- a/src/lib/routes/client-api/register.test.ts +++ b/src/lib/routes/client-api/register.test.ts @@ -83,3 +83,16 @@ test('should require strategies field', () => { }) .expect(400); }); + +test('should allow an empty instanceId field', () => { + expect.assertions(0); + return request + .post('/api/client/register') + .send({ + appName: 'demo', + strategies: ['default'], + started: Date.now(), + interval: 10, + }) + .expect(202); +}); diff --git a/src/lib/services/client-metrics/instance-service.ts b/src/lib/services/client-metrics/instance-service.ts index ab66a70be4..3a5d684ddb 100644 --- a/src/lib/services/client-metrics/instance-service.ts +++ b/src/lib/services/client-metrics/instance-service.ts @@ -18,6 +18,7 @@ import { clientRegisterSchema } from './schema'; import { minutesToMilliseconds, secondsToMilliseconds } from 'date-fns'; import { IClientMetricsStoreV2 } from '../../types/stores/client-metrics-store-v2'; import { clientMetricsSchema } from './schema'; +import { PartialSome } from '../../types/partial'; export default class ClientInstanceService { apps = {}; @@ -90,7 +91,7 @@ export default class ClientInstanceService { } public async registerInstance( - data: IClientApp, + data: PartialSome, clientIp: string, ): Promise { const value = await clientMetricsSchema.validateAsync(data); @@ -103,7 +104,7 @@ export default class ClientInstanceService { } public async registerClient( - data: IClientApp, + data: PartialSome, clientIp: string, ): Promise { const value = await clientRegisterSchema.validateAsync(data); diff --git a/src/lib/services/client-metrics/schema.ts b/src/lib/services/client-metrics/schema.ts index f694233c3e..2458c734b4 100644 --- a/src/lib/services/client-metrics/schema.ts +++ b/src/lib/services/client-metrics/schema.ts @@ -15,7 +15,7 @@ export const clientMetricsSchema = joi .keys({ environment: joi.string().optional(), appName: joi.string().required(), - instanceId: joi.string().required(), + instanceId: joi.string().default('default'), bucket: joi .object() .required() @@ -48,7 +48,7 @@ export const clientRegisterSchema = joi .options({ stripUnknown: true }) .keys({ appName: joi.string().required(), - instanceId: joi.string().required(), + instanceId: joi.string().default('default'), sdkVersion: joi.string().optional(), strategies: joi .array()