summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-03-08 07:44:37 -0300
committerEuAndreh <eu@euandre.org>2024-03-08 07:44:37 -0300
commitbc3b0b2aa1ce886887d20fc1bd5309530915137a (patch)
tree96b7ec05e547ea2fe1167a5799fd3390fecd3d38
parentsrc/hero.mjs: Add buildTable() (diff)
downloadpapod-bc3b0b2aa1ce886887d20fc1bd5309530915137a.tar.gz
papod-bc3b0b2aa1ce886887d20fc1bd5309530915137a.tar.xz
src/hero.mjs: Make sure globalInceptors are used even when we get a 404
-rw-r--r--src/hero.mjs21
-rw-r--r--tests/js/hero.mjs17
2 files changed, 30 insertions, 8 deletions
diff --git a/src/hero.mjs b/src/hero.mjs
index a51d5c0..2355bbf 100644
--- a/src/hero.mjs
+++ b/src/hero.mjs
@@ -119,15 +119,22 @@ export const extractQueryParams = s => {
return ret;
};
+export const handle404 = _req => ({
+ status: 404,
+ body: "Not Found\n",
+});
+
+export const make404Handler = interceptors => ({
+ params: {},
+ handlerFn: wrapHandler(handle404, interceptors),
+});
+
export const handleRequest = async (table, method, url) => {
const [ path, queryParams ] = url.split("?");
- const handler = findHandler(table, method, path);
- if (!handler) {
- return {
- status: 404,
- body: "Not Found\n",
- };
- }
+ const handler = (
+ findHandler(table, method, path) ||
+ make404Handler(table.interceptors)
+ );
const request = {
params: {
diff --git a/tests/js/hero.mjs b/tests/js/hero.mjs
index 3d0751c..a8883d5 100644
--- a/tests/js/hero.mjs
+++ b/tests/js/hero.mjs
@@ -16,6 +16,8 @@ import {
findDynamicHandler,
findHandler,
extractQueryParams,
+ handle404,
+ make404Handler,
handleRequest,
makeRequestListener,
loggerDefaults,
@@ -512,6 +514,17 @@ const test_extractQueryParams = async t => {
});
};
+const test_make404Handler = async t => {
+ t.start("make404Handler");
+
+ await t.test("empty interceptors", () => {
+ assert.deepEqual(make404Handler([]), {
+ params: {},
+ handlerFn: handle404,
+ });
+ });
+};
+
const test_handleRequest = async t => {
t.start("handleRequest()");
@@ -555,6 +568,7 @@ const test_handleRequest = async t => {
},
},
},
+ interceptors: [],
};
assert.deepEqual(
@@ -575,7 +589,7 @@ const test_handleRequest = async t => {
await t.test("missing route", async () => {
assert.deepEqual(
- await handleRequest({}, "GET", "/"),
+ await handleRequest({ interceptors: [] }, "GET", "/"),
{
status: 404,
body: "Not Found\n",
@@ -1729,6 +1743,7 @@ await runner.runTests([
test_findDynamicHandler,
test_findHandler,
test_extractQueryParams,
+ test_make404Handler,
test_handleRequest,
test_makeRequestListener,
test_configLogger,