# SPDX-License-Identifier: MIT
"""Durable checks for the reviewed sanitized integration evidence."""

import json
from pathlib import Path
import sys
import unittest
import xml.etree.ElementTree as ET

sys.path.insert(0, str(Path(__file__).parent))

from run_integration import (  # noqa: E402
    RAW_ACCOUNT,
    RAW_EMAIL,
    assert_shape,
)

EVIDENCE_PATH = Path(__file__).with_name(
    "sanitized-trace-shapes-2026-08-26.json"
)
DIAGRAM_PATH = Path(__file__).with_name("sanitized-trace-shape-2026-08-26.svg")


class SanitizedEvidenceTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.payload = json.loads(EVIDENCE_PATH.read_text(encoding="utf-8"))
        cls.serialized = json.dumps(cls.payload, sort_keys=True)

    def test_evidence_has_no_raw_identifiers_or_credentials(self) -> None:
        self.assertNotIn(RAW_EMAIL, self.serialized)
        self.assertNotIn(RAW_ACCOUNT, self.serialized)
        self.assertNotIn("public_key", self.serialized.lower())
        self.assertNotIn("secret_key", self.serialized.lower())
        self.assertNotIn("pk-lf-", self.serialized)
        self.assertNotIn("sk-lf-", self.serialized)

    def test_recorded_scenarios_still_meet_the_shape_contract(self) -> None:
        scenarios = self.payload["scenarios"]
        self.assertEqual(
            [scenario["scenario"] for scenario in scenarios],
            ["happy", "retry", "terminal"],
        )
        for scenario in scenarios:
            assert_shape(scenario["scenario"], scenario["observations"])
        self.assertTrue(
            self.payload["unavailableExporter"]["applicationResultPreserved"]
        )

    def test_diagram_is_valid_and_contains_no_raw_identifiers(self) -> None:
        ET.parse(DIAGRAM_PATH)
        diagram = DIAGRAM_PATH.read_text(encoding="utf-8")
        self.assertNotIn(RAW_EMAIL, diagram)
        self.assertNotIn(RAW_ACCOUNT, diagram)
        self.assertNotIn("pk-lf-", diagram)
        self.assertNotIn("sk-lf-", diagram)
        self.assertIn("sanitized-trace-shapes-2026-08-26.json", diagram)
        self.assertIn(self.payload["versions"]["langfusePython"], diagram)
        self.assertIn(self.payload["versions"]["langfuseServer"], diagram)


if __name__ == "__main__":
    unittest.main()
