@@ -7,6 +7,9 @@ const UtilizationService = require('../../../lib/utilization/instance');
77const metadata = require ( '../../../lib/metadata/wrapper' ) ;
88const { DummyRequestLogger } = require ( '../helpers' ) ;
99
10+ // Helper function to give async callbacks time to execute
11+ const giveAsyncCallbackTimeToExecute = setImmediate ;
12+
1013describe ( 'Veeam routes - comprehensive unit tests' , ( ) => {
1114 let utilizationStub ;
1215 let metadataStub ;
@@ -111,8 +114,7 @@ describe('Veeam routes - comprehensive unit tests', () => {
111114
112115 getVeeamFile ( request , response , bucketMd , log ) ;
113116
114- // Give async callback time to execute
115- setImmediate ( ( ) => {
117+ giveAsyncCallbackTimeToExecute ( ( ) => {
116118 assert ( logWarnSpy . calledOnce , 'log.warn should have been called once' ) ;
117119 const warnCall = logWarnSpy . getCall ( 0 ) ;
118120 assert ( warnCall . args [ 0 ] . includes ( 'UtilizationService returned 404' ) ,
@@ -137,8 +139,7 @@ describe('Veeam routes - comprehensive unit tests', () => {
137139
138140 getVeeamFile ( request , response , bucketMd , log ) ;
139141
140- setImmediate ( ( ) => {
141- // For 500 errors, we should return error to client
142+ giveAsyncCallbackTimeToExecute ( ( ) => {
142143 assert ( response . headersSent || response . write . called || response . writeHead . called ,
143144 'should send error response for 500 errors' ) ;
144145 done ( ) ;
@@ -155,8 +156,7 @@ describe('Veeam routes - comprehensive unit tests', () => {
155156
156157 getVeeamFile ( request , response , bucketMd , log ) ;
157158
158- setImmediate ( ( ) => {
159- // For connection errors, we should return error to client
159+ giveAsyncCallbackTimeToExecute ( ( ) => {
160160 assert ( response . headersSent || response . write . called || response . writeHead . called ,
161161 'should send error response for connection errors' ) ;
162162 done ( ) ;
@@ -174,7 +174,7 @@ describe('Veeam routes - comprehensive unit tests', () => {
174174
175175 getVeeamFile ( request , response , bucketMd , log ) ;
176176
177- setImmediate ( ( ) => {
177+ giveAsyncCallbackTimeToExecute ( ( ) => {
178178 assert ( ! logWarnSpy . called , 'log.warn should not have been called' ) ;
179179 assert ( response . writeHead . calledWith ( 200 ) , 'should return 200 with metrics' ) ;
180180 assert ( utilizationStub . calledOnce , 'should call UtilizationService once' ) ;
@@ -223,17 +223,11 @@ describe('Veeam routes - comprehensive unit tests', () => {
223223
224224 getVeeamFile ( request , response , bucketMd , log ) ;
225225
226- setImmediate ( ( ) => {
227- // Verify we logged a warning
226+ giveAsyncCallbackTimeToExecute ( ( ) => {
228227 assert ( logWarnSpy . calledOnce , 'should log warning for 404' ) ;
229-
230- // The critical assertion: for 404, we should return 200 with static capacity data
231228 assert ( response . writeHead . calledWith ( 200 ) ,
232229 'should return 200 with static capacity data for 404' ) ;
233-
234230 assert ( response . end . called , 'response should be ended' ) ;
235-
236- // Verify it's specifically handling 404 gracefully
237231 const warnCall = logWarnSpy . getCall ( 0 ) ;
238232 assert ( warnCall . args [ 0 ] . includes ( '404' ) , 'warning should mention 404' ) ;
239233
@@ -250,8 +244,7 @@ describe('Veeam routes - comprehensive unit tests', () => {
250244
251245 getVeeamFile ( request , response , bucketMd , log ) ;
252246
253- setImmediate ( ( ) => {
254- // Metadata errors are returned via responseXMLBody
247+ giveAsyncCallbackTimeToExecute ( ( ) => {
255248 assert ( response . headersSent || response . write . called || response . writeHead . called ,
256249 'should send response for metadata errors' ) ;
257250 done ( ) ;
@@ -265,7 +258,7 @@ describe('Veeam routes - comprehensive unit tests', () => {
265258
266259 getVeeamFile ( request , response , bucketMd , log ) ;
267260
268- setImmediate ( ( ) => {
261+ giveAsyncCallbackTimeToExecute ( ( ) => {
269262 assert ( response . writeHead . calledWith ( 200 ) ,
270263 'should return 200 for tagging query' ) ;
271264 assert ( response . end . called , 'response should be ended' ) ;
@@ -365,7 +358,7 @@ describe('Veeam routes - HEAD request UtilizationService error handling', () =>
365358
366359 headVeeamFile ( request , response , bucketMdWithSystem , log ) ;
367360
368- setImmediate ( ( ) => {
361+ giveAsyncCallbackTimeToExecute ( ( ) => {
369362 assert ( response . setHeader . called , 'should set headers' ) ;
370363 assert ( response . end . called , 'response should be ended' ) ;
371364 done ( ) ;
@@ -378,7 +371,7 @@ describe('Veeam routes - HEAD request UtilizationService error handling', () =>
378371
379372 headVeeamFile ( request , response , bucketMd , log ) ;
380373
381- setImmediate ( ( ) => {
374+ giveAsyncCallbackTimeToExecute ( ( ) => {
382375 assert ( response . setHeader . called , 'should set headers' ) ;
383376 assert ( response . end . called , 'response should be ended' ) ;
384377 done ( ) ;
@@ -397,7 +390,7 @@ describe('Veeam routes - HEAD request UtilizationService error handling', () =>
397390
398391 headVeeamFile ( request , response , bucketMdWithoutVeeam , log ) ;
399392
400- setImmediate ( ( ) => {
393+ giveAsyncCallbackTimeToExecute ( ( ) => {
401394 // HEAD should return 404 via headers, not body
402395 assert ( response . end . called , 'response should be ended' ) ;
403396 done ( ) ;
@@ -493,7 +486,7 @@ describe('Veeam routes - LIST request handling', () => {
493486
494487 listVeeamFiles ( request , response , bucketMd , log ) ;
495488
496- setImmediate ( ( ) => {
489+ giveAsyncCallbackTimeToExecute ( ( ) => {
497490 assert ( response . writeHead . calledWith ( 200 ) , 'should return 200' ) ;
498491 assert ( response . end . called , 'response should be ended' ) ;
499492 done ( ) ;
@@ -506,7 +499,7 @@ describe('Veeam routes - LIST request handling', () => {
506499
507500 listVeeamFiles ( request , response , bucketMd , log ) ;
508501
509- setImmediate ( ( ) => {
502+ giveAsyncCallbackTimeToExecute ( ( ) => {
510503 assert ( response . writeHead . calledWith ( 200 ) , 'should return 200 for versions query' ) ;
511504 assert ( response . end . called , 'response should be ended' ) ;
512505 done ( ) ;
@@ -519,7 +512,7 @@ describe('Veeam routes - LIST request handling', () => {
519512
520513 listVeeamFiles ( request , response , bucketMd , log ) ;
521514
522- setImmediate ( ( ) => {
515+ giveAsyncCallbackTimeToExecute ( ( ) => {
523516 // Should return error for invalid query parameter
524517 assert ( response . end . called , 'response should be ended' ) ;
525518 done ( ) ;
@@ -532,8 +525,8 @@ describe('Veeam routes - LIST request handling', () => {
532525
533526 listVeeamFiles ( request , response , null , log ) ;
534527
535- setImmediate ( ( ) => {
536- // Should return NoSuchBucket error
528+ giveAsyncCallbackTimeToExecute ( ( ) => {
529+ assert ( response . writeHead . calledWith ( 404 ) , 'should return 404' ) ;
537530 assert ( response . end . called , 'response should be ended' ) ;
538531 done ( ) ;
539532 } ) ;
@@ -559,7 +552,7 @@ describe('Veeam routes - LIST request handling', () => {
559552
560553 listVeeamFiles ( request , response , bucketMdOnlySystem , log ) ;
561554
562- setImmediate ( ( ) => {
555+ giveAsyncCallbackTimeToExecute ( ( ) => {
563556 assert ( response . writeHead . calledWith ( 200 ) , 'should return 200' ) ;
564557 assert ( response . end . called , 'response should be ended' ) ;
565558 done ( ) ;
0 commit comments