/home/techb158/balavpn.abdallabala.com/tests
Edit: /home/techb158/balavpn.abdallabala.com/tests/saas-domain.test.js (3137B)
const assert = require("assert");
const {
scoreRisk,
calculateDashboard,
evaluateGate
} = require("../src/domain/risk-engine");
const {
hasPermission,
resolvePermissions
} = require("../src/domain/permissions");
const {
buildEntitlements,
assertWithinLimit
} = require("../src/domain/entitlements");
const {
listSupportedProviders,
riskStatusToExternalStatus
} = require("../src/domain/integrations");
const scored = scoreRisk({
probability: 5,
impact: 5,
detectability: 5,
mitigationProgress: 50,
mitigationEffectiveness: 50,
status: "OPEN"
});
assert.strictEqual(scored.rawScore, 125);
assert.strictEqual(scored.normalizedScore, 100);
assert.strictEqual(scored.residualScore, 75);
assert.strictEqual(scored.residualSeverity, "Critical");
assert.ok(hasPermission("owner", "billing:manage"));
assert.ok(hasPermission(resolvePermissions("viewer"), "project:read"));
assert.strictEqual(hasPermission("viewer", "risk:write"), false);
const entitlements = buildEntitlements({
status: "ACTIVE",
source: "MANUAL",
planCode: "starter",
userLimit: 5,
projectLimit: 3,
reportLimitMonthly: 25,
integrationLimit: 1,
storageMbLimit: 512,
adminOverride: false
}, { status: "ACTIVE", planCode: "starter" });
assert.strictEqual(entitlements.active, true);
assert.doesNotThrow(() => assertWithinLimit(entitlements, "projects", 2, 1));
assert.throws(() => assertWithinLimit(entitlements, "projects", 3, 1), /Plan limit exceeded/);
const providers = listSupportedProviders();
assert.strictEqual(providers.length, 4);
assert.strictEqual(riskStatusToExternalStatus("MICROSOFT_PLANNER", { status: "OPEN", residualScore: 80 }), "Blocked bucket");
const project = {
id: "project-1",
name: "Demo",
thresholds: {
overallRiskMax: 50,
criticalOpenMax: 0,
mitigationCompletionMin: 60,
dataReadinessMin: 70,
selectedModelF1Min: 0.8,
selectedModelStabilityMin: 75
},
reviews: {
dataReadiness: { score: 80, evidence: "Approved lineage." },
ethicalReview: { status: "Approved", evidence: "Approved." },
legalReview: { status: "Approved", evidence: "Approved." }
},
lifecyclePhases: [{ name: "Testing", readinessScore: 80, sequence: 1 }],
risks: [
{
id: "risk-1",
title: "Critical AI risk",
dimension: "Technical",
lifecyclePhase: "Testing",
probability: 5,
impact: 5,
detectability: 5,
status: "IN_MITIGATION",
approvalStatus: "PENDING",
mitigations: [{ progressPercent: 20, effectivenessPercent: 50 }]
}
],
experiments: [
{
name: "Model A",
selected: true,
metrics: [
{ metricName: "f1", metricValue: 0.85 },
{ metricName: "stability", metricValue: 80 }
]
}
]
};
const dashboard = calculateDashboard(project);
assert.strictEqual(dashboard.summary.totalRisks, 1);
assert.strictEqual(dashboard.gate.status, "BLOCKED");
assert.ok(evaluateGate(project, dashboard.scoredRisks, project.experiments, dashboard.summary.overallScore, dashboard.summary.mitigationCompletion).blockedCount > 0);
console.log("All COSMIC SaaS domain tests passed.");