From fa9529a1c93bb3908f7e20b98d52849117bd62e6 Mon Sep 17 00:00:00 2001 From: kakha urigashvili Date: Tue, 29 Sep 2020 09:27:54 -0700 Subject: [PATCH] fix: error in metric client when env profile is used and .ask holder exists --- lib/clients/metric-client/index.js | 3 +++ test/unit/clients/metric-client-test.js | 27 +++++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/lib/clients/metric-client/index.js b/lib/clients/metric-client/index.js index e7852d46..32c20b21 100644 --- a/lib/clients/metric-client/index.js +++ b/lib/clients/metric-client/index.js @@ -1,6 +1,7 @@ const uuid = require('uuid/v4'); const axios = require('axios'); const AppConfig = require('@src/model/app-config'); +const profileHelper = require('@src/utils/profile-helper'); const { METRICS } = require('@src/utils/constants'); const pck = require('../../../package.json'); @@ -150,6 +151,7 @@ class MetricClient { } _isEnabled() { + if (profileHelper.isEnvProfile()) return true; if (process.env.ASK_SHARE_USAGE === 'false') return false; if (!AppConfig.configFileExists()) return false; @@ -159,6 +161,7 @@ class MetricClient { _getMachineId() { if (!this.enabled) return; + if (profileHelper.isEnvProfile()) return 'all_environmental'; const appConfig = AppConfig.getInstance(); if (!appConfig.getMachineId()) { appConfig.setMachineId(uuid()); diff --git a/test/unit/clients/metric-client-test.js b/test/unit/clients/metric-client-test.js index 9ccd6b54..4950492e 100644 --- a/test/unit/clients/metric-client-test.js +++ b/test/unit/clients/metric-client-test.js @@ -4,6 +4,7 @@ const chaiUuid = require('chai-uuid'); const chaiJsonSchema = require('chai-json-schema'); const sinon = require('sinon'); const { METRICS } = require('@src/utils/constants'); +const profileHelper = require('@src/utils/profile-helper'); const AppConfig = require('@src/model/app-config'); const { MetricClient, MetricActionResult } = require('@src/clients/metric-client'); const jsonSchema = require('@test/fixture/ask-devtools-metrics.schema.json'); @@ -17,6 +18,7 @@ describe('Clients test - cli metric client', () => { const getMachineIdStub = sinon.stub(); const setMachineIdStub = sinon.stub(); const writeConfigStub = sinon.stub(); + let isEnvProfileStub; let configExistsStub; let shareUsageVariableValue; @@ -24,6 +26,7 @@ describe('Clients test - cli metric client', () => { shareUsageVariableValue = process.env.ASK_SHARE_USAGE; delete process.env.ASK_SHARE_USAGE; configExistsStub = sinon.stub(AppConfig, 'configFileExists').returns(true); + isEnvProfileStub = sinon.stub(profileHelper, 'isEnvProfile').returns(false); sinon.stub(AppConfig.prototype, 'read'); sinon.stub(AppConfig, 'getInstance').returns({ getShareUsage: getShareUsageStub.returns(true), @@ -208,12 +211,11 @@ describe('Clients test - cli metric client', () => { it('| sends metrics, expect metrics not to be send to metric server when enabled is false', async () => { configExistsStub.returns(false); + client = new MetricClient(); httpClientPostStub = sinon.stub(client.httpClient, 'post'); - const disabledClient = new MetricClient(); - // call - const { success } = await disabledClient.sendData(); + const { success } = await client.sendData(); // verify expect(success).eql(true); @@ -222,18 +224,31 @@ describe('Clients test - cli metric client', () => { it('| sends metrics, expect metrics not to be send to metric server when ASK_SHARE_USAGE is false', async () => { process.env.ASK_SHARE_USAGE = false; + client = new MetricClient(); httpClientPostStub = sinon.stub(client.httpClient, 'post'); - const disabledClient = new MetricClient(); - // call - const { success } = await disabledClient.sendData(); + const { success } = await client.sendData(); // verify expect(success).eql(true); expect(httpClientPostStub.called).eql(false); }); + it('| sends metrics, expect metrics be send to metric server when using env profile', async () => { + isEnvProfileStub.returns(true); + client = new MetricClient(); + httpClientPostStub = sinon.stub(client.httpClient, 'post').resolves({}); + + // call + const { success } = await client.sendData(); + + // verify + expect(success).eql(true); + expect(httpClientPostStub.called).eql(true); + expect(httpClientPostStub.args[0][1]).contains('"machine_id":"all_environmental"'); + }); + it('| sends metrics, expect to retry on transmission error', async () => { httpClientPostStub = sinon.stub(client.httpClient, 'post').rejects();