import json import unittest from unittest import mock import sys from pathlib import Path code_path = Path(__file__).parents[1] / "ca_core" sys.path.insert(0, str(code_path)) from ca_core.crypto.zenroom_service_client import ZenroomServiceClient class _FakeHTTPResponse: def __init__(self, body: bytes): self._body = body def read(self): return self._body def __enter__(self): return self def __exit__(self, exc_type, exc, tb): return False class TestZenroomServiceClient(unittest.TestCase): @mock.patch("crypto.zenroom_service_client.urllib.request.urlopen") def test_generate_keypair_unpacks_keys(self, m_urlopen): payload = { "Owner": { "ecdh_public_key": "PUBKEY", "keyring": {"ecdh": "PRIVKEY"}, } } m_urlopen.return_value = _FakeHTTPResponse( json.dumps(payload).encode("utf-8") ) client = ZenroomServiceClient(base_url="http://localhost:3300") res = client.generate_keypair("User123") self.assertEqual(res["public_key"], "PUBKEY") self.assertEqual(res["private_key"], "PRIVKEY") req = m_urlopen.call_args[0][0] self.assertEqual(req.method, "POST") self.assertTrue( req.full_url.endswith( "/api/Generate-a-keypair,-reading-identity-from-data" ) )