Files
pikasTech-HWLAB/internal/cloud/tasktree-proxy.test.ts
T
2026-07-18 10:10:05 +02:00

40 lines
1.4 KiB
TypeScript

import assert from "node:assert/strict";
import { test } from "bun:test";
import { handleTaskTreeProxyHttp } from "./tasktree-proxy.ts";
test("TaskTree proxy requires auth and forwards the unchanged API path", async () => {
const originalFetch = globalThis.fetch;
let upstreamUrl = "";
globalThis.fetch = (async (input) => {
upstreamUrl = String(input);
return Response.json({ ok: true, operation: "group.list", data: { groups: [] } });
}) as typeof fetch;
const response = captureResponse();
try {
await handleTaskTreeProxyHttp(
{ method: "GET", headers: {} },
response,
new URL("http://cloud.test/v1/tasktree/groups"),
{
env: { HWLAB_TASKTREE_URL: "http://hwlab-tasktree-api.hwlab-v03.svc.cluster.local:6673" },
accessController: { async authenticate() { return { ok: true, actor: { id: "usr_test" } }; } }
}
);
assert.equal(upstreamUrl, "http://hwlab-tasktree-api.hwlab-v03.svc.cluster.local:6673/v1/tasktree/groups");
assert.equal(response.status, 200);
assert.deepEqual(JSON.parse(response.body), { ok: true, operation: "group.list", data: { groups: [] } });
} finally {
globalThis.fetch = originalFetch;
}
});
function captureResponse() {
return {
status: 0,
body: "",
writeHead(status: number) { this.status = status; },
end(body: string) { this.body = body; }
};
}