Spaces:
Runtime error
Runtime error
File size: 1,581 Bytes
23ac194 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
'use strict'
const { test } = require('node:test')
const Fastify = require('../..')
const https = require('node:https')
const dns = require('node:dns').promises
const sget = require('simple-get').concat
const { buildCertificate } = require('../build-certificate')
async function setup () {
await buildCertificate()
const localAddresses = await dns.lookup('localhost', { all: true })
test('Should support a custom https server', { skip: localAddresses.length < 1 }, async t => {
t.plan(4)
const fastify = Fastify({
serverFactory: (handler, opts) => {
t.assert.ok(opts.serverFactory, 'it is called once for localhost')
const options = {
key: global.context.key,
cert: global.context.cert
}
const server = https.createServer(options, (req, res) => {
req.custom = true
handler(req, res)
})
return server
}
})
t.after(() => { fastify.close() })
fastify.get('/', (req, reply) => {
t.assert.ok(req.raw.custom)
reply.send({ hello: 'world' })
})
await fastify.listen({ port: 0 })
await new Promise((resolve, reject) => {
sget({
method: 'GET',
url: 'https://localhost:' + fastify.server.address().port,
rejectUnauthorized: false
}, (err, response, body) => {
if (err) {
return reject(err)
}
t.assert.strictEqual(response.statusCode, 200)
t.assert.deepStrictEqual(JSON.parse(body), { hello: 'world' })
resolve()
})
})
})
}
setup()
|