diff options
-rw-r--r-- | src/hero.mjs | 15 | ||||
-rw-r--r-- | tests/js/hero.mjs | 27 |
2 files changed, 29 insertions, 13 deletions
diff --git a/src/hero.mjs b/src/hero.mjs index b378887..859d86f 100644 --- a/src/hero.mjs +++ b/src/hero.mjs @@ -44,11 +44,12 @@ export const interceptorsFn = ({ } = {}) => ({ requestId: (req, next) => next({ ...req, id: uuidFn() }), logged: async (req, next) => { - const { id, url, method } = req; + const { id, url, method, upgrade } = req; logger.info({ id, url, method, + upgrade, type: "in-request", }); const beforeDate = new Date(); @@ -271,7 +272,7 @@ export const make404Handler = interceptors => ({ }); export const handleRequest = async (table, reqHandle) => { - const { method, url, headers } = reqHandle; + const { method, url, headers, upgrade, socket } = reqHandle; const [ path, queryParams ] = url.split("?"); const { params, handlerFn } = ( findHandler(table, method, path) || @@ -286,6 +287,8 @@ export const handleRequest = async (table, reqHandle) => { method, path, headers, + upgrade, + socket, handler: handlerFn, ref: reqHandle, }; @@ -355,7 +358,11 @@ export const makeUpgradeListener = table => async (req, socket, _head) => { }; export const makeRequestListener = table => async (req, res) => { - const { status, headers, body } = await handleRequest(table, req); + const { status, headers, body } = await handleRequest(table, { + ...req, + upgrade: false, + socket: null, + }); res.writeHead(status, headers); res.end(body); }; @@ -532,7 +539,7 @@ export const buildTable = (routes, globalInterceptors = []) => export const promisifyServer = (name, serverHandle, socket, pipe) => { let closePipeFn = null; return { - ref: serverHandle, + ref: serverHandle, start: util.promisify((...args) => { assert.equal(typeof socket, "string"); assert.equal(typeof pipe, "string"); diff --git a/tests/js/hero.mjs b/tests/js/hero.mjs index 8d8f811..b183e9a 100644 --- a/tests/js/hero.mjs +++ b/tests/js/hero.mjs @@ -238,6 +238,7 @@ const test_interceptorsFn = async t => { id: "an ID", url: "a URL", method: "a method", + upgrade: true, }; assert.deepEqual( @@ -515,8 +516,9 @@ const test_wrapHandler = async t => { ]); const req = { - url: "URL", - method: "METHOD", + url: "URL", + method: "METHOD", + upgrade: false, }; assert.deepEqual( @@ -540,10 +542,11 @@ const test_wrapHandler = async t => { contents.map(o => u.dissoc(o, "timings")), [ { - id: "0", - url: "URL", - method: "METHOD", - type: "in-request", + id: "0", + url: "URL", + method: "METHOD", + type: "in-request", + upgrade: false, }, { id: "0", @@ -1096,6 +1099,8 @@ const test_handleRequest = async t => { a: "1", b: "two", }, + upgrade: false, + socket: null, }; assert.deepEqual( @@ -1115,6 +1120,8 @@ const test_handleRequest = async t => { }, ref: req, handler: fn, + upgrade: false, + socket: null, }, ); }); @@ -1160,6 +1167,8 @@ const test_handleRequest = async t => { }, handler: fn, ref: req, + upgrade: true, + socket: fn, }, ); }); @@ -1700,7 +1709,7 @@ const test_makeReopeningPipeReader = async t => { fs.createWriteStream(path).end().close(); pipe.ref.on("close", () => { assert.deepEqual(lines, []); - assert.deepEqual(logs, [{ + assert.deepEqual(logs, [{ message: "pipe closed, NOT reopening", }]); @@ -1715,8 +1724,8 @@ const test_makeReopeningPipeReader = async t => { const shouldReopenPipe = { ref: true }; const lines = []; const logs = []; - const lineFn = x => lines.push(x); - const logger = { debug: x => logs.push(x) }; + const lineFn = x => lines.push(x); + const logger = { debug: x => logs.push(x) }; const previous = process.env.DEBUG; delete process.env.DEBUG; |