diff --git a/package.json b/package.json index 820caa9243dcb30..b398864d1ffefe4 100644 --- a/package.json +++ b/package.json @@ -104,8 +104,10 @@ "good-squeeze": "2.1.0", "gridster": "0.5.6", "grunt-run": "0.6.0", - "hapi": "8.8.1", + "h2o2": "5.1.1", + "hapi": "14.2.0", "imports-loader": "0.6.4", + "inert": "4.0.2", "jade": "1.11.0", "jade-loader": "0.7.1", "joi": "6.6.1", @@ -134,6 +136,7 @@ "style-loader": "0.12.3", "tar": "2.2.0", "url-loader": "0.5.6", + "vision": "4.1.0", "webpack": "1.12.15", "webpack-directory-name-as-main": "1.0.0", "whatwg-fetch": "0.9.0", diff --git a/src/optimize/lazy/LazyServer.js b/src/optimize/lazy/LazyServer.js index 7527cf1505d515b..61a8b2bfe3b9826 100644 --- a/src/optimize/lazy/LazyServer.js +++ b/src/optimize/lazy/LazyServer.js @@ -2,16 +2,20 @@ let { Server } = require('hapi'); let { fromNode } = require('bluebird'); let Boom = require('boom'); - +let registerHapiPlugins = require('../../server/http/register_hapi_plugins'); module.exports = class LazyServer { constructor(host, port, optimizer) { this.optimizer = optimizer; this.server = new Server(); + + registerHapiPlugins(null, this.server); + this.server.connection({ host: host, port: port }); + } async init() { diff --git a/src/plugins/elasticsearch/lib/__tests__/routes.js b/src/plugins/elasticsearch/lib/__tests__/routes.js index ff681438623e5b5..0bf18867900370f 100644 --- a/src/plugins/elasticsearch/lib/__tests__/routes.js +++ b/src/plugins/elasticsearch/lib/__tests__/routes.js @@ -28,12 +28,11 @@ describe('plugins/elasticsearch', function () { }); - function testRoute(options) { + function testRoute(options, statusCode = 200) { if (typeof options.payload === 'object') { options.payload = JSON.stringify(options.payload); } - const statusCode = options.statusCode || 200; describe(format('%s %s', options.method, options.url), function () { it('should should return ' + statusCode, function (done) { kbnTestServer.makeRequest(kbnServer, options, function (res) { @@ -61,21 +60,18 @@ describe('plugins/elasticsearch', function () { testRoute({ method: 'POST', - url: '/elasticsearch/.kibana', - statusCode: 405 - }); + url: '/elasticsearch/.kibana' + }, 405); testRoute({ method: 'PUT', - url: '/elasticsearch/.kibana', - statusCode: 405 - }); + url: '/elasticsearch/.kibana' + }, 405); testRoute({ method: 'DELETE', - url: '/elasticsearch/.kibana', - statusCode: 405 - }); + url: '/elasticsearch/.kibana' + }, 405); testRoute({ method: 'GET', @@ -85,9 +81,8 @@ describe('plugins/elasticsearch', function () { testRoute({ method: 'POST', url: '/elasticsearch/.kibana/_bulk', - payload: '{}', - statusCode: 400 - }); + payload: '{}' + }, 400); testRoute({ method: 'POST', diff --git a/src/server/http/index.js b/src/server/http/index.js index 06d8f28588b547a..cf3830e764bff95 100644 --- a/src/server/http/index.js +++ b/src/server/http/index.js @@ -13,6 +13,7 @@ module.exports = function (kbnServer, server, config) { server = kbnServer.server = new Hapi.Server(); const shortUrlLookup = require('./short_url_lookup')(server); + kbnServer.mixin(require('./register_hapi_plugins')); // Create a new connection let connectionOptions = { diff --git a/src/server/http/register_hapi_plugins.js b/src/server/http/register_hapi_plugins.js new file mode 100644 index 000000000000000..395beb0d37a6c7f --- /dev/null +++ b/src/server/http/register_hapi_plugins.js @@ -0,0 +1,16 @@ +import HapiTemplates from 'vision'; +import HapiStaticFiles from 'inert'; +import HapiProxy from 'h2o2'; +import { fromNode } from 'bluebird'; + +const plugins = [HapiTemplates, HapiStaticFiles, HapiProxy]; + +async function registerPlugins(server) { + await fromNode(cb => { + server.register(plugins, cb); + }); +} + +export default function (kbnServer, server, config) { + registerPlugins(server); +}