From b1ca20cc48deaae2223556de1a2fcc4080cfb127 Mon Sep 17 00:00:00 2001 From: rafaelsouzaf Date: Sat, 9 Dec 2017 21:29:43 -0300 Subject: [PATCH] Add more tests. --- types/hapi/v17/test/index.test.d.ts | 4 +- types/hapi/v17/test/request/event-types.ts | 4 +- .../hapi/v17/test/response/response-events.ts | 31 ++++++++++++++ .../test/response/{reply.ts => response.ts} | 4 +- .../hapi/v17/test/route/route-options-pre.ts | 42 +++++++++++++++++++ 5 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 types/hapi/v17/test/response/response-events.ts rename types/hapi/v17/test/response/{reply.ts => response.ts} (95%) create mode 100644 types/hapi/v17/test/route/route-options-pre.ts diff --git a/types/hapi/v17/test/index.test.d.ts b/types/hapi/v17/test/index.test.d.ts index ed5b66c2ba..a3e94ac7dd 100644 --- a/types/hapi/v17/test/index.test.d.ts +++ b/types/hapi/v17/test/index.test.d.ts @@ -19,12 +19,14 @@ export * from './request/query'; export * from './response/continue'; export * from './response/error'; export * from './response/redirect'; -export * from './response/reply'; +export * from './response/response'; +export * from './response/response-events'; /** ROUTE */ export * from './route/adding-routes'; export * from './route/config'; export * from './route/handler'; +export * from './route/route-options-pre'; /** SERVER */ export * from './server/server-app'; diff --git a/types/hapi/v17/test/request/event-types.ts b/types/hapi/v17/test/request/event-types.ts index 411472d70f..7e22841e64 100644 --- a/types/hapi/v17/test/request/event-types.ts +++ b/types/hapi/v17/test/request/event-types.ts @@ -1,8 +1,8 @@ // https://github.com/hapijs/hapi/blob/master/API.md#-servereventevents // https://github.com/hapijs/hapi/blob/master/API.md#-requestevents import { + Lifecycle, Request, - RequestExtPointFunction, ResponseToolkit, RouteOptions, Server, @@ -23,7 +23,7 @@ const serverRoute: ServerRoute = { } }; -const onRequest: RequestExtPointFunction = function (request: Request, h: ResponseToolkit) { +const onRequest: Lifecycle.Method = function (request: Request, h: ResponseToolkit) { /* * Server events diff --git a/types/hapi/v17/test/response/response-events.ts b/types/hapi/v17/test/response/response-events.ts new file mode 100644 index 0000000000..3b0f29879f --- /dev/null +++ b/types/hapi/v17/test/response/response-events.ts @@ -0,0 +1,31 @@ +// https://github.com/hapijs/hapi/blob/master/API.md#-responseevents +import {Request, ResponseToolkit, Server, ServerOptions, ServerRoute, ResponseObject} from "hapi"; +import * as Crypto from "crypto"; + +const preResponse = function (request: Request, h: ResponseToolkit) { + + const response:ResponseObject = request.response; + // if (response.isBoom) { + // return null; + // } + + const hash = Crypto.createHash('sha1'); + response.events.on('peek', (chunk:any) => { + hash.update(chunk); + }); + + response.events.once('finish', () => { + console.log(hash.digest('hex')); + }); + + return h.continue; +}; + +const server = new Server({ + port: 8000, +}); + +server.ext('onPreResponse', preResponse); + +server.start(); +console.log('Server started at: ' + server.info.uri); diff --git a/types/hapi/v17/test/response/reply.ts b/types/hapi/v17/test/response/response.ts similarity index 95% rename from types/hapi/v17/test/response/reply.ts rename to types/hapi/v17/test/response/response.ts index 4d6d7fc323..55af428a34 100644 --- a/types/hapi/v17/test/response/reply.ts +++ b/types/hapi/v17/test/response/response.ts @@ -6,7 +6,7 @@ const options: ServerOptions = { }; const serverRoutes: ServerRoute[] = [ - // verbose notation + // Detailed notation { path: '/test1', method: 'GET', @@ -17,7 +17,7 @@ const serverRoutes: ServerRoute[] = [ return response; } }, - // chained notation + // Chained notation { path: '/test2', method: 'GET', diff --git a/types/hapi/v17/test/route/route-options-pre.ts b/types/hapi/v17/test/route/route-options-pre.ts new file mode 100644 index 0000000000..63cbe09647 --- /dev/null +++ b/types/hapi/v17/test/route/route-options-pre.ts @@ -0,0 +1,42 @@ +// https://github.com/hapijs/hapi/blob/master/API.md#-routeoptionspre +import {Server, Request, ResponseToolkit} from "hapi"; + +const server = new Server({ + port: 8000, +}); + +const pre1 = function(request: Request, h: ResponseToolkit) { + return 'Hello'; +}; + +const pre2 = function(request: Request, h: ResponseToolkit) { + return 'World'; +}; + +const pre3 = function(request: Request, h: ResponseToolkit) { + return request.pre.m1 + ' ' + request.pre.m2; +}; + +server.route({ + method: 'GET', + path: '/', + config: { + pre: [ + [ + // m1 and m2 executed in parallel + { method: pre1, assign: 'm1' }, + { method: pre2, assign: 'm2' } + ], + { method: pre3, assign: 'm3' }, + ], + handler: function (request: Request, h: ResponseToolkit) { + return request.pre.m3 + '!\n'; + } + } +}); + +server.start(); + +server.events.on('start', () => { + console.log('Server started at: ' + server.info.uri); +});