@@ -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,44 @@ 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 directly, as debug instances are functions
59+ const loggerUtils = await import ( '../utils/logger' )
60+ // The logger instance itself is the function to call for logging
61+ createLoggerStub = sinon
62+ . stub ( loggerUtils , 'createLogger' )
63+ . returns ( loggerSpy as unknown as Logger )
64+
5365 const post = sinon . stub ( )
5466 post . resolves ( { statusCode : 201 , body : JSON . stringify ( { token : mockToken } ) } )
5567 const httpClient = { post } as unknown as HttpClient
56- const getManagementTokenFn = createGetManagementToken ( logger , httpClient , defaultCache )
68+ // createGetManagementToken will now receive the loggerSpy via the stub
69+ const getManagementTokenFn = createGetManagementToken (
70+ loggerSpy as unknown as Logger ,
71+ httpClient ,
72+ defaultCache ,
73+ )
5774
5875 const result = await getManagementTokenFn ( PRIVATE_KEY , DEFAULT_OPTIONS ) // disableLogging is default false
5976
@@ -70,12 +87,21 @@ describe('getManagementToken', () => {
7087
7188 it ( 'does not log when disableLogging is true' , async ( ) => {
7289 const mockToken = 'token-no-log'
73- const { createLogger } = await import ( '../utils/logger' )
74- const logger = createLogger ( { filename : __filename } )
90+ // Stub createLogger like before
91+ const loggerUtils = await import ( '../utils/logger' )
92+ createLoggerStub = sinon
93+ . stub ( loggerUtils , 'createLogger' )
94+ . returns ( loggerSpy as unknown as Logger )
95+
7596 const post = sinon . stub ( )
7697 post . resolves ( { statusCode : 201 , body : JSON . stringify ( { token : mockToken } ) } )
7798 const httpClient = { post } as unknown as HttpClient
78- const getManagementTokenFn = createGetManagementToken ( logger , httpClient , defaultCache )
99+ // createGetManagementToken receives the spy logger
100+ const getManagementTokenFn = createGetManagementToken (
101+ loggerSpy as unknown as Logger ,
102+ httpClient ,
103+ defaultCache ,
104+ )
79105
80106 const result = await getManagementTokenFn ( PRIVATE_KEY , {
81107 ...DEFAULT_OPTIONS ,
@@ -90,6 +116,8 @@ describe('getManagementToken', () => {
90116 ) ,
91117 )
92118 // Assert that the logger spy was NOT called
119+ // Because disableLogging: true, the internal logic uses noOpLogger,
120+ // so the log method of the passed-in mockLogger (our spy) is never invoked.
93121 assert ( ! loggerSpy . called , 'Logger should not have been called when disableLogging is true' )
94122 } )
95123
0 commit comments