hololake-system-architecture/product-source/hololake-clean-desktop/server/enterprise-responsibility-gate/test_service.py

31 lines
1.9 KiB
Python
Raw Normal View History

import base64
import os
import sqlite3
import tempfile
import unittest
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
from cryptography.hazmat.primitives import serialization
import service
class GateTests(unittest.TestCase):
def test_binding_requires_responsible_domain_and_primary_persona(self):
registry = {"humans": [{"human_number": "TCS-GL-0016∞", "responsibility_domain": "MAIN_DOMAIN", "repository": "awen/guanghu-main-work", "personas": [{"role": "PERSONA_SUBJECT", "current_persona_identity": "PER-AW-ARCH-001"}, {"role": "RELATIONSHIP_CONTINUITY_SUPPORT", "current_persona_identity": "PER-ZQ001"}]}]}
self.assertIsNotNone(service.find_binding(registry, "TCS-GL-0016∞", "PER-AW-ARCH-001", "DOMAIN-MAIN"))
self.assertIsNone(service.find_binding(registry, "TCS-GL-0016∞", "PER-AW-ARCH-001", "DOMAIN-SUB"))
self.assertIsNone(service.find_binding(registry, "TCS-GL-0016∞", "PER-ZQ001", "DOMAIN-MAIN"))
def test_signature_binds_request_domain_human_persona_challenge_and_expiry(self):
private = Ed25519PrivateKey.generate()
public = private.public_key().public_bytes(serialization.Encoding.Raw, serialization.PublicFormat.Raw)
device = {"public_key": base64.b64encode(public).decode(), "request_id": "REQ-1", "domain_id": "DOMAIN-MAIN", "human_number": "TCS-GL-0016∞", "persona_id": "PER-AW-ARCH-001"}
challenge = {"request_id": "REQ-1", "challenge_id": "CH-1", "nonce": "NONCE-1", "expires_at": 2000000000}
signature = private.sign(service.challenge_message(device, challenge))
self.assertTrue(service.verify_challenge_signature(device, challenge, base64.b64encode(signature).decode()))
altered = dict(challenge, nonce="NONCE-2")
self.assertFalse(service.verify_challenge_signature(device, altered, base64.b64encode(signature).decode()))
if __name__ == "__main__":
unittest.main()