summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/hero.mjs15
-rw-r--r--tests/js/hero.mjs27
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;