コード例 #1
0
ファイル: node_test.py プロジェクト: znreza/PySyft
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))
コード例 #2
0
ファイル: node_test.py プロジェクト: znreza/PySyft
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))
コード例 #3
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)
コード例 #4
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)
コード例 #5
0
ファイル: node_test.py プロジェクト: stoic-signs/PySyft
def test_register_vm_on_device_fails(node: sy.VirtualMachine,
                                     client: sy.VirtualMachineClient) -> None:
    bob_phone = sy.Device(name="Bob's iPhone")
    bob_phone_client = bob_phone.get_client()

    with pytest.raises(AuthorizationException):
        bob_phone_client.register(client=client)

    assert node.device is None

    # TODO: prevent device being set when Authorization fails
    assert client.device is not None
コード例 #6
0
ファイル: auth_test.py プロジェクト: znreza/PySyft
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
コード例 #7
0
ファイル: node_test.py プロジェクト: znreza/PySyft
def test_register_vm_on_device_succeeds() -> None:
    # Register a 🍰 with a 📱

    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
コード例 #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)
コード例 #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)
コード例 #10
0
ファイル: auth_test.py プロジェクト: znreza/PySyft
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)
コード例 #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)
コード例 #12
0
def test_object_search_permissons_update_execute_add() -> None:
    bob_phone = sy.Device(name="Bob's iPhone")
    bob_phone_client = bob_phone.get_client()

    ptr = th.tensor([1, 2, 3]).send(bob_phone_client)

    msg = ObjectSearchPermissionUpdateMessage(
        add_instead_of_remove=True,
        target_verify_key=bob_phone_client.verify_key,
        target_object_id=ptr.id_at_location,
        address=bob_phone_client.address,
    )

    ImmediateObjectSearchPermissionUpdateService.process(
        node=bob_phone, msg=msg, verify_key=bob_phone.verify_key)

    assert (bob_phone.store[ptr.id_at_location].search_permissions[
        bob_phone_client.verify_key] == msg.id)
コード例 #13
0
def test_object_search_permissons_update_message_serde() -> None:
    bob_phone = sy.Device(name="Bob's iPhone")
    bob_phone_client = bob_phone.get_client()

    ptr = th.tensor([1, 2, 3]).send(bob_phone_client)

    msg = ObjectSearchPermissionUpdateMessage(
        add_instead_of_remove=True,
        target_verify_key=bob_phone_client.verify_key,
        target_object_id=ptr.id_at_location,
        address=bob_phone_client.address,
    )

    blob = sy.serialize(msg)
    msg2 = sy.deserialize(blob=blob)

    assert msg.id == msg2.id
    assert msg.address == msg2.address
    assert msg.add_instead_of_remove == msg2.add_instead_of_remove
    assert msg.target_verify_key == msg2.target_verify_key
    assert msg.target_object_id == msg2.target_object_id
コード例 #14
0
ファイル: node_test.py プロジェクト: znreza/PySyft
def test_known_child_nodes() -> None:
    bob_vm = sy.VirtualMachine(name="Bob VM")
    bob_vm_client = bob_vm.get_client()
    bob_vm.root_verify_key = bob_vm_client.verify_key  # inject 📡🔑 as 📍🗝

    bob_vm_2 = sy.VirtualMachine(name="Bob VM 2")
    bob_vm_client_2 = bob_vm_2.get_client()
    bob_vm_2.root_verify_key = bob_vm_client_2.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 len(bob_phone.known_child_nodes) == 1
    assert bob_vm in bob_phone.known_child_nodes

    bob_phone_client.register(client=bob_vm_client_2)

    assert len(bob_phone.known_child_nodes) == 2
    assert bob_vm_2 in bob_phone.known_child_nodes
コード例 #15
0
def test_child_node_lifecycle_message_serde() -> None:
    bob_vm = sy.VirtualMachine(name="Bob")
    bob_vm_client = bob_vm.get_client()

    bob_phone = sy.Device(name="Bob's iPhone")
    bob_phone_client = bob_phone.get_client()

    # bob_phone_client.register(client=bob_vm_client)
    # generates this message
    msg = RegisterChildNodeMessage(
        lookup_id=bob_vm_client.id,  # TODO: not sure if this is needed anymore
        child_node_client_address=bob_vm_client.address,
        address=bob_phone_client.address,
    )

    blob = msg.serialize()
    msg2 = sy.deserialize(blob=blob)

    assert msg.id == msg2.id
    assert msg.address == msg2.address
    assert msg.child_node_client_address == msg2.child_node_client_address
    assert msg == msg2