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

31 lines
1.9 KiB
Python
Raw Permalink 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()