UNPKG

fastify

Version:

Fast and low overhead web framework, for Node.js

69 lines (54 loc) 1.95 kB
'use strict' const { test } = require('node:test') const Fastify = require('..') const { Client } = require('undici') test('Should return 503 while closing - pipelining', async t => { const fastify = Fastify({ return503OnClosing: true, forceCloseConnections: false }) fastify.get('/', async (req, reply) => { fastify.close() return { hello: 'world' } }) await fastify.listen({ port: 0 }) const instance = new Client('http://localhost:' + fastify.server.address().port, { pipelining: 2 }) const codes = [200, 200, 503] const responses = await Promise.all([ instance.request({ path: '/', method: 'GET' }), instance.request({ path: '/', method: 'GET' }), instance.request({ path: '/', method: 'GET' }) ]) const actual = responses.map(r => r.statusCode) t.assert.deepStrictEqual(actual, codes) await instance.close() }) test('Should close the socket abruptly - pipelining - return503OnClosing: false', async t => { // Since Node v20, we will always invoke server.closeIdleConnections() // therefore our socket will be closed const fastify = Fastify({ return503OnClosing: false, forceCloseConnections: false }) fastify.get('/', async (req, reply) => { reply.send({ hello: 'world' }) fastify.close() }) await fastify.listen({ port: 0 }) const instance = new Client('http://localhost:' + fastify.server.address().port, { pipelining: 2 }) const responses = await Promise.allSettled([ instance.request({ path: '/', method: 'GET' }), instance.request({ path: '/', method: 'GET' }), instance.request({ path: '/', method: 'GET' }), instance.request({ path: '/', method: 'GET' }) ]) t.assert.strictEqual(responses[0].status, 'fulfilled') t.assert.strictEqual(responses[1].status, 'fulfilled') t.assert.strictEqual(responses[2].status, 'rejected') t.assert.strictEqual(responses[3].status, 'rejected') await instance.close() })