diff --git a/src/telemetry.ts b/src/telemetry.ts index 01d6f3af..2fcc02fe 100644 --- a/src/telemetry.ts +++ b/src/telemetry.ts @@ -9,9 +9,7 @@ const osName = require('os-name'); export const areAllTelemetryConfigsEnabled = () => { // respect both the overall and Stripe-specific telemetry configs - const enableTelemetry = vscode.workspace - .getConfiguration('telemetry') - .get('enableTelemetry', false); + const enableTelemetry = vscode.env.isTelemetryEnabled; const stripeEnableTelemetry = vscode.workspace .getConfiguration('stripe.telemetry') diff --git a/test/suite/telemetry.test.ts b/test/suite/telemetry.test.ts index cdb7cca0..778b1207 100644 --- a/test/suite/telemetry.test.ts +++ b/test/suite/telemetry.test.ts @@ -6,6 +6,10 @@ import {mocks} from '../mocks/vscode'; import sinon from 'ts-sinon'; const https = require('https'); +const proxyquire = require('proxyquire'); +const modulePath = '../../src/telemetry'; + +const setupProxies = (proxies: any) => proxyquire(modulePath, proxies); suite('Telemetry', function () { this.timeout(20000); @@ -22,28 +26,30 @@ suite('Telemetry', function () { suite('StripeAnalyticsServiceTelemetry', () => { const extensionContext = {...mocks.extensionContextMock}; - test('Respects overall and Stripe-specific telemetry configs', () => { + test('Respects overall and Stripe-specific telemetry configs', async () => { const getConfigurationStub = sandbox.stub(vscode.workspace, 'getConfiguration'); + await Promise.all( + [ + [false, false, false], + [false, true, false], + [true, false, false], + [true, true, true], + ].map(([telemetryEnabled, stripeTelemetryEnabled, expected]) => { + const vscodeStub = { + env: { + isTelemetryEnabled: telemetryEnabled, + }, + }; + const module = setupProxies({vscode: vscodeStub}); + getConfigurationStub.withArgs('stripe.telemetry').returns({ + get: sandbox.stub().withArgs('enabled').returns(stripeTelemetryEnabled), + }); - [ - [false, false, false], - [false, true, false], - [true, false, false], - [true, true, true], - ].forEach(async ([telemetryEnabled, stripeTelemetryEnabled, expected]) => { - getConfigurationStub.withArgs('telemetry').returns({ - get: sandbox.stub().withArgs('telemetryEnabled').returns(telemetryEnabled), - }); - getConfigurationStub - .withArgs('stripe.telemetry') - .returns({get: sandbox.stub().withArgs('enabled').returns(stripeTelemetryEnabled)}); - - // Simulate a config change - await vscode.workspace.getConfiguration('telemetry').update('stripe', undefined); - const telemetry = new StripeAnalyticsServiceTelemetry(extensionContext); + const telemetry = new module.StripeAnalyticsServiceTelemetry(extensionContext); - assert.strictEqual(telemetry.isTelemetryEnabled(), expected); - }); + assert.strictEqual(telemetry.isTelemetryEnabled(), expected); + }), + ); }); test('sendEvent respects user telemetry settings', () => {