Files
xarticleaudio/test/server.test.js

34 lines
1.0 KiB
JavaScript

"use strict";
const test = require("node:test");
const assert = require("node:assert/strict");
const { mapToAppRequest, normalizeHeaders } = require("../src/server");
test("normalizeHeaders lowercases and joins array values", () => {
const headers = normalizeHeaders({
"X-User-Id": "u1",
"X-Forwarded-For": ["a", "b"],
});
assert.equal(headers["x-user-id"], "u1");
assert.equal(headers["x-forwarded-for"], "a,b");
});
test("mapToAppRequest extracts method/path/headers/body correctly", () => {
const request = mapToAppRequest({
req: {
method: "POST",
url: "/api/webhooks/x?debug=1&returnTo=%2Faudio%2F1",
headers: { "X-Signature": "sha256=abc" },
},
rawBody: "{\"ok\":true}",
});
assert.equal(request.method, "POST");
assert.equal(request.path, "/api/webhooks/x");
assert.equal(request.query.debug, "1");
assert.equal(request.query.returnTo, "/audio/1");
assert.equal(request.headers["x-signature"], "sha256=abc");
assert.equal(request.rawBody, "{\"ok\":true}");
});