strong-tie/inbound-calls
0
1'use strict'2 3const { test } = require('node:test')4const proxyquire = require('proxyquire')5 6const Fastify = require('../../fastify')7const { createServer } = require('../../lib/server')8 9const handler = (req, res) => {10 res.writeHead(200, { 'Content-Type': 'application/json' })11 res.end(JSON.stringify({ data: 'Hello World!' }))12}13 14test('start listening', async t => {15 const { server, listen } = createServer({}, handler)16 await listen.call(Fastify(), { port: 0, host: 'localhost' })17 server.close()18 t.assert.ok(true, 'server started')19})20 21test('DNS errors does not stop the main server on localhost - promise interface', async t => {22 const { createServer } = proxyquire('../../lib/server', {23 'node:dns': {24 lookup: (hostname, options, cb) => {25 cb(new Error('DNS error'))26 }27 }28 })29 const { server, listen } = createServer({}, handler)30 await listen.call(Fastify(), { port: 0, host: 'localhost' })31 server.close()32 t.assert.ok(true, 'server started')33})34 35test('DNS errors does not stop the main server on localhost - callback interface', (t, done) => {36 t.plan(2)37 const { createServer } = proxyquire('../../lib/server', {38 'node:dns': {39 lookup: (hostname, options, cb) => {40 cb(new Error('DNS error'))41 }42 }43 })44 const { server, listen } = createServer({}, handler)45 listen.call(Fastify(), { port: 0, host: 'localhost' }, (err) => {46 t.assert.ifError(err)47 server.close()48 t.assert.ok(true, 'server started')49 done()50 })51})52 53test('DNS returns empty binding', (t, done) => {54 t.plan(2)55 const { createServer } = proxyquire('../../lib/server', {56 'node:dns': {57 lookup: (hostname, options, cb) => {58 cb(null, [])59 }60 }61 })62 const { server, listen } = createServer({}, handler)63 listen.call(Fastify(), { port: 0, host: 'localhost' }, (err) => {64 t.assert.ifError(err)65 server.close()66 t.assert.ok(true, 'server started')67 done()68 })69})70 71test('DNS returns more than two binding', (t, done) => {72 t.plan(2)73 const { createServer } = proxyquire('../../lib/server', {74 'node:dns': {75 lookup: (hostname, options, cb) => {76 cb(null, [77 { address: '::1', family: 6 },78 { address: '127.0.0.1', family: 4 },79 { address: '0.0.0.0', family: 4 }80 ])81 }82 }83 })84 const { server, listen } = createServer({}, handler)85 listen.call(Fastify(), { port: 0, host: 'localhost' }, (err) => {86 t.assert.ifError(err)87 server.close()88 t.assert.ok(true, 'server started')89 done()90 })91})92 