strong-tie/inbound-calls
0
1'use strict'2 3const { test } = require('node:test')4const diagnostics = require('node:diagnostics_channel')5const sget = require('simple-get').concat6const Fastify = require('../..')7const { getServerUrl } = require('../helper')8const Request = require('../../lib/request')9const Reply = require('../../lib/reply')10 11test('diagnostics channel events report on errors', (t, done) => {12 t.plan(14)13 let callOrder = 014 let firstEncounteredMessage15 16 diagnostics.subscribe('tracing:fastify.request.handler:start', (msg) => {17 t.assert.strictEqual(callOrder++, 0)18 firstEncounteredMessage = msg19 t.assert.ok(msg.request instanceof Request)20 t.assert.ok(msg.reply instanceof Reply)21 })22 23 diagnostics.subscribe('tracing:fastify.request.handler:end', (msg) => {24 t.assert.ok(msg.request instanceof Request)25 t.assert.ok(msg.reply instanceof Reply)26 t.assert.strictEqual(callOrder++, 2)27 t.assert.strictEqual(msg, firstEncounteredMessage)28 })29 30 diagnostics.subscribe('tracing:fastify.request.handler:error', (msg) => {31 t.assert.ok(msg.request instanceof Request)32 t.assert.ok(msg.reply instanceof Reply)33 t.assert.ok(msg.error instanceof Error)34 t.assert.strictEqual(callOrder++, 1)35 t.assert.strictEqual(msg.error.message, 'borked')36 })37 38 const fastify = Fastify()39 fastify.route({40 method: 'GET',41 url: '/',42 handler: function (req, reply) {43 throw new Error('borked')44 }45 })46 47 fastify.listen({ port: 0 }, function (err) {48 if (err) t.assert.ifError(err)49 50 t.after(() => { fastify.close() })51 52 sget({53 method: 'GET',54 url: getServerUrl(fastify) + '/'55 }, (err, response, body) => {56 t.assert.ifError(err)57 t.assert.strictEqual(response.statusCode, 500)58 done()59 })60 })61})62 