@@ -14,11 +14,8 @@ import { Logger } from '../utils'
1414import { sign } from 'jsonwebtoken'
1515import { LRUCache } from 'lru-cache'
1616
17- // Mock the debug logger to spy on it
18- const mockDebugInstance = {
19- extend : sinon . stub ( ) . returns ( sinon . spy ( ) ) ,
20- }
21- sinon . stub ( require ( 'debug' ) , 'default' ) . returns ( mockDebugInstance )
17+ // No longer need to mock debug globally
18+ // sinon.stub(require('debug'), 'default').returns(mockDebugInstance)
2219
2320const PRIVATE_KEY = fs . readFileSync ( path . join ( __dirname , '..' , '..' , 'keys' , 'key.pem' ) , 'utf-8' )
2421const APP_ID = 'app_id'
@@ -36,24 +33,38 @@ const defaultCache: LRUCache<string, string> = new LRUCache({ max: 10 })
3633
3734describe ( 'getManagementToken' , ( ) => {
3835 let loggerSpy : sinon . SinonSpy
36+ let createLoggerStub : sinon . SinonStub
3937
4038 beforeEach ( ( ) => {
4139 // Reset the spy before each test
42- loggerSpy = mockDebugInstance . extend ( ) as sinon . SinonSpy
43- loggerSpy . resetHistory ( )
40+ loggerSpy = sinon . spy ( )
41+ // Reset stubs if they exist
42+ if ( createLoggerStub ) {
43+ createLoggerStub . restore ( )
44+ }
4445 // Reset cache as well
4546 defaultCache . clear ( )
4647 } )
4748
49+ afterEach ( ( ) => {
50+ // Ensure stubs are restored after each test
51+ if ( createLoggerStub ) {
52+ createLoggerStub . restore ( )
53+ }
54+ } )
55+
4856 it ( 'fetches a token and logs by default' , async ( ) => {
4957 const mockToken = 'token'
50- // Use the real logger creator, but we spy on the debug instance it creates
51- const { createLogger } = await import ( '../utils/logger' )
52- const logger = createLogger ( { filename : __filename } )
58+ // Stub createLogger to return our spy
59+ const loggerUtils = await import ( '../utils/logger' )
60+ const mockLogger = { log : loggerSpy } as unknown as Logger // Create a mock logger object
61+ createLoggerStub = sinon . stub ( loggerUtils , 'createLogger' ) . returns ( mockLogger )
62+
5363 const post = sinon . stub ( )
5464 post . resolves ( { statusCode : 201 , body : JSON . stringify ( { token : mockToken } ) } )
5565 const httpClient = { post } as unknown as HttpClient
56- const getManagementTokenFn = createGetManagementToken ( logger , httpClient , defaultCache )
66+ // createGetManagementToken will now receive the mockLogger via the stub
67+ const getManagementTokenFn = createGetManagementToken ( mockLogger , httpClient , defaultCache )
5768
5869 const result = await getManagementTokenFn ( PRIVATE_KEY , DEFAULT_OPTIONS ) // disableLogging is default false
5970
@@ -70,12 +81,16 @@ describe('getManagementToken', () => {
7081
7182 it ( 'does not log when disableLogging is true' , async ( ) => {
7283 const mockToken = 'token-no-log'
73- const { createLogger } = await import ( '../utils/logger' )
74- const logger = createLogger ( { filename : __filename } )
84+ // Stub createLogger like before
85+ const loggerUtils = await import ( '../utils/logger' )
86+ const mockLogger = { log : loggerSpy } as unknown as Logger
87+ createLoggerStub = sinon . stub ( loggerUtils , 'createLogger' ) . returns ( mockLogger )
88+
7589 const post = sinon . stub ( )
7690 post . resolves ( { statusCode : 201 , body : JSON . stringify ( { token : mockToken } ) } )
7791 const httpClient = { post } as unknown as HttpClient
78- const getManagementTokenFn = createGetManagementToken ( logger , httpClient , defaultCache )
92+ // createGetManagementToken receives the stubbed logger
93+ const getManagementTokenFn = createGetManagementToken ( mockLogger , httpClient , defaultCache )
7994
8095 const result = await getManagementTokenFn ( PRIVATE_KEY , {
8196 ...DEFAULT_OPTIONS ,
@@ -90,6 +105,8 @@ describe('getManagementToken', () => {
90105 ) ,
91106 )
92107 // Assert that the logger spy was NOT called
108+ // Because disableLogging: true, the internal logic uses noOpLogger,
109+ // so the log method of the passed-in mockLogger (our spy) is never invoked.
93110 assert ( ! loggerSpy . called , 'Logger should not have been called when disableLogging is true' )
94111 } )
95112
0 commit comments