56 lines
2.2 KiB
Python
56 lines
2.2 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from mais_humana.catalog import get_platform
|
|
from mais_humana.evidence_index import (
|
|
EvidenceQuery,
|
|
build_evidence_index,
|
|
evidence_counts_by_kind,
|
|
evidence_gap_summary,
|
|
evidence_markdown,
|
|
evidence_records_for_human_surface,
|
|
query_evidence,
|
|
)
|
|
from mais_humana.scanner import scan_platform
|
|
from tests.helpers import make_tmp
|
|
|
|
|
|
class EvidenceIndexTests(unittest.TestCase):
|
|
def test_index_can_be_queried_by_platform_kind_and_text(self) -> None:
|
|
root = make_tmp()
|
|
repo = root / "tudo-para-ia-identity-platform"
|
|
repo.mkdir()
|
|
(repo / "README.md").write_text("identity RBAC credentialRef audit trace health readiness", encoding="utf-8")
|
|
(repo / "src.ts").write_text("export const route = { path: '/identity/health' };\n", encoding="utf-8")
|
|
scan = scan_platform(root, get_platform("identity"))
|
|
records = build_evidence_index((scan,))
|
|
self.assertTrue(records)
|
|
identity_records = query_evidence(records, EvidenceQuery(platform_id="identity"))
|
|
self.assertEqual(len(identity_records), len(records))
|
|
security = query_evidence(records, EvidenceQuery(kind="security"))
|
|
self.assertTrue(security)
|
|
text = query_evidence(records, EvidenceQuery(text="health"))
|
|
self.assertTrue(text)
|
|
|
|
def test_index_markdown_and_gap_summary_are_stable(self) -> None:
|
|
root = make_tmp()
|
|
repo = root / "tudo-para-ia-business-platform"
|
|
repo.mkdir()
|
|
(repo / "README.md").write_text("business invoice entitlement checkout health", encoding="utf-8")
|
|
scan = scan_platform(root, get_platform("business"))
|
|
records = build_evidence_index((scan,))
|
|
counts = evidence_counts_by_kind(records)
|
|
self.assertTrue(counts)
|
|
markdown = evidence_markdown(records)
|
|
self.assertIn("Indice de evidencias", markdown)
|
|
surface_records = evidence_records_for_human_surface(records)
|
|
self.assertLessEqual(len(surface_records), len(records))
|
|
gaps = evidence_gap_summary(records, ("business", "identity"))
|
|
self.assertTrue(any("identity" in gap for gap in gaps))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|