diff options
author | EuAndreh <eu@euandre.org> | 2024-03-08 07:44:37 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-03-08 07:44:37 -0300 |
commit | bc3b0b2aa1ce886887d20fc1bd5309530915137a (patch) | |
tree | 96b7ec05e547ea2fe1167a5799fd3390fecd3d38 | |
parent | src/hero.mjs: Add buildTable() (diff) | |
download | papod-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.mjs | 21 | ||||
-rw-r--r-- | tests/js/hero.mjs | 17 |
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, |