/home/techb158/cosmic-risk.abdallabala.com/tests
Edit: /home/techb158/cosmic-risk.abdallabala.com/tests/local-server.test.js (5687B)
const assert = require("assert");
const { server } = require("../local-server");
const port = 8890 + Math.floor(Math.random() * 100);
const baseUrl = `http://127.0.0.1:${port}`;
function listen() { return new Promise(resolve => server.listen(port, resolve)); }
function close() { return new Promise(resolve => server.close(resolve)); }
async function request(pathname, options = {}) {
const response = await fetch(`${baseUrl}${pathname}`, {
method: options.method || "GET",
headers: Object.assign({ "Content-Type": "application/json" }, options.headers || {}),
body: options.body ? JSON.stringify(options.body) : undefined
});
const contentType = response.headers.get("content-type") || "";
const body = contentType.includes("application/json") ? await response.json() : await response.text();
return { response, body };
}
(async () => {
await listen();
try {
const page = await request("/dashboard");
assert.ok(String(page.body).includes("COSMIC AI-Risk Dashboard"));
const health = await request("/api/health");
assert.strictEqual(health.body.status, "ok");
const ready = await request("/api/ready");
assert.strictEqual(ready.body.ok, true);
const me = await request("/api/auth/me");
assert.strictEqual(me.body.actor.email, "super-owner@cosmic.local");
const users = await request("/api/users");
assert.ok(users.body.users.length >= 2);
const roles = await request("/api/roles");
assert.ok(roles.body.roles.find(role => role.code === "owner"));
const invite = await request("/api/auth/invite", { method: "POST", body: { organizationId: "org-demo", email: "pilot@cosmic.local", roleCode: "viewer" } });
assert.strictEqual(invite.response.status, 201);
const accepted = await request("/api/auth/accept-invite", { method: "POST", body: { token: invite.body.invitation.token, displayName: "Pilot Viewer" } });
assert.strictEqual(accepted.body.user.email, "pilot@cosmic.local");
const workspaces = await request("/api/workspaces");
const workspaceId = workspaces.body.workspaces[0].id;
const projects = await request(`/api/workspaces/${workspaceId}/projects`);
const projectId = projects.body.projects[0].id;
const dashboard = await request(`/api/projects/${projectId}/dashboard`);
assert.ok(dashboard.body.dashboard.summary.totalRisks >= 35);
const createdRisk = await request(`/api/projects/${projectId}/risks`, { method: "POST", body: { title: "Full SaaS local test risk", probability: 4, impact: 4, detectability: 3, dimension: "Technical" } });
const riskId = createdRisk.body.risk.id;
assert.strictEqual(createdRisk.response.status, 201);
const updatedRisk = await request(`/api/risks/${riskId}`, { method: "PATCH", body: { status: "In mitigation" } });
assert.strictEqual(updatedRisk.body.risk.status, "IN_MITIGATION");
const mitigation = await request(`/api/risks/${riskId}/mitigations`, { method: "POST", body: { title: "Full local mitigation", progressPercent: 80, effectivenessPercent: 70, evidenceTitle: "Local evidence" } });
assert.strictEqual(mitigation.response.status, 201);
const mitigationId = mitigation.body.mitigation.id;
const patchedMitigation = await request(`/api/mitigations/${mitigationId}`, { method: "PATCH", body: { status: "Done", progressPercent: 100 } });
assert.strictEqual(patchedMitigation.body.mitigation.status, "DONE");
const evidence = await request(`/api/mitigations/${mitigationId}/evidence`, { method: "POST", body: { title: "Final evidence", uri: "internal://evidence" } });
assert.strictEqual(evidence.response.status, 201);
const gate = await request(`/api/projects/${projectId}/gate/evaluate`, { method: "POST" });
assert.strictEqual(gate.response.status, 201);
const history = await request(`/api/projects/${projectId}/gate/history`);
assert.ok(history.body.gates.length >= 1);
const decision = await request(`/api/gates/${gate.body.gate.id}/decisions`, { method: "POST", body: { decision: "NEEDS_CHANGES", reason: "Local test review" } });
assert.strictEqual(decision.response.status, 201);
const providers = await request("/api/integration-providers");
assert.strictEqual(providers.body.providers.length, 4);
const integrations = await request(`/api/workspaces/${workspaceId}/integrations`);
const integrationId = integrations.body.integrations[0].id;
const sync = await request(`/api/integrations/${integrationId}/sync`, { method: "POST" });
assert.strictEqual(sync.body.syncRun.status, "Completed");
const billing = await request("/api/billing/subscription", { method: "PATCH", body: { status: "ACTIVE", planCode: "team" } });
assert.strictEqual(billing.body.subscription.status, "ACTIVE");
const report = await request(`/api/projects/${projectId}/reports/full`);
assert.ok(report.body.dashboard.summary.totalRisks >= 36);
const csv = await request(`/api/projects/${projectId}/reports/risk-register.csv`);
assert.ok(String(csv.body).includes("normalizedScore"));
const html = await request(`/api/projects/${projectId}/reports/executive.html`);
assert.ok(String(html.body).includes("Overall score"));
const audit = await request(`/api/projects/${projectId}/audit`);
assert.ok(audit.body.auditEvents.length >= 1);
const deleted = await request(`/api/risks/${riskId}`, { method: "DELETE" });
assert.strictEqual(deleted.body.deleted, true);
console.log("All COSMIC SaaS local platform tests passed.");
} finally {
await close();
}
})().catch(async error => {
console.error(error);
try { await close(); } catch (_error) {}
process.exit(1);
});