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
						
					
					
				'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])
 | 
						|
})
 |