56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
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"
|
|
)
|
|
)
|