Skip to content

Commit 3f8ed81

Browse files
committed
Improve test logic
Issue: CLDSRV-758
1 parent 9c665d1 commit 3f8ed81

1 file changed

Lines changed: 19 additions & 26 deletions

File tree

tests/unit/routes/veeam-routes.js

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ const UtilizationService = require('../../../lib/utilization/instance');
77
const metadata = require('../../../lib/metadata/wrapper');
88
const { DummyRequestLogger } = require('../helpers');
99

10+
// Helper function to give async callbacks time to execute
11+
const giveAsyncCallbackTimeToExecute = setImmediate;
12+
1013
describe('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

Comments
 (0)