"""Ehemals SecureOrchestrator-Digest. Jetzt: Der Adapter berechnet den Digest
über den Outbound-Schnappschuss neu und vergleicht ihn mit der Clearance."""
import tempfile
import unittest
from dataclasses import replace
from pathlib import Path

from aria_router.adapter_contract import ResultStatus
from aria_router.adapters import MockAdapter

from tests.helpers import AdapterHarness


class PromptIntegrityTests(unittest.TestCase):

    def test_tampered_prompt_is_blocked(self):
        with tempfile.TemporaryDirectory() as tmp:
            harness = AdapterHarness(Path(tmp))
            adapter = MockAdapter(harness.verifier, "codex")
            original = harness.job("#public Original prompt")
            clearance = harness.clear(adapter, original)
            manipulated = replace(original, envelope=replace(original.envelope, prompt="#public Manipulated prompt"))

            result = adapter.execute(clearance, manipulated)

            self.assertEqual(result.status, ResultStatus.BLOCKED)
            self.assertEqual(result.error_code, "CONTEXT_DIGEST_MISMATCH")
            self.assertEqual(adapter.calls, 0)


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