1+ // Mock node-machine-id to simulate machine ID resolution
2+ jest . mock ( "node-machine-id" , ( ) => ( {
3+ machineId : jest . fn ( ) ,
4+ } ) ) ;
5+
16import { ApiClient } from "../../src/common/atlas/apiClient.js" ;
27import { Session } from "../../src/session.js" ;
38import { DEVICE_ID_TIMEOUT , Telemetry } from "../../src/telemetry/telemetry.js" ;
@@ -6,6 +11,9 @@ import { EventCache } from "../../src/telemetry/eventCache.js";
611import { config } from "../../src/config.js" ;
712import { MACHINE_METADATA } from "../../src/telemetry/constants.js" ;
813import { jest } from "@jest/globals" ;
14+ import { createHmac } from "crypto" ;
15+ import logger , { LogId } from "../../src/logger.js" ;
16+ import nodeMachineId from "node-machine-id" ;
917
1018// Mock the ApiClient to avoid real API calls
1119jest . mock ( "../../src/common/atlas/apiClient.js" ) ;
@@ -15,14 +23,7 @@ const MockApiClient = ApiClient as jest.MockedClass<typeof ApiClient>;
1523jest . mock ( "../../src/telemetry/eventCache.js" ) ;
1624const MockEventCache = EventCache as jest . MockedClass < typeof EventCache > ;
1725
18- // Mock node-machine-id to simulate machine ID resolution
19- jest . mock ( "node-machine-id" , ( ) => ( {
20- machineId : jest . fn ( ) ,
21- } ) ) ;
22-
23- import * as nodeMachineId from "node-machine-id" ;
24- import { createHmac } from "crypto" ;
25- import logger , { LogId } from "../../src/logger.js" ;
26+ const mockMachineId = jest . spyOn ( nodeMachineId , "machineId" ) ;
2627
2728describe ( "Telemetry" , ( ) => {
2829 let mockApiClient : jest . Mocked < ApiClient > ;
@@ -145,7 +146,9 @@ describe("Telemetry", () => {
145146
146147 describe ( "sending events" , ( ) => {
147148 beforeEach ( ( ) => {
148- ( nodeMachineId . machineId as jest . Mock ) . mockResolvedValue ( "test-machine-id" ) ;
149+ // @ts -expect-error This is a workaround
150+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
151+ mockMachineId . mockResolvedValue ( "test-machine-id" ) ;
149152 } ) ;
150153
151154 describe ( "when telemetry is enabled" , ( ) => {
@@ -265,8 +268,9 @@ describe("Telemetry", () => {
265268 } ) ;
266269
267270 it ( "should successfully resolve the machine ID" , async ( ) => {
268- ( nodeMachineId . machineId as jest . Mock ) . mockResolvedValue ( machineId ) ;
269- telemetry = Telemetry . create ( session ) ;
271+ // @ts -expect-error This is a workaround
272+ mockMachineId . mockResolvedValue ( machineId ) ;
273+ telemetry = Telemetry . create ( session , config ) ;
270274
271275 expect ( telemetry [ "isBufferingEvents" ] ) . toBe ( true ) ;
272276 expect ( telemetry . getCommonProperties ( ) . device_id ) . toBe ( undefined ) ;
@@ -280,9 +284,11 @@ describe("Telemetry", () => {
280284 it ( "should handle machine ID resolution failure" , async ( ) => {
281285 const loggerSpy = jest . spyOn ( logger , "debug" ) ;
282286
283- ( nodeMachineId . machineId as jest . Mock ) . mockRejectedValue ( new Error ( "Failed to get device ID" ) ) ;
287+ // @ts -expect-error This is a workaround
288+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
289+ mockMachineId . mockRejectedValue ( new Error ( "Failed to get device ID" ) ) ;
284290
285- telemetry = Telemetry . create ( session ) ;
291+ telemetry = Telemetry . create ( session , config ) ;
286292
287293 expect ( telemetry [ "isBufferingEvents" ] ) . toBe ( true ) ;
288294 expect ( telemetry . getCommonProperties ( ) . device_id ) . toBe ( undefined ) ;
@@ -302,11 +308,12 @@ describe("Telemetry", () => {
302308 it ( "should timeout if machine ID resolution takes too long" , async ( ) => {
303309 const loggerSpy = jest . spyOn ( logger , "debug" ) ;
304310
305- ( nodeMachineId . machineId as jest . Mock ) . mockImplementation ( ( ) => {
311+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
312+ mockMachineId . mockImplementation ( ( ) => {
306313 return new Promise ( ( ) => { } ) ;
307314 } ) ;
308315
309- telemetry = Telemetry . create ( session ) ;
316+ telemetry = Telemetry . create ( session , config ) ;
310317
311318 expect ( telemetry [ "isBufferingEvents" ] ) . toBe ( true ) ;
312319 expect ( telemetry . getCommonProperties ( ) . device_id ) . toBe ( undefined ) ;
0 commit comments