fastify
Version:
Fast and low overhead web framework, for Node.js
99 lines (81 loc) • 2.1 kB
JavaScript
const { test } = require('tap')
const split = require('split2')
const Fastify = require('..')
test('skip automatic reply.send() with reply.sent = true and a body', (t) => {
const stream = split(JSON.parse)
const app = Fastify({
logger: {
stream: stream
}
})
stream.on('data', (line) => {
t.notEqual(line.level, 40) // there are no errors
t.notEqual(line.level, 50) // there are no errors
})
app.get('/', (req, reply) => {
reply.sent = true
reply.res.end('hello world')
return Promise.resolve('this will be skipped')
})
return app.inject({
method: 'GET',
url: '/'
}).then((res) => {
t.equal(res.statusCode, 200)
t.equal(res.body, 'hello world')
})
})
test('skip automatic reply.send() with reply.sent = true and no body', (t) => {
const stream = split(JSON.parse)
const app = Fastify({
logger: {
stream: stream
}
})
stream.on('data', (line) => {
t.notEqual(line.level, 40) // there are no error
t.notEqual(line.level, 50) // there are no error
})
app.get('/', (req, reply) => {
reply.sent = true
reply.res.end('hello world')
return Promise.resolve()
})
return app.inject({
method: 'GET',
url: '/'
}).then((res) => {
t.equal(res.statusCode, 200)
t.equal(res.body, 'hello world')
})
})
test('skip automatic reply.send() with reply.sent = true and an error', (t) => {
const stream = split(JSON.parse)
const app = Fastify({
logger: {
stream: stream
}
})
let errorSeen = false
stream.on('data', (line) => {
if (line.level === 50) {
errorSeen = true
t.equal(line.err.message, 'kaboom')
t.equal(line.msg, 'Promise errored, but reply.sent = true was set')
}
})
app.get('/', (req, reply) => {
reply.sent = true
reply.res.end('hello world')
return Promise.reject(new Error('kaboom'))
})
return app.inject({
method: 'GET',
url: '/'
}).then((res) => {
t.equal(errorSeen, true)
t.equal(res.statusCode, 200)
t.equal(res.body, 'hello world')
})
})