TASK22224: harden proxy file routes and expand contracts

This commit is contained in:
2026-03-23 18:14:22 +00:00
parent 91a0ab82ea
commit 3f2b945172
6 changed files with 258 additions and 70 deletions
@@ -547,6 +547,153 @@ test("createrepcompletemessage handler dependency failure returns CREATE_REP_COM
);
});
test("getbloblistproxy success returns proxied payload", async () => {
const mod = loadModule("pages/api/file/getbloblistproxy.js", {
respondError: respondErrorMock,
respondSuccess: respondSuccessMock,
getToken: async () => ({ access_token: "tok" }),
azureHeaders: () => ({ headers: { Authorization: "Bearer tok" } }),
hashAPIPath: () => "&hash=abc",
consoleLogger: () => {},
process: { env: { API_ROOT: "http://example.com" } },
axios: {
get: async () => ({ data: { value: [{ id: "b1" }] } })
}
});
const req = {
query: { container: "cont/1", casefolderID: "CASE/1" }
};
const res = createRes();
await mod.default(req, res);
assert.strictEqual(res.state.statusCode, 200);
assert.deepStrictEqual(JSON.parse(JSON.stringify(res.state.jsonBody)), {
value: [{ id: "b1" }]
});
});
test("getbloblistproxy dependency failure returns GET_BLOB_LIST_PROXY_FAILED", async () => {
const mod = loadModule("pages/api/file/getbloblistproxy.js", {
respondError: respondErrorMock,
respondSuccess: respondSuccessMock,
getToken: async () => ({ access_token: "tok" }),
azureHeaders: () => ({ headers: {} }),
hashAPIPath: () => "&hash=abc",
consoleLogger: () => {},
process: { env: { API_ROOT: "http://example.com" } },
axios: {
get: async () => {
throw new Error("proxy failed");
}
}
});
const req = {
query: { container: "c1", casefolderID: "f1" }
};
const res = createRes();
await mod.default(req, res);
assert.strictEqual(res.state.statusCode, 400);
assert.strictEqual(
res.state.jsonBody.error.code,
"GET_BLOB_LIST_PROXY_FAILED"
);
});
test("getrepsblobproxy success returns proxied payload", async () => {
const mod = loadModule("pages/api/file/getrepsblobproxy.js", {
respondError: respondErrorMock,
respondSuccess: respondSuccessMock,
getToken: async () => ({ access_token: "tok" }),
azureHeaders: () => ({ headers: {} }),
hashAPIPath: () => "&hash=abc",
consoleLogger: () => {},
process: { env: { API_ROOT: "http://example.com" } },
axios: {
get: async () => ({ data: { value: [{ id: "r1" }] } })
}
});
const req = {
query: { container: "c1" }
};
const res = createRes();
await mod.default(req, res);
assert.strictEqual(res.state.statusCode, 200);
assert.deepStrictEqual(JSON.parse(JSON.stringify(res.state.jsonBody)), {
value: [{ id: "r1" }]
});
});
test("getawaitingsubmissionfromblobproxy dependency failure returns GET_AWAITING_SUBMISSION_PROXY_FAILED", async () => {
const mod = loadModule(
"pages/api/file/getawaitingsubmissionfromblobproxy.js",
{
respondError: respondErrorMock,
respondSuccess: respondSuccessMock,
getToken: async () => ({ access_token: "tok" }),
azureHeaders: () => ({ headers: {} }),
hashAPIPath: () => "&hash=abc",
consoleLogger: () => {},
process: { env: { API_ROOT: "http://example.com" } },
axios: {
get: async () => {
throw new Error("awaiting failed");
}
}
}
);
const req = {
query: { container: "c1" }
};
const res = createRes();
await mod.default(req, res);
assert.strictEqual(res.state.statusCode, 400);
assert.strictEqual(
res.state.jsonBody.error.code,
"GET_AWAITING_SUBMISSION_PROXY_FAILED"
);
});
test("createappealcompletemessageproxy dependency failure returns CREATE_APPEAL_COMPLETE_MESSAGE_PROXY_FAILED", async () => {
const mod = loadModule(
"pages/api/file/createappealcompletemessageproxy_api.js",
{
nextConnect: createNextConnectMock(),
middleware: () => {},
respondError: respondErrorMock,
respondSuccess: respondSuccessMock,
getToken: async () => ({ access_token: "tok" }),
azureHeaders: () => ({ headers: {} }),
hashAPIPath: () => "&hash=abc",
consoleLogger: () => {},
process: { env: { API_ROOT: "http://example.com" } },
axios: {
get: async () => {
throw new Error("create appeal proxy failed");
}
}
}
);
const req = {
query: { container: "c1", tempcaseref: "TMP1" }
};
const res = createRes();
await mod.default.handler(req, res);
assert.strictEqual(res.state.statusCode, 400);
assert.strictEqual(
res.state.jsonBody.error.code,
"CREATE_APPEAL_COMPLETE_MESSAGE_PROXY_FAILED"
);
});
test("getawaitingsubmissionfromblob handler success returns payload", async () => {
const mod = loadModule("pages/api/file/getawaitingsubmissionfromblob.js", {
nextConnect: createNextConnectMock(),