diff --git a/.eslintrc b/.eslintrc index 047272e06d..2c8ac6c0ac 100644 --- a/.eslintrc +++ b/.eslintrc @@ -3,6 +3,9 @@ "finn", "finn/node" ], + "parserOptions": { + "ecmaVersion": "2017" + }, "rules": { "max-nested-callbacks": "off" } diff --git a/lib/server-impl.js b/lib/server-impl.js index 500c5b8f1e..df4dd0a2cb 100644 --- a/lib/server-impl.js +++ b/lib/server-impl.js @@ -21,6 +21,8 @@ function createApp (options) { enableRequestLogger: options.enableRequestLogger, port: options.port, publicFolder: options.publicFolder, + preRouterHook: options.preRouterHook, + preHook: options.preHook, stores, eventBus, }; diff --git a/lib/server-impl.test.js b/lib/server-impl.test.js new file mode 100644 index 0000000000..0a295f2900 --- /dev/null +++ b/lib/server-impl.test.js @@ -0,0 +1,51 @@ +'use strict'; + +const test = require('ava'); +const proxyquire = require('proxyquire'); + +const getApp = proxyquire('./app', { + './routes': { + createAPI: () => {}, + createLegacy: () => {}, + }, +}); + +const serverImpl = proxyquire('./server-impl', { + './app': getApp, + './metrics': { + startMonitoring (o) { + return o; + }, + }, + './db': { + createStores (o) { + return o; + }, + }, + './options': { + createOptions (o) { + return o; + }, + }, + '../migrator' () { + return Promise.resolve(); + }, +}); + +test('should call preHook', async t => { + let called = 0; + await serverImpl.start({ + preHook: () => { + called++; + }, + }); + t.true(called === 1); +}); + +test('should call preRouterHook', async t => { + let called = 0; + await serverImpl.start({ preRouterHook: () => { + called++; + } }); + t.true(called === 1); +});