railiance-platform/tests/test_telemetry_primary_archive.py

41 lines
1.9 KiB
Python
Raw Normal View History

import importlib.util
import json
from pathlib import Path
from types import SimpleNamespace
import tempfile
import unittest
from unittest.mock import patch
import sys
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'scripts'))
import telemetry_primary_archive as archive
class PrimaryArchiveGuards(unittest.TestCase):
def test_unresumed_capture_and_changed_bytes_never_request_credentials(self):
with tempfile.TemporaryDirectory() as directory:
source = Path(directory) / 'source.age'
source.write_bytes(b'age-encryption.org/v1\nfixture')
receipt = Path(directory) / 'receipt.json'
args = SimpleNamespace(source=source, source_receipt=receipt)
for metadata in [
{'status': 'captured', 'production_resumed': False},
{'status': 'captured', 'production_resumed': True, 'ciphertext_sha256': 'wrong'},
]:
receipt.write_text(json.dumps(metadata))
with patch.object(archive, 'assert_cluster') as access:
with self.assertRaises(ValueError):
archive.run(args, {})
access.assert_not_called()
def test_plaintext_never_requests_credentials(self):
with tempfile.TemporaryDirectory() as directory:
source = Path(directory) / 'source.age'
source.write_bytes(b'plaintext even if the extension claims age')
receipt = Path(directory) / 'receipt.json'
receipt.write_text(json.dumps({'status': 'captured', 'production_resumed': True, 'ciphertext_sha256': archive.digest(source)}))
with patch.object(archive, 'assert_cluster') as access:
with self.assertRaises(ValueError):
archive.run(SimpleNamespace(source=source, source_receipt=receipt), {})
access.assert_not_called()