Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a10780-6d41-7952-9718-dfbc1f41236f
34 lines
1.6 KiB
Python
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()
|