/home/techb158/cosmic.abdallabala.com/tests
NameSizeModeActions
access-control.test.js56180666editdlrm
api-workflow.test.js71450666editdlrm
gate-workflow.test.js29460666editdlrm
integration-workflow.test.js37030666editdlrm
mitigation-workflow.test.js33450666editdlrm
oauth-live-connectors.test.js56220666editdlrm
production-hardening.test.js27750666editdlrm
reporting-workflow.test.js38000666editdlrm
risk-engine.test.js12440666editdlrm
storage-layer.test.js32720666editdlrm
Edit: /home/techb158/cosmic.abdallabala.com/tests/gate-workflow.test.js (2946B)
const assert = require("assert"); const fs = require("fs"); const path = require("path"); const os = require("os"); const { JsonDatabase } = require("../src/storage/jsonDatabase.js"); const { DashboardService } = require("../src/services/dashboardService.js"); const { GateWorkflowService } = require("../src/services/gateWorkflowService.js"); const source = path.join(__dirname, "..", "data", "database.json"); const temp = path.join(os.tmpdir(), `cosmic-gate-db-${Date.now()}.json`); fs.copyFileSync(source, temp); const database = new JsonDatabase(temp); const dashboard = new DashboardService(database); const gates = new GateWorkflowService(database); const projectId = "cosmic-ai-risk-001"; const evaluated = dashboard.evaluateGate(projectId, "USER-REVIEW"); assert.ok(evaluated.persistedGate, "Gate evaluation should return a persisted gate view"); assert.ok(evaluated.persistedGate.id, "Persisted gate should have an id"); assert.ok(evaluated.persistedGate.criteria.length >= 8, "Persisted gate should include gate criteria snapshot"); const history = gates.listGateHistory(projectId); assert.ok(history.length >= 1, "Gate history should include persisted evaluation"); assert.strictEqual(history[0].id, evaluated.persistedGate.id, "Latest gate should be first in history"); const criterion = history[0].criteria[0]; const updatedCriterion = gates.updateCriterion(criterion.id, { reviewerStatus: "Evidence requested", reviewerNote: "Attach the signed review evidence before deployment.", evidenceUri: "internal://evidence/gate-review" }, "USER-REVIEW"); assert.strictEqual(updatedCriterion.reviewerStatus, "Evidence requested", "Criterion reviewer status should update"); assert.strictEqual(updatedCriterion.reviewerNote, "Attach the signed review evidence before deployment.", "Criterion reviewer note should update"); assert.strictEqual(updatedCriterion.evidenceUri, "internal://evidence/gate-review", "Criterion evidence URI should update"); const reviewedGate = gates.addDecision(history[0].id, { decision: "Needs changes", reviewerName: "Governance Reviewer", reason: "Blocking criteria need additional evidence before deployment." }, "USER-REVIEW"); assert.strictEqual(reviewedGate.reviewStatus, "Needs changes", "Gate review status should reflect latest decision"); assert.ok(reviewedGate.latestDecision, "Gate should expose latest reviewer decision"); assert.strictEqual(reviewedGate.latestDecision.decision, "Needs changes", "Latest decision should match reviewer input"); const auditEvents = gates.listAuditEvents(projectId); assert.ok(auditEvents.some(event => event.entityType === "GateCriterion" && event.action === "update"), "Criterion update should create audit event"); assert.ok(auditEvents.some(event => event.entityType === "GateDecision" && event.action === "create"), "Gate decision should create audit event"); fs.unlinkSync(temp); console.log("All COSMIC AI-Risk gate workflow tests passed.");