fastify
Version:
Fast and low overhead web framework, for Node.js
122 lines (91 loc) • 2.58 kB
JavaScript
const t = require('tap')
const test = t.test
const request = require('request')
const fastify = require('..')
const cors = require('cors')
const helmet = require('helmet')
test('use a middleware', t => {
t.plan(7)
const instance = fastify()
const useRes = instance.use(function (req, res, next) {
t.pass('middleware called')
next()
})
t.equal(useRes, instance)
instance.get('/', function (request, reply) {
reply.send({ hello: 'world' })
})
instance.listen(0, err => {
t.error(err)
t.tearDown(instance.server.close.bind(instance.server))
request({
method: 'GET',
uri: 'http://localhost:' + instance.server.address().port
}, (err, response, body) => {
t.error(err)
t.strictEqual(response.statusCode, 200)
t.strictEqual(response.headers['content-length'], '' + body.length)
t.deepEqual(JSON.parse(body), { hello: 'world' })
})
})
})
test('use cors', t => {
t.plan(3)
const instance = fastify()
instance.use(cors())
instance.get('/', function (request, reply) {
reply.send({ hello: 'world' })
})
instance.listen(0, err => {
t.error(err)
t.tearDown(instance.server.close.bind(instance.server))
request({
method: 'GET',
uri: 'http://localhost:' + instance.server.address().port
}, (err, response, body) => {
t.error(err)
t.equal(response.headers['access-control-allow-origin'], '*')
})
})
})
test('use helmet', t => {
t.plan(3)
const instance = fastify()
instance.use(helmet())
instance.get('/', function (request, reply) {
reply.send({ hello: 'world' })
})
instance.listen(0, err => {
t.error(err)
t.tearDown(instance.server.close.bind(instance.server))
request({
method: 'GET',
uri: 'http://localhost:' + instance.server.address().port
}, (err, response, body) => {
t.error(err)
t.ok(response.headers['x-xss-protection'])
})
})
})
test('use helmet and cors', t => {
t.plan(4)
const instance = fastify()
instance.use(cors())
instance.use(helmet())
instance.get('/', function (request, reply) {
reply.send({ hello: 'world' })
})
instance.listen(0, err => {
t.error(err)
t.tearDown(instance.server.close.bind(instance.server))
request({
method: 'GET',
uri: 'http://localhost:' + instance.server.address().port
}, (err, response, body) => {
t.error(err)
t.ok(response.headers['x-xss-protection'])
t.equal(response.headers['access-control-allow-origin'], '*')
})
})
})