You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					167 lines
				
				4.5 KiB
			
		
		
			
		
	
	
					167 lines
				
				4.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const sget = require('simple-get').concat
							 | 
						||
| 
								 | 
							
								const { test } = require('tap')
							 | 
						||
| 
								 | 
							
								const Fastify = require('..')
							 | 
						||
| 
								 | 
							
								const semver = require('semver')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								process.removeAllListeners('warning')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should emit a warning when accessing request.req instead of request.raw', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(4)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  process.on('warning', onWarning)
							 | 
						||
| 
								 | 
							
								  function onWarning (warning) {
							 | 
						||
| 
								 | 
							
								    t.equal(warning.name, 'FastifyDeprecation')
							 | 
						||
| 
								 | 
							
								    t.equal(warning.code, 'FSTDEP001')
							 | 
						||
| 
								 | 
							
								    t.equal(warning.message, 'You are accessing the Node.js core request object via "request.req", Use "request.raw" instead.')
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const fastify = Fastify()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.get('/', (request, reply) => {
							 | 
						||
| 
								 | 
							
								    reply.send(request.req.method + request.req.method)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.inject({
							 | 
						||
| 
								 | 
							
								    method: 'GET',
							 | 
						||
| 
								 | 
							
								    path: '/'
							 | 
						||
| 
								 | 
							
								  }, (err, res) => {
							 | 
						||
| 
								 | 
							
								    t.error(err)
							 | 
						||
| 
								 | 
							
								    process.removeListener('warning', onWarning)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should emit a warning when accessing reply.res instead of reply.raw', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(4)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  process.on('warning', onWarning)
							 | 
						||
| 
								 | 
							
								  function onWarning (warning) {
							 | 
						||
| 
								 | 
							
								    t.equal(warning.name, 'FastifyDeprecation')
							 | 
						||
| 
								 | 
							
								    t.equal(warning.code, 'FSTDEP002')
							 | 
						||
| 
								 | 
							
								    t.equal(warning.message, 'You are accessing the Node.js core response object via "reply.res", Use "reply.raw" instead.')
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const fastify = Fastify()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.get('/', (request, reply) => {
							 | 
						||
| 
								 | 
							
								    reply.send(reply.res.statusCode + reply.res.statusCode)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.inject({
							 | 
						||
| 
								 | 
							
								    method: 'GET',
							 | 
						||
| 
								 | 
							
								    path: '/'
							 | 
						||
| 
								 | 
							
								  }, (err, res) => {
							 | 
						||
| 
								 | 
							
								    t.error(err)
							 | 
						||
| 
								 | 
							
								    process.removeListener('warning', onWarning)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should emit a warning when using two arguments Content Type Parser instead of three arguments', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(7)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  process.on('warning', onWarning)
							 | 
						||
| 
								 | 
							
								  function onWarning (warning) {
							 | 
						||
| 
								 | 
							
								    t.equal(warning.name, 'FastifyDeprecation')
							 | 
						||
| 
								 | 
							
								    t.equal(warning.code, 'FSTDEP003')
							 | 
						||
| 
								 | 
							
								    t.equal(warning.message, 'You are using the legacy Content Type Parser function signature. Use the one suggested in the documentation instead.')
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const fastify = Fastify()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.addContentTypeParser('x/foo', function (req, done) {
							 | 
						||
| 
								 | 
							
								    done(null, 'OK')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.post('/', (request, reply) => {
							 | 
						||
| 
								 | 
							
								    reply.send(request.body)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.listen(0, err => {
							 | 
						||
| 
								 | 
							
								    t.error(err)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    sget({
							 | 
						||
| 
								 | 
							
								      method: 'POST',
							 | 
						||
| 
								 | 
							
								      url: 'http://localhost:' + fastify.server.address().port,
							 | 
						||
| 
								 | 
							
								      headers: { 'Content-Type': 'x/foo' },
							 | 
						||
| 
								 | 
							
								      body: '{"hello":"world"}'
							 | 
						||
| 
								 | 
							
								    }, (err, response, body) => {
							 | 
						||
| 
								 | 
							
								      t.error(err)
							 | 
						||
| 
								 | 
							
								      t.equal(response.statusCode, 200)
							 | 
						||
| 
								 | 
							
								      t.equal(body.toString(), 'OK')
							 | 
						||
| 
								 | 
							
								      process.removeListener('warning', onWarning)
							 | 
						||
| 
								 | 
							
								      fastify.close()
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should emit a warning when using payload less preParsing hook', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(7)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  process.on('warning', onWarning)
							 | 
						||
| 
								 | 
							
								  function onWarning (warning) {
							 | 
						||
| 
								 | 
							
								    t.equal(warning.name, 'FastifyDeprecation')
							 | 
						||
| 
								 | 
							
								    t.equal(warning.code, 'FSTDEP004')
							 | 
						||
| 
								 | 
							
								    t.equal(warning.message, 'You are using the legacy preParsing hook signature. Use the one suggested in the documentation instead.')
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const fastify = Fastify()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.addHook('preParsing', function (request, reply, done) {
							 | 
						||
| 
								 | 
							
								    done()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.get('/', (request, reply) => {
							 | 
						||
| 
								 | 
							
								    reply.send('OK')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.listen(0, err => {
							 | 
						||
| 
								 | 
							
								    t.error(err)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    sget({
							 | 
						||
| 
								 | 
							
								      method: 'GET',
							 | 
						||
| 
								 | 
							
								      url: 'http://localhost:' + fastify.server.address().port
							 | 
						||
| 
								 | 
							
								    }, (err, response, body) => {
							 | 
						||
| 
								 | 
							
								      t.error(err)
							 | 
						||
| 
								 | 
							
								      t.equal(response.statusCode, 200)
							 | 
						||
| 
								 | 
							
								      t.equal(body.toString(), 'OK')
							 | 
						||
| 
								 | 
							
								      process.removeListener('warning', onWarning)
							 | 
						||
| 
								 | 
							
								      fastify.close()
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should emit a warning when accessing request.connection instead of request.socket on Node process greater than 13.0.0', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(4)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  process.on('warning', onWarning)
							 | 
						||
| 
								 | 
							
								  function onWarning (warning) {
							 | 
						||
| 
								 | 
							
								    if (semver.gte(process.versions.node, '13.0.0')) {
							 | 
						||
| 
								 | 
							
								      t.equal(warning.name, 'FastifyDeprecation')
							 | 
						||
| 
								 | 
							
								      t.equal(warning.code, 'FSTDEP005')
							 | 
						||
| 
								 | 
							
								      t.equal(warning.message, 'You are accessing the deprecated "request.connection" property. Use "request.socket" instead.')
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      t.equal(warning.name, 'FastifyDeprecationLightMyRequest')
							 | 
						||
| 
								 | 
							
								      t.equal(warning.code, 'FST_LIGHTMYREQUEST_DEP01')
							 | 
						||
| 
								 | 
							
								      t.equal(warning.message, 'You are accessing "request.connection", use "request.socket" instead.')
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // removed listener before light-my-request emit second warning
							 | 
						||
| 
								 | 
							
								    process.removeListener('warning', onWarning)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const fastify = Fastify()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.get('/', (request, reply) => {
							 | 
						||
| 
								 | 
							
								    reply.send(request.connection)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.inject({
							 | 
						||
| 
								 | 
							
								    method: 'GET',
							 | 
						||
| 
								 | 
							
								    path: '/'
							 | 
						||
| 
								 | 
							
								  }, (err, res) => {
							 | 
						||
| 
								 | 
							
								    t.error(err)
							 | 
						||
| 
								 | 
							
								    process.removeListener('warning', onWarning)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 |