fastify
Version:
Fast and low overhead web framework, for Node.js
66 lines (57 loc) • 1.73 kB
JavaScript
const { test } = require('node:test')
const Fastify = require('..')
test('custom validatorCompiler returning falsy values should update request param', async (t) => {
const fastify = Fastify()
fastify.setValidatorCompiler(() => {
return (data) => {
if (typeof data === 'object' && data !== null && 'coerceTo' in data) {
return { value: data.coerceTo }
}
return true
}
})
fastify.post('/test', { schema: { body: { type: 'object' } } }, (request, reply) => {
reply.send({ body: request.body })
})
// value: 0 (falsy)
{
const res = await fastify.inject({
method: 'POST',
url: '/test',
payload: { coerceTo: 0 }
})
t.assert.strictEqual(res.statusCode, 200)
t.assert.strictEqual(JSON.parse(res.payload).body, 0, 'should update body to 0')
}
// value: "" (falsy)
{
const res = await fastify.inject({
method: 'POST',
url: '/test',
payload: { coerceTo: '' }
})
t.assert.strictEqual(res.statusCode, 200)
t.assert.strictEqual(JSON.parse(res.payload).body, '', 'should update body to empty string')
}
// value: false (falsy)
{
const res = await fastify.inject({
method: 'POST',
url: '/test',
payload: { coerceTo: false }
})
t.assert.strictEqual(res.statusCode, 200)
t.assert.strictEqual(JSON.parse(res.payload).body, false, 'should update body to false')
}
// value: null (falsy)
{
const res = await fastify.inject({
method: 'POST',
url: '/test',
payload: { coerceTo: null }
})
t.assert.strictEqual(res.statusCode, 200)
t.assert.strictEqual(JSON.parse(res.payload).body, null, 'should update body to null')
}
})