From a921d47affaae5cedfe7bb1e3be3584202141886 Mon Sep 17 00:00:00 2001 From: Alessandro Commodari Date: Fri, 15 Mar 2024 14:54:59 -0400 Subject: [PATCH] fix: add test --- test/retry-handler.js | 72 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/test/retry-handler.js b/test/retry-handler.js index f6b83cd34dd..2792f23c2b0 100644 --- a/test/retry-handler.js +++ b/test/retry-handler.js @@ -706,3 +706,75 @@ test('should not error if request is not meant to be retried', async t => { await t.completed }) + +test('Should be able to properly pass the minTimeout to the RetryContext when constructing a RetryCallback function', async t => { + t = tspl(t, { plan: 2 }) + + let counter = 0 + const server = createServer() + server.on('request', (req, res) => { + switch (counter) { + case 0: + res.writeHead(500) + res.end('failed') + return + case 1: + res.writeHead(200) + res.end('hello world!') + return + default: + t.fail() + } + }) + + const dispatchOptions = { + retryOptions: { + retry: (err, { state, opts }, done) => { + counter++ + t.strictEqual(opts.retryOptions.minTimeout, 100) + + if (err.statusCode === 500) { + return done() + } + + return done(err) + }, + minTimeout: 100 + }, + method: 'GET', + path: '/', + headers: { + 'content-type': 'application/json' + } + } + + server.listen(0, () => { + const client = new Client(`http://localhost:${server.address().port}`) + const handler = new RetryHandler(dispatchOptions, { + dispatch: client.dispatch.bind(client), + handler: new RequestHandler(dispatchOptions, (err, data) => { + t.ifError(err) + }) + }) + + after(async () => { + await client.close() + server.close() + + await once(server, 'close') + }) + + client.dispatch( + { + method: 'GET', + path: '/', + headers: { + 'content-type': 'application/json' + } + }, + handler + ) + }) + + await t.completed +})