42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
/** Lectura POST de referencias: respuestas sintéticas por propósito, ninguna escritura. */
|
|
export async function interceptSoftwareReads(page, resources, companyId, origin) {
|
|
await page.route(
|
|
`${origin}/api/resource-application-references/${companyId}/resolve`,
|
|
(route) => {
|
|
if (route.request().method() !== "POST") {
|
|
return route.fallback();
|
|
}
|
|
const request = route.request().postDataJSON();
|
|
|
|
if (!["software-installation", "application-configuration"].includes(request.purpose)) {
|
|
throw new Error("Propósito de lectura no previsto por la fixture.");
|
|
}
|
|
const items = request.ids.map((id) => {
|
|
const resource = resources.find((item) => item.id === id && item.companyId === companyId);
|
|
|
|
if (!resource || resource.specification.templateName !== "Aplicación") {
|
|
return { id, status: "unavailable" };
|
|
}
|
|
|
|
return {
|
|
id,
|
|
status: "resolved",
|
|
reference: {
|
|
id,
|
|
scope: "company",
|
|
companyId,
|
|
templateId: resource.values.templateId,
|
|
name: resource.values.name,
|
|
active: resource.values.active,
|
|
kind: "application",
|
|
},
|
|
};
|
|
});
|
|
|
|
return route.fulfill({ json: { purpose: request.purpose, items } });
|
|
}
|
|
);
|
|
|
|
return true;
|
|
}
|