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