railiance-platform/tests/test_verify_informed_decision_requester.py
tegwick 4db8563eff
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Prepare bounded native requester and wrong-identity proofs
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a10780-6d41-7952-9718-dfbc1f41236f
2026-10-04 23:32:00 +02:00

34 lines
1.6 KiB
Python

import contextlib
import importlib.util
import io
import unittest
from pathlib import Path
from unittest.mock import patch
spec = importlib.util.spec_from_file_location('proof', Path(__file__).resolve().parents[1]/'scripts/verify_informed_decision_requester.py')
m = importlib.util.module_from_spec(spec)
spec.loader.exec_module(m)
class ProofTests(unittest.TestCase):
def test_negative_identity_is_bounded(self):
with patch.object(m.Path, 'read_text', return_value='synthetic-only'), patch.object(m, 'http', return_value=(403, {})):
result = m.run(True)
self.assertTrue(result['complete'])
self.assertTrue(result['wrong_identity_refused'])
def test_exception_text_never_enters_receipt_or_output(self):
output = io.StringIO()
with patch.object(m.Path, 'read_text', side_effect=RuntimeError('SECRET-SENTINEL')), contextlib.redirect_stdout(output), contextlib.redirect_stderr(output):
result = m.run()
self.assertFalse(result['complete'])
self.assertNotIn('SECRET-SENTINEL', str(result))
self.assertEqual(output.getvalue(), '')
def test_unexpected_admission_revokes_reader_and_still_fails(self):
with patch.object(m.Path, 'read_text', return_value='synthetic-only'), patch.object(m, 'http', side_effect=[(200, {'auth': {'client_token': 'synthetic-reader'}}), (204, {}), (403, {})]):
result = m.run(True)
self.assertFalse(result['complete'])
self.assertTrue(result['reader_revoked'])
self.assertTrue(result['revoked_lookup_refused'])
self.assertNotIn('synthetic-reader', str(result))
if __name__ == '__main__': unittest.main()