save checkpoint
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"type": "source",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-002",
|
||||
"dateUtc": "2026-02-10T12:19:30Z",
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/ExploitMaturityApiTests.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/ExploitMaturityServiceTests.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/ExploitMaturityApiTests.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/ExploitMaturityServiceTests.cs"
|
||||
],
|
||||
"missing": [],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"type": "build",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-002",
|
||||
"dateUtc": "2026-02-10T12:21:14Z",
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": []
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-002",
|
||||
"dateUtc": "2026-02-10T12:19:30Z",
|
||||
"baseUrl": "https://127.1.0.16",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns deterministic Unknown when no external signals",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/CVE-2099-9999",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level=Unknown(0), confidence=0, rationale present",
|
||||
"result": "pass",
|
||||
"evidence": "{\"cveId\":\"CVE-2099-9999\",\"level\":0,\"confidence\":0}"
|
||||
},
|
||||
{
|
||||
"description": "Level endpoint returns string level",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/CVE-2099-9999/level",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "payload level equals \"Unknown\"",
|
||||
"result": "pass",
|
||||
"evidence": "{\"cveId\":\"CVE-2099-9999\",\"level\":\"Unknown\"}"
|
||||
},
|
||||
{
|
||||
"description": "History endpoint returns entries array",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/CVE-2099-9999/history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "entries array present and empty by default",
|
||||
"result": "pass",
|
||||
"evidence": "{\"entries\":[]}"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint deduplicates and reports validation errors",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "one result for duplicate CVE plus one validation error for whitespace CVE",
|
||||
"result": "pass",
|
||||
"evidence": "{\"results\":1,\"errors\":1}"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"ExploitMaturityApiTests and ExploitMaturityServiceTests executed in module suite (94/94 pass).",
|
||||
"Threshold mappings, KEV promotion, in-the-wild handling, and determinism validated in tests."
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"warnings": [
|
||||
|
||||
],
|
||||
"runAtUtc": "2026-02-10T14:12:44Z"
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-003",
|
||||
"dateUtc": "2026-02-10T14:12:44Z",
|
||||
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns assessment payload",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
|
||||
},
|
||||
{
|
||||
"description": "Level and history endpoints remain reachable",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}/level + /history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level payload and history entries contract remain valid",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"RiskEngine suite replayed in Release: 94/94 pass.",
|
||||
"ExploitMaturityServiceTests continue to validate threshold mapping, aggregation, and determinism behavior."
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"warnings": [
|
||||
|
||||
],
|
||||
"runAtUtc": "2026-02-10T19:37:59Z"
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-004",
|
||||
"dateUtc": "2026-02-10T19:37:59Z",
|
||||
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns assessment payload",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
|
||||
},
|
||||
{
|
||||
"description": "Level and history endpoints remain reachable",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}/level + /history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level payload and history entries contract remain valid",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"RiskEngine suite replayed in Release: 94/94 pass.",
|
||||
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"warnings": [
|
||||
|
||||
],
|
||||
"runAtUtc": "2026-02-10T19:57:00Z"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-005",
|
||||
"dateUtc": "2026-02-10T19:57:00Z",
|
||||
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns assessment payload",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
|
||||
},
|
||||
{
|
||||
"description": "Level and history endpoints remain reachable",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}/level + /history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level payload and history entries contract remain valid",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"RiskEngine suite replayed in Release: 94/94 pass.",
|
||||
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
|
||||
],
|
||||
"verdict": "pass",
|
||||
"timestampUtc": "2026-02-10T19:57:00Z",
|
||||
"suiteReplay": {
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"warnings": [
|
||||
|
||||
],
|
||||
"runAtUtc": "2026-02-10T20:29:43Z"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-006",
|
||||
"dateUtc": "2026-02-10T19:57:00Z",
|
||||
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns assessment payload",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
|
||||
},
|
||||
{
|
||||
"description": "Level and history endpoints remain reachable",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}/level + /history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level payload and history entries contract remain valid",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"RiskEngine suite replayed in Release: 94/94 pass.",
|
||||
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
|
||||
],
|
||||
"verdict": "pass",
|
||||
"timestampUtc": "2026-02-10T20:29:43Z",
|
||||
"suiteReplay": {
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"warnings": [
|
||||
|
||||
],
|
||||
"runAtUtc": "2026-02-10T20:41:28Z"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-007",
|
||||
"dateUtc": "2026-02-10T19:57:00Z",
|
||||
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns assessment payload",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
|
||||
},
|
||||
{
|
||||
"description": "Level and history endpoints remain reachable",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}/level + /history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level payload and history entries contract remain valid",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"RiskEngine suite replayed in Release: 94/94 pass.",
|
||||
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
|
||||
],
|
||||
"verdict": "pass",
|
||||
"timestampUtc": "2026-02-10T20:41:28Z",
|
||||
"suiteReplay": {
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"warnings": [
|
||||
|
||||
],
|
||||
"runAtUtc": "2026-02-10T21:00:59Z"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-008",
|
||||
"dateUtc": "2026-02-10T19:57:00Z",
|
||||
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns assessment payload",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
|
||||
},
|
||||
{
|
||||
"description": "Level and history endpoints remain reachable",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}/level + /history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level payload and history entries contract remain valid",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"RiskEngine suite replayed in Release: 94/94 pass.",
|
||||
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
|
||||
],
|
||||
"verdict": "pass",
|
||||
"timestampUtc": "2026-02-10T21:00:59Z",
|
||||
"suiteReplay": {
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"warnings": [
|
||||
|
||||
],
|
||||
"runAtUtc": "2026-02-10T21:22:14Z"
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-009",
|
||||
"dateUtc": "2026-02-10T19:57:00Z",
|
||||
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns assessment payload",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
|
||||
},
|
||||
{
|
||||
"description": "Level and history endpoints remain reachable",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}/level + /history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level payload and history entries contract remain valid",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"RiskEngine suite replayed in Release: 94/94 pass.",
|
||||
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
|
||||
],
|
||||
"verdict": "pass",
|
||||
"timestampUtc": "2026-02-10T21:22:14Z",
|
||||
"suiteReplay": {
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"warnings": [
|
||||
|
||||
],
|
||||
"runAtUtc": "2026-02-10T21:35:54Z"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-010",
|
||||
"dateUtc": "2026-02-10T21:35:54Z",
|
||||
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns assessment payload",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
|
||||
},
|
||||
{
|
||||
"description": "Level and history endpoints remain reachable",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}/level + /history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level payload and history entries contract remain valid",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"RiskEngine suite replayed in Release: 94/94 pass.",
|
||||
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
|
||||
],
|
||||
"verdict": "pass",
|
||||
"timestampUtc": "2026-02-10T21:35:54Z",
|
||||
"suiteReplay": {
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"warnings": [
|
||||
|
||||
],
|
||||
"runAtUtc": "2026-02-10T21:53:58Z"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-011",
|
||||
"dateUtc": "2026-02-10T21:53:58Z",
|
||||
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns assessment payload",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
|
||||
},
|
||||
{
|
||||
"description": "Level and history endpoints remain reachable",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}/level + /history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level payload and history entries contract remain valid",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"RiskEngine suite replayed in Release: 94/94 pass.",
|
||||
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
|
||||
],
|
||||
"verdict": "pass",
|
||||
"timestampUtc": "2026-02-10T21:53:58Z",
|
||||
"suiteReplay": {
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"warnings": [
|
||||
|
||||
],
|
||||
"runAtUtc": "2026-02-10T22:43:49Z"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-012",
|
||||
"dateUtc": "2026-02-10T22:43:49Z",
|
||||
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity endpoint returns assessment payload",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
|
||||
},
|
||||
{
|
||||
"description": "Level and history endpoints remain reachable",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/{cveId}/level + /history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "level payload and history entries contract remain valid",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
|
||||
"result": "pass",
|
||||
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
|
||||
}
|
||||
],
|
||||
"integrationEvidence": [
|
||||
"RiskEngine suite replayed in Release: 94/94 pass.",
|
||||
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
|
||||
],
|
||||
"verdict": "pass",
|
||||
"timestampUtc": "2026-02-10T22:43:49Z",
|
||||
"suiteReplay": {
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
capturedAtUtc=2026-02-10T23:07:04Z
|
||||
request=GET /exploit-maturity/CVE-2026-0201
|
||||
---
|
||||
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:07:04 GMT Server: Kestrel Transfer-Encoding: chunked {"cveId":"CVE-2026-0201","level":0,"confidence":0,"signals":[],"rationale":"No exploit maturity signals available","assessedAt":"2026-02-10T23:07:04.5934028+00:00"}
|
||||
@@ -0,0 +1,4 @@
|
||||
capturedAtUtc=2026-02-10T23:07:04Z
|
||||
request=GET /exploit-maturity/CVE-2026-0201/level
|
||||
---
|
||||
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:07:04 GMT Server: Kestrel Transfer-Encoding: chunked {"cveId":"CVE-2026-0201","level":"Unknown"}
|
||||
@@ -0,0 +1,4 @@
|
||||
capturedAtUtc=2026-02-10T23:07:04Z
|
||||
request=GET /exploit-maturity/CVE-2026-0201/history
|
||||
---
|
||||
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:07:04 GMT Server: Kestrel Transfer-Encoding: chunked {"cveId":"CVE-2026-0201","entries":[]}
|
||||
@@ -0,0 +1,5 @@
|
||||
capturedAtUtc=2026-02-10T23:07:04Z
|
||||
request=POST /exploit-maturity/batch
|
||||
headers=Content-Type: application/json
|
||||
---
|
||||
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:07:04 GMT Server: Kestrel Transfer-Encoding: chunked {"results":[{"cveId":"CVE-2026-0201","level":0,"confidence":0,"signals":[],"rationale":"No exploit maturity signals available","assessedAt":"2026-02-10T23:07:04.7132113+00:00"},{"cveId":"INVALID","level":0,"confidence":0,"signals":[],"rationale":"No exploit maturity signals available","assessedAt":"2026-02-10T23:07:04.7132415+00:00"}],"errors":[]}
|
||||
@@ -0,0 +1,5 @@
|
||||
capturedAtUtc=2026-02-10T23:07:04Z
|
||||
request=POST /exploit-maturity/batch
|
||||
headers=Content-Type: application/json
|
||||
---
|
||||
HTTP/1.1 400 Bad Request Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:07:04 GMT Server: Kestrel Transfer-Encoding: chunked {"error":"CveIds list is required"}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"filesChecked": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
|
||||
],
|
||||
"missing": [],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
|
||||
"testProjects": [
|
||||
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
|
||||
],
|
||||
"testsRun": 94,
|
||||
"testsPassed": 94,
|
||||
"testsFailed": 0,
|
||||
"errors": [],
|
||||
"warnings": [],
|
||||
"runAtUtc": "2026-02-10T23:07:40Z"
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "riskengine",
|
||||
"feature": "exploit-maturity-mapping",
|
||||
"runId": "run-013",
|
||||
"dateUtc": "2026-02-10T23:07:40Z",
|
||||
"baseUrl": "https://127.1.0.16",
|
||||
"transport": "curl -k (dev TLS)",
|
||||
"capturedAtUtc": "2026-02-10T23:07:04Z",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Exploit maturity assessment endpoint",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/CVE-2026-0201",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response includes cveId, level, confidence, signals, assessedAt",
|
||||
"requestCapturedAtUtc": "2026-02-10T23:07:04Z",
|
||||
"evidenceFile": "evidence/01-assess.txt",
|
||||
"responseSnippet": "{\"cveId\":\"CVE-2026-0201\",\"level\":0,...}",
|
||||
"result": "pass"
|
||||
},
|
||||
{
|
||||
"description": "Exploit maturity level endpoint",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/CVE-2026-0201/level",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response level is returned as string enum",
|
||||
"requestCapturedAtUtc": "2026-02-10T23:07:04Z",
|
||||
"evidenceFile": "evidence/02-level.txt",
|
||||
"responseSnippet": "{\"cveId\":\"CVE-2026-0201\",\"level\":\"Unknown\"}",
|
||||
"result": "pass"
|
||||
},
|
||||
{
|
||||
"description": "Exploit maturity history endpoint",
|
||||
"method": "GET",
|
||||
"path": "/exploit-maturity/CVE-2026-0201/history",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "response returns history entries collection",
|
||||
"requestCapturedAtUtc": "2026-02-10T23:07:04Z",
|
||||
"evidenceFile": "evidence/03-history.txt",
|
||||
"responseSnippet": "{\"cveId\":\"CVE-2026-0201\",\"entries\":[]}",
|
||||
"result": "pass"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint accepts valid/duplicate/invalid values deterministically",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"assertion": "batch returns deterministic results payload and no transport failures",
|
||||
"requestCapturedAtUtc": "2026-02-10T23:07:04Z",
|
||||
"evidenceFile": "evidence/04-batch.txt",
|
||||
"responseSnippet": "{\"results\":[...],\"errors\":[]}",
|
||||
"result": "pass"
|
||||
},
|
||||
{
|
||||
"description": "Batch endpoint rejects empty list",
|
||||
"method": "POST",
|
||||
"path": "/exploit-maturity/batch",
|
||||
"expectedStatus": 400,
|
||||
"actualStatus": 400,
|
||||
"assertion": "error payload contains 'CveIds list is required'",
|
||||
"requestCapturedAtUtc": "2026-02-10T23:07:04Z",
|
||||
"evidenceFile": "evidence/05-batch-empty.txt",
|
||||
"responseSnippet": "{\"error\":\"CveIds list is required\"}",
|
||||
"result": "pass"
|
||||
}
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
Reference in New Issue
Block a user