31 lines
1.8 KiB
Python
31 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
import importlib.util
|
|
from pathlib import Path
|
|
import unittest
|
|
|
|
SCRIPT = Path(__file__).with_name("cognitive-gateway.py")
|
|
SPEC = importlib.util.spec_from_file_location("gateway", SCRIPT)
|
|
MODULE = importlib.util.module_from_spec(SPEC)
|
|
SPEC.loader.exec_module(MODULE)
|
|
|
|
|
|
class CognitiveGatewayTest(unittest.TestCase):
|
|
def test_dynamic_persona_routes_are_bounded_to_registered_id_shape(self):
|
|
self.assertEqual(MODULE.endpoint("zy-rpc persona-status ICE-BB-0005"), ("GET", "/v1/persona/ICE-BB-0005/status"))
|
|
self.assertEqual(MODULE.endpoint("zy-rpc persona-ingest ICE-BB-0003"), ("POST", "/v1/persona/ICE-BB-0003/ingest"))
|
|
self.assertEqual(MODULE.endpoint("zy-rpc persona-time ICE-P-ZY001"), ("GET", "/v1/persona/ICE-P-ZY001/time-master"))
|
|
self.assertEqual(MODULE.endpoint("zy-rpc zero-core-entry"), ("GET", "/v1/entry/resolve?domain=DOM-FIFTH-0001&channel=ICE-CH-ZC001"))
|
|
self.assertEqual(MODULE.endpoint("zy-rpc zero-core-system-dialogue"), ("POST", "/v1/system/zero-core/dialogue"))
|
|
self.assertEqual(MODULE.endpoint("zy-rpc fifth-domain-controller-status"), ("GET", "/v1/fifth-domain/controller/status"))
|
|
self.assertEqual(MODULE.endpoint("zy-rpc fifth-domain-controller-challenge"), ("POST", "/v1/fifth-domain/controller/challenge"))
|
|
self.assertEqual(MODULE.endpoint("zy-rpc fifth-domain-controller-enter"), ("POST", "/v1/fifth-domain/controller/enter"))
|
|
|
|
def test_unknown_or_injected_persona_command_is_rejected(self):
|
|
with self.assertRaisesRegex(ValueError, "ACTION_NOT_REGISTERED"):
|
|
MODULE.endpoint("zy-rpc persona-status ICE-BB-0005;id")
|
|
with self.assertRaisesRegex(ValueError, "ACTION_NOT_REGISTERED"):
|
|
MODULE.endpoint("zy-rpc persona-status ICE-GL-SY001")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|