def test_send_message_from_vm_client_to_vm( node: sy.VirtualMachine, client: sy.VirtualMachineClient) -> None: assert node.device is None with pytest.raises(AuthorizationException): client.send_immediate_msg_without_reply(msg=sy.ReprMessage( address=client.address))
def test_send_message_from_device_client_to_device() -> None: bob_phone = sy.Device(name="Bob's iPhone") bob_phone_client = bob_phone.get_client() with pytest.raises(AuthorizationException): bob_phone_client.send_immediate_msg_without_reply(msg=sy.ReprMessage( address=bob_phone_client.address))
def test_send_message_from_domain_client_to_vm() -> None: # Register a 🍰 with a 📱 # Register a 📱 with a 🏰 # Send ✉️ from 🏰 ➡️ 🍰 bob_vm = sy.VirtualMachine(name="Bob") bob_vm_client = bob_vm.get_client() bob_vm.root_verify_key = bob_vm_client.verify_key # inject 📡🔑 as 📍🗝 bob_phone = sy.Device(name="Bob's iPhone") bob_phone_client = bob_phone.get_client() bob_phone.root_verify_key = bob_phone_client.verify_key # inject 📡🔑 as 📍🗝 bob_phone_client.register(client=bob_vm_client) assert bob_vm.device is not None assert bob_vm_client.device is not None bob_domain = sy.Domain(name="Bob's Domain") bob_domain_client = bob_domain.get_client() bob_domain.root_verify_key = bob_domain_client.verify_key # inject 📡🔑 as 📍🗝 # switch keys bob_vm.root_verify_key = bob_domain_client.verify_key # inject 📡🔑 as 📍🗝 bob_domain_client.register(client=bob_phone_client) assert bob_phone.domain is not None assert bob_phone_client.domain is not None bob_domain_client.send_immediate_msg_without_reply(msg=sy.ReprMessage( address=bob_vm.address))
def test_send_message_from_vm_client_to_vm() -> None: bob_vm = sy.VirtualMachine(name="Bob") bob_vm_client = bob_vm.get_client() assert bob_vm.device is None with pytest.raises(AuthorizationException): bob_vm_client.send_immediate_msg_without_reply(msg=sy.ReprMessage( address=bob_vm_client.address))
def test_service_auth_cpl_ofcr_success_as_root() -> None: node = sy.Device() msg = sy.ReprMessage(address=node.address) # Compliance Officer only @service_auth(cpl_ofcr_only=True) def process(node: sy.Device, msg: sy.ReprMessage, verify_key: VerifyKey) -> None: pass process(node=node, msg=msg, verify_key=node.root_verify_key)
def test_service_auth_admin_success_as_root() -> None: node = sy.Device() msg = sy.ReprMessage(address=node.address) # Administrator only @service_auth(admin_only=True) def process(node: sy.Device, msg: sy.ReprMessage, verify_key: VerifyKey) -> None: pass process(node=node, msg=msg, verify_key=node.root_verify_key)
def test_service_auth_guests_succeeds() -> None: node = sy.Device() msg = sy.ReprMessage(address=node.address) new_signing_key = SigningKey.generate() new_verify_key = new_signing_key.verify_key # register_new_guests @service_auth(guests_welcome=True, register_new_guests=True) def process(node: sy.Device, msg: sy.ReprMessage, verify_key: VerifyKey) -> None: pass process(node=node, msg=msg, verify_key=new_verify_key) assert new_verify_key in node.guest_verify_key_registry
def test_service_auth_admin_fails() -> None: node = sy.Device() msg = sy.ReprMessage(address=node.address) random_signing_key = SigningKey.generate() random_verify_key = random_signing_key.verify_key # Administrator only @service_auth(admin_only=True) def process(node: sy.Device, msg: sy.ReprMessage, verify_key: VerifyKey) -> None: pass with pytest.raises(AuthorizationException, match="User lacks Administrator credentials."): process(node=node, msg=msg, verify_key=random_verify_key)
def test_service_auth_cpl_ofcr_success() -> None: node = sy.Device() msg = sy.ReprMessage(address=node.address) random_signing_key = SigningKey.generate() random_verify_key = random_signing_key.verify_key # Compliance Officer only @service_auth(cpl_ofcr_only=True) def process(node: sy.Device, msg: sy.ReprMessage, verify_key: VerifyKey) -> None: pass # NOTE didn't find a method to add a key to cpl_ofcr_verify_key_registry node.cpl_ofcr_verify_key_registry.add(random_verify_key) process(node=node, msg=msg, verify_key=random_verify_key)
def test_service_auth_existing_user() -> None: node = sy.Device() msg = sy.ReprMessage(address=node.address) random_signing_key = SigningKey.generate() random_verify_key = random_signing_key.verify_key # existing_users_only @service_auth(existing_users_only=True) def process(node: sy.Device, msg: sy.ReprMessage, verify_key: VerifyKey) -> None: pass with pytest.raises(AuthorizationException, match="User not known."): process(node=node, msg=msg, verify_key=random_verify_key) # NOTE didn't find a method to add a key to guest_verify_key_registry node.guest_verify_key_registry.add(random_verify_key) process(node=node, msg=msg, verify_key=random_verify_key)
def test_service_auth_root_fails() -> None: node = sy.Device() msg = sy.ReprMessage(address=node.address) random_signing_key = SigningKey.generate() random_verify_key = random_signing_key.verify_key # root_only @service_auth(root_only=True) def process(node: sy.Device, msg: sy.ReprMessage, verify_key: VerifyKey) -> None: pass process(node=node, msg=msg, verify_key=node.root_verify_key) with pytest.raises(AuthorizationException, match="You are not Authorized to access this service"): process(node=node, msg=msg, verify_key=random_verify_key)