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.
		
		
		
		
		
			
		
			
				
					100 lines
				
				2.0 KiB
			
		
		
			
		
	
	
					100 lines
				
				2.0 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const t = require('tap')
							 | 
						||
| 
								 | 
							
								const test = t.test
							 | 
						||
| 
								 | 
							
								const Fastify = require('..')
							 | 
						||
| 
								 | 
							
								const {
							 | 
						||
| 
								 | 
							
								  kOptions,
							 | 
						||
| 
								 | 
							
								  kErrorHandler
							 | 
						||
| 
								 | 
							
								} = require('../lib/symbols')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('root fastify instance is an object', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								  t.type(Fastify(), 'object')
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('fastify instance should contains ajv options', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								  const fastify = Fastify({
							 | 
						||
| 
								 | 
							
								    ajv: {
							 | 
						||
| 
								 | 
							
								      customOptions: {
							 | 
						||
| 
								 | 
							
								        nullable: false
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								  t.same(fastify[kOptions].ajv, {
							 | 
						||
| 
								 | 
							
								    customOptions: {
							 | 
						||
| 
								 | 
							
								      nullable: false
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    plugins: []
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('fastify instance should contains ajv options.plugins nested arrays', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								  const fastify = Fastify({
							 | 
						||
| 
								 | 
							
								    ajv: {
							 | 
						||
| 
								 | 
							
								      customOptions: {
							 | 
						||
| 
								 | 
							
								        nullable: false
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      plugins: [[]]
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								  t.same(fastify[kOptions].ajv, {
							 | 
						||
| 
								 | 
							
								    customOptions: {
							 | 
						||
| 
								 | 
							
								      nullable: false
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    plugins: [[]]
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('fastify instance get invalid ajv options', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								  t.throws(() => Fastify({
							 | 
						||
| 
								 | 
							
								    ajv: {
							 | 
						||
| 
								 | 
							
								      customOptions: 8
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }))
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('fastify instance get invalid ajv options.plugins', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								  t.throws(() => Fastify({
							 | 
						||
| 
								 | 
							
								    ajv: {
							 | 
						||
| 
								 | 
							
								      customOptions: {},
							 | 
						||
| 
								 | 
							
								      plugins: 8
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }))
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('fastify instance should contain default errorHandler', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(3)
							 | 
						||
| 
								 | 
							
								  const fastify = Fastify()
							 | 
						||
| 
								 | 
							
								  t.ok(fastify[kErrorHandler] instanceof Function)
							 | 
						||
| 
								 | 
							
								  t.same(fastify.errorHandler, fastify[kErrorHandler])
							 | 
						||
| 
								 | 
							
								  t.same(Object.getOwnPropertyDescriptor(fastify, 'errorHandler').set, undefined)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('errorHandler in plugin should be separate from the external one', async t => {
							 | 
						||
| 
								 | 
							
								  t.plan(4)
							 | 
						||
| 
								 | 
							
								  const fastify = Fastify()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fastify.register((instance, opts, done) => {
							 | 
						||
| 
								 | 
							
								    const inPluginErrHandler = (_, __, reply) => {
							 | 
						||
| 
								 | 
							
								      reply.send({ plugin: 'error-object' })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    instance.setErrorHandler(inPluginErrHandler)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    t.notSame(instance.errorHandler, fastify.errorHandler)
							 | 
						||
| 
								 | 
							
								    t.equal(instance.errorHandler.name, 'bound inPluginErrHandler')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    done()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  await fastify.ready()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.ok(fastify[kErrorHandler] instanceof Function)
							 | 
						||
| 
								 | 
							
								  t.same(fastify.errorHandler, fastify[kErrorHandler])
							 | 
						||
| 
								 | 
							
								})
							 |