Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
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))
Exemplo n.º 4
0
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))
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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)