From a1c8fc8f932797b0e303450ed2355ae3fbb1c1bb Mon Sep 17 00:00:00 2001 From: rsouza Date: Mon, 11 Dec 2017 16:18:57 -0300 Subject: [PATCH] Add RouteOptions test file with complete available options. --- types/hapi/v17/test/index.test.d.ts | 1 + types/hapi/v17/test/route/route-options.ts | 167 +++++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 types/hapi/v17/test/route/route-options.ts diff --git a/types/hapi/v17/test/index.test.d.ts b/types/hapi/v17/test/index.test.d.ts index 7b9041f929..08711f00f6 100644 --- a/types/hapi/v17/test/index.test.d.ts +++ b/types/hapi/v17/test/index.test.d.ts @@ -26,6 +26,7 @@ export * from './response/response-events'; export * from './route/adding-routes'; export * from './route/config'; export * from './route/handler'; +export * from './route/route-options'; export * from './route/route-options-pre'; /** SERVER */ diff --git a/types/hapi/v17/test/route/route-options.ts b/types/hapi/v17/test/route/route-options.ts new file mode 100644 index 0000000000..5e2506684f --- /dev/null +++ b/types/hapi/v17/test/route/route-options.ts @@ -0,0 +1,167 @@ +// https://github.com/hapijs/hapi/blob/master/API.md#route-options +import { + EmptyStatusCode, + Request, + ResponseToolkit, + RouteOptions, + RouteOptionsAccess, + RouteOptionsAccessEntity, + RouteOptionsAccessMode, + RouteOptionsAccessPayload, + RouteOptionsCors, + RouteOptionsPayload, + RouteOptionsResponse, + RouteOptionsValidate, + Server +} from "hapi"; + +const routeOptionsAccess: RouteOptionsAccess = { + access: {}, + scope: false, + entity: RouteOptionsAccessEntity.User, + mode: RouteOptionsAccessMode.Optional, + payload: RouteOptionsAccessPayload.Optional, + strategies: ['', ''], + strategy: '' +}; + +const corsOption: RouteOptionsCors = { + origin: 'ignore', + maxAge: 5000, + headers: ['test', 'test', 'test'], + additionalHeaders: ['test', 'test', 'test'], + exposedHeaders: ['test', 'test', 'test'], + additionalExposedHeaders: ['test', 'test', 'test'], + credentials: false +}; + +const payloadOptions: RouteOptionsPayload = { + allow: 'string', + compression: { + test1: { + test: 2 + } + }, + defaultContentType: 'application/json', + failAction: (request: Request, h: ResponseToolkit) => { + return 'ok: ' + request.path; + }, + maxBytes: 1048576, + multipart: { + output: 'annotated' + }, + output: 'stream', + override: '', + parse: 'gunzip', + timeout: 5000, + uploads: 'dir/' +}; + +const pre1 = (request: Request, h: ResponseToolkit) => { + return 'Hello'; +}; + +const pre2 = (request: Request, h: ResponseToolkit) => { + return 'World'; +}; + +const pre3 = (request: Request, h: ResponseToolkit) => { + return request.pre.m1 + ' ' + request.pre.m2; +}; + +const routeOptionsResponse:RouteOptionsResponse = { + emptyStatusCode: EmptyStatusCode.HTTP_200, + failAction: (request: Request, h: ResponseToolkit) => { + return 'ok: ' + request.path; + }, + modify: false, + options: null, + ranges: true, + sample: 100, + schema: true, + status: { + '200': true, + '302': true, + '404': false, + } +}; + +const routeOptionsValidate: RouteOptionsValidate = { + errorFields: {}, + failAction: (request: Request, h: ResponseToolkit) => { + return 'ok: ' + request.path; + }, + headers: false, + options: {}, + params: false, + payload: true, + query: true, +}; + +const routeOptions: RouteOptions = { + + app: {}, + auth: routeOptionsAccess, + bind: null, + cache: { + privacy: 'default', + statuses: [200], + otherwise: 'no-cache' + }, + compression: { + test1: { + test: 2 + } + }, + cors: corsOption, + description: 'description here', + ext: null, + files: { relativeTo: '.' }, + handler: (request: Request, h: ResponseToolkit) => { + return 'ok: ' + request.path; + }, + id: 'test', + isInternal: false, + json: null, + jsonp: 'callback', + log: { collect: false }, + notes: ['test', 'test', 'test'], + payload: payloadOptions, + plugins: { + plugin1: {}, + plugin2: {}, + }, + pre: [ + [ + // m1 and m2 executed in parallel + { method: pre1, assign: 'm1' }, + { method: pre2, assign: 'm2' } + ], + { method: pre3, assign: 'm3' }, + ], + response: routeOptionsResponse, + security: false, + state: { + parse: true, + failAction: (request: Request, h: ResponseToolkit) => { + return 'ok: ' + request.path; + }, + }, + tags: ['test', 'test', 'test'], + timeout: { + server: 10000, + socket: false + }, + validate: routeOptionsValidate + +}; + +const server = new Server({ + port: 8000, + routes: routeOptions +}); +server.start(); + +server.events.on('start', () => { + console.log('Server started at: ' + server.info.uri); +});