fatsify核心功能示例测试!!!
This commit is contained in:
114
node_modules/fastify/test/http-methods/custom-http-methods.test.js
generated
vendored
Normal file
114
node_modules/fastify/test/http-methods/custom-http-methods.test.js
generated
vendored
Normal file
@@ -0,0 +1,114 @@
|
||||
'use strict'
|
||||
|
||||
const http = require('node:http')
|
||||
const { test } = require('node:test')
|
||||
const Fastify = require('../../fastify')
|
||||
|
||||
function addEcho (fastify, method) {
|
||||
fastify.route({
|
||||
method,
|
||||
url: '/',
|
||||
handler: function (req, reply) {
|
||||
reply.send(req.body)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
test('missing method from http client', (t, done) => {
|
||||
t.plan(2)
|
||||
const fastify = Fastify()
|
||||
|
||||
fastify.listen({ port: 3000 }, (err) => {
|
||||
t.assert.ifError(err)
|
||||
|
||||
const port = fastify.server.address().port
|
||||
const req = http.request({
|
||||
port,
|
||||
method: 'REBIND',
|
||||
path: '/'
|
||||
}, (res) => {
|
||||
t.assert.strictEqual(res.statusCode, 404)
|
||||
fastify.close()
|
||||
done()
|
||||
})
|
||||
|
||||
req.end()
|
||||
})
|
||||
})
|
||||
|
||||
test('addHttpMethod increase the supported HTTP methods supported', (t, done) => {
|
||||
t.plan(8)
|
||||
const app = Fastify()
|
||||
|
||||
t.assert.throws(() => { addEcho(app, 'REBIND') }, /REBIND method is not supported./)
|
||||
t.assert.ok(!app.supportedMethods.includes('REBIND'))
|
||||
t.assert.ok(!app.rebind)
|
||||
|
||||
app.addHttpMethod('REBIND')
|
||||
t.assert.doesNotThrow(() => { addEcho(app, 'REBIND') }, 'REBIND method is supported.')
|
||||
t.assert.ok(app.supportedMethods.includes('REBIND'))
|
||||
t.assert.ok(app.rebind)
|
||||
|
||||
app.rebind('/foo', () => 'hello')
|
||||
|
||||
app.inject({
|
||||
method: 'REBIND',
|
||||
url: '/foo'
|
||||
}, (err, response) => {
|
||||
t.assert.ifError(err)
|
||||
t.assert.strictEqual(response.payload, 'hello')
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
test('addHttpMethod adds a new custom method without body', t => {
|
||||
t.plan(3)
|
||||
const app = Fastify()
|
||||
|
||||
t.assert.throws(() => { addEcho(app, 'REBIND') }, /REBIND method is not supported./)
|
||||
|
||||
app.addHttpMethod('REBIND')
|
||||
t.assert.doesNotThrow(() => { addEcho(app, 'REBIND') }, 'REBIND method is supported.')
|
||||
|
||||
t.assert.throws(() => {
|
||||
app.route({
|
||||
url: '/',
|
||||
method: 'REBIND',
|
||||
schema: {
|
||||
body: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
hello: { type: 'string' }
|
||||
}
|
||||
}
|
||||
},
|
||||
handler: function (req, reply) {
|
||||
reply.send(req.body)
|
||||
}
|
||||
})
|
||||
}, /Body validation schema for REBIND:\/ route is not supported!/)
|
||||
})
|
||||
|
||||
test('addHttpMethod adds a new custom method with body', (t, done) => {
|
||||
t.plan(3)
|
||||
const app = Fastify()
|
||||
|
||||
app.addHttpMethod('REBIND', { hasBody: true })
|
||||
t.assert.doesNotThrow(() => { addEcho(app, 'REBIND') }, 'REBIND method is supported.')
|
||||
|
||||
app.inject({
|
||||
method: 'REBIND',
|
||||
url: '/',
|
||||
payload: { hello: 'world' }
|
||||
}, (err, response) => {
|
||||
t.assert.ifError(err)
|
||||
t.assert.deepStrictEqual(response.json(), { hello: 'world' })
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
test('addHttpMethod rejects fake http method', t => {
|
||||
t.plan(1)
|
||||
const fastify = Fastify()
|
||||
t.assert.throws(() => { fastify.addHttpMethod('FOOO') }, /Provided method is invalid!/)
|
||||
})
|
||||
Reference in New Issue
Block a user