예제 #1
0
def test_proto_deserialization() -> None:
    """Tests that default Address deserialization works as expected - from Protobuf"""

    uid = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    loc = SpecificLocation(id=uid, name="Test Location")

    obj = Address(
        network=loc,
        domain=loc,
        device=loc,
        vm=loc,
    )

    blob = Address.get_protobuf_schema()(
        has_network=True,
        has_domain=True,
        has_device=True,
        has_vm=True,
        network=loc.serialize(),
        domain=loc.serialize(),
        device=loc.serialize(),
        vm=loc.serialize(),
    )

    obj2 = sy.deserialize(blob=blob, from_proto=True)
    assert obj == obj2
예제 #2
0
def test_to_string() -> None:
    """Tests that SpecificLocation generates an intuitive string."""

    uid = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    obj = SpecificLocation(id=uid)
    assert str(obj) == "<SpecificLocation: fb1bb0675bb74c49becee700ab0a1514>"
    assert obj.__repr__(
    ) == "<SpecificLocation: fb1bb0675bb74c49becee700ab0a1514>"
예제 #3
0
def _construct_address() -> Address:
    """Helper method to construct an Address"""
    return Address(
        network=SpecificLocation(id=UID()),
        domain=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
        vm=SpecificLocation(id=UID()),
    )
예제 #4
0
def test_default_serialization() -> None:
    """Tests that default SpecificLocation serialization works as expected - to Protobuf"""

    uid = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    obj = SpecificLocation(id=uid, name="Test")

    blob = obj.to_proto()

    assert obj.serialize() == blob
예제 #5
0
def test_default_deserialization() -> None:
    """Tests that default SpecificLocation deserialization works as expected - from Protobuf"""

    uid = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    obj = SpecificLocation(id=uid, name="Test")

    blob = SpecificLocation.get_protobuf_schema()(id=uid.serialize())

    obj2 = sy.deserialize(blob=blob)
    assert obj == obj2
예제 #6
0
def test_target_emoji_method() -> None:
    """Unit test for Address.target_emoji method"""
    an_id = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))

    address = Address(
        network=SpecificLocation(id=an_id),
        domain=SpecificLocation(id=an_id),
        device=SpecificLocation(id=an_id),
        vm=SpecificLocation(id=an_id),
    )
    assert address.target_emoji() == "@<UID:🙍🛖>"
예제 #7
0
def test_proto_serialization() -> None:
    """Tests that default SpecificLocation serialization works as expected - to Protobuf"""

    uid = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    obj = SpecificLocation(id=uid, name="Test")

    blob = SpecificLocation.get_protobuf_schema()(id=sy.serialize(uid),
                                                  name="Test")

    assert sy.serialize(obj, to_proto=True) == blob
    assert sy.serialize(obj, to_proto=True) == blob
    assert sy.serialize(obj, to_proto=True) == blob
예제 #8
0
def test_binary_serialization() -> None:
    """Tests that binary SpecificLocation serializes as expected"""

    uid = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    obj = SpecificLocation(id=uid, name="Test")

    blob = (
        b"\n/syft.core.io.location.specific.SpecificLocation\x12\x1a\n\x12\n\x10"
        + b"\xfb\x1b\xb0g[\xb7LI\xbe\xce\xe7\x00\xab\n\x15\x14\x12\x04Test")

    assert obj.binary() == blob
    assert obj.to_bytes() == blob
    assert obj.serialize(to_bytes=True) == blob
예제 #9
0
def test_vm_and_vm_id_property_methods() -> None:
    """Unit test for Address.vm and Address.vm_id methods"""
    # Test getter
    vm = SpecificLocation(id=UID())
    address_with_vm = Address(
        network=SpecificLocation(id=UID()),
        domain=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
        vm=vm,
    )
    # Test device getter
    assert address_with_vm.vm == vm

    # Test device setter
    an_id = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    new_vm = SpecificLocation(id=an_id)
    address_with_vm.vm = new_vm
    assert address_with_vm.vm == new_vm

    # Test domain_id getter
    address_without_vm = Address(
        network=SpecificLocation(id=UID()),
        domain=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
    )
    assert address_with_vm.vm_id == an_id
    assert address_without_vm.vm_id is None
예제 #10
0
def test_domain_and_domain_id_property_methods() -> None:
    """Unit test for Address.domain and Address.domain_id methods"""
    # Test getter
    domain = SpecificLocation(id=UID())
    address_with_domain = Address(
        network=SpecificLocation(id=UID()),
        domain=domain,
        device=SpecificLocation(id=UID()),
        vm=SpecificLocation(id=UID()),
    )
    # Test domain getter
    assert address_with_domain.domain == domain

    # Test domain setter
    an_id = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    new_domain = SpecificLocation(id=an_id)
    address_with_domain.domain = new_domain
    assert address_with_domain.domain == new_domain

    # Test domain_id getter
    address_without_domain = Address(
        network=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
        vm=SpecificLocation(id=UID()),
    )
    assert address_with_domain.domain_id == an_id
    assert address_without_domain.domain_id is None
예제 #11
0
def test_compare() -> None:
    """While uses of this feature should be quite rare, we
    should be able to check whether two objects are the same
    based on their IDs being the same by default. Note that
    subclasses will undoubtedly modify this behavior with other
    __eq__ methods."""

    obj = SpecificLocation()
    obj2 = SpecificLocation()

    assert obj != obj2

    obj._id = obj2.id

    assert obj == obj2
예제 #12
0
def test_address_property_method() -> None:
    """Unit tests for Address.address property method"""
    address = Address(
        network=SpecificLocation(id=UID()),
        domain=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
        vm=SpecificLocation(id=UID()),
    )

    returned_address = address.address
    assert isinstance(returned_address, Address)
    assert returned_address.network == address.network
    assert returned_address.domain == address.domain
    assert returned_address.device == address.device
    assert returned_address.vm == address.vm
예제 #13
0
def test_route_init() -> None:
    """Test that Route will use the RouteSchema passed into its constructor"""
    rschema = RouteSchema(SpecificLocation())
    route = Route(schema=rschema)

    assert route.schema is rschema  # Cannot use __eq__
    assert isinstance(route.stops, list)
예제 #14
0
def test_route_schema_init() -> None:
    """Test that RouteSchema will use the Location passed into its constructor"""
    destination = SpecificLocation()
    rschema = RouteSchema(destination)

    assert rschema.destination is not None
    assert rschema.destination._id == destination._id
예제 #15
0
def test_specific_location_init_without_arguments() -> None:
    """Test that SpecificLocation will self-create an ID object if none is given"""

    # init works without arguments
    loc = SpecificLocation()

    assert isinstance(loc.id, UID)
예제 #16
0
def test_default_serialization_and_deserialization() -> None:
    """Tests that default Address serde works as expected - to Protobuf"""

    an_id = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))

    obj = Address(
        network=SpecificLocation(id=an_id),
        domain=SpecificLocation(id=an_id),
        device=SpecificLocation(id=an_id),
        vm=SpecificLocation(id=an_id),
    )

    blob = obj.to_proto()

    assert obj.serialize() == blob
    assert obj == sy.deserialize(blob=blob)
예제 #17
0
def test_proto_serialization() -> None:
    """Tests that default Address serialization works as expected - to Protobuf"""

    uid = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    loc = SpecificLocation(id=uid, name="Test Location")
    obj = Address(
        name="Test Address",
        network=loc,
        domain=loc,
        device=loc,
        vm=loc,
    )

    blob = Address.get_protobuf_schema()(
        name="Test Address",
        has_network=True,
        has_domain=True,
        has_device=True,
        has_vm=True,
        network=sy.serialize(loc),
        domain=sy.serialize(loc),
        device=sy.serialize(loc),
        vm=sy.serialize(loc),
    )

    assert sy.serialize(obj, to_proto=True) == blob
    assert sy.serialize(obj, to_proto=True) == blob
    assert sy.serialize(obj, to_proto=True) == blob
예제 #18
0
def test_network_getter_and_setter() -> None:
    """Unit tests for Address.network getter and setter"""
    an_id = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    # Test getter
    network = SpecificLocation(id=an_id)
    address = Address(
        network=network,
        domain=SpecificLocation(id=an_id),
        device=SpecificLocation(id=an_id),
        vm=SpecificLocation(id=an_id),
    )
    assert address.network == network

    # Test setter
    new_network = SpecificLocation(id=an_id)
    address.network = new_network
    assert address.network == new_network
예제 #19
0
def test_specific_location_init_with_specific_id() -> None:
    """Test that SpecificLocation will use the ID you pass into the constructor"""

    uid = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))

    loc = SpecificLocation(id=uid)

    assert loc.id == uid
예제 #20
0
def test_target_id_property_method_with_a_return() -> None:
    """Unit test for Address.target_id method"""
    network = SpecificLocation(id=UID())
    domain = SpecificLocation(id=UID())
    device = SpecificLocation(id=UID())
    vm = SpecificLocation(id=UID())
    address = Address(
        network=network,
        domain=domain,
        device=device,
        vm=vm,
    )
    assert address.target_id == vm
    address.vm = None
    assert address.target_id == device
    address.device = None
    assert address.target_id == domain
    address.domain = None
    assert address.target_id == network
예제 #21
0
def test_to_string() -> None:
    """Tests that SpecificLocation generates an intuitive string."""

    an_id = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))

    obj = Address(
        network=SpecificLocation(id=an_id),
        domain=SpecificLocation(id=an_id),
        device=SpecificLocation(id=an_id),
        vm=SpecificLocation(id=an_id),
    )

    str_out = (
        "<Address - Network:<SpecificLocation:..a1514>, Domain:<Specific"
        "Location:..a1514>  Device:<SpecificLocation:..a1514>, VM:<Specific"
        "Location:..a1514>")

    assert str(obj) == str_out
    assert obj.__repr__() == str_out
예제 #22
0
def _gen_address_kwargs() -> list:
    """
    Helper method to generate pre-ordered arguments for initializing an Address instance.
    There are at least 3 arguments, all taken from 'vm', 'device', 'domain', 'network'.
    """
    # the order matches the _gen_icons below
    all_combos = []
    for combination in combinations(ARGUMENTS, 3):
        all_combos.append(list(combination))
    all_combos.append(ARGUMENTS)
    return [{key: SpecificLocation(id=UID()) for key in combo} for combo in all_combos]
예제 #23
0
def test_solo_route_send_eventual_msg_without_reply() -> None:
    """Test SoloRoute.send_eventual_msg_without_reply method works."""
    node = MockNode()
    destination = SpecificLocation()
    server = VirtualServerConnection(node=node)
    connection = VirtualClientConnection(server=server)

    h_solo = SoloRoute(destination=destination, connection=connection)
    msg = construct_dummy_message(SignedEventualSyftMessageWithoutReply)

    assert not h_solo.send_eventual_msg_without_reply(msg)
예제 #24
0
def test_binary_deserialization() -> None:
    """Test that binary SpecificLocation deserialization works as expected"""

    blob = (
        b"\n/syft.core.io.location.specific.SpecificLocation\x12\x1a\n\x12\n\x10"
        + b"\xfb\x1b\xb0g[\xb7LI\xbe\xce\xe7\x00\xab\n\x15\x14\x12\x04Test")

    obj = sy.deserialize(blob=blob, from_bytes=True)
    assert obj == SpecificLocation(
        id=UID(value=uuid.UUID(int=333779996850170035686993356951732753684)),
        name="Test",
    )
예제 #25
0
def test_broadcast_route_init() -> None:
    """
    Test that BroadcastRoute will use the Location and
    ClientConnection passed into its constructor.
    """
    destination = SpecificLocation()
    virtual_server = VirtualServerConnection(node=Node())
    virtual_client = VirtualClientConnection(server=virtual_server)
    b_route = BroadcastRoute(destination=destination, connection=virtual_client)

    assert b_route.schema.destination is destination
    assert b_route.connection is virtual_client
예제 #26
0
def test_solo_route_init() -> None:
    """
    Test that SoloRoute will use the Location and
    ClientConnection/BidirectionalConnection passed into its constructor.
    """
    # Test SoloRoute with VirtualClientConnection (ClientConnection) in constructor
    destination = SpecificLocation()
    virtual_server = VirtualServerConnection(node=Node())
    virtual_client = VirtualClientConnection(server=virtual_server)
    h_solo = SoloRoute(destination=destination, connection=virtual_client)

    assert h_solo.schema.destination is destination
    assert h_solo.connection is virtual_client
예제 #27
0
def test_solo_route_send_immediate_msg_with_reply() -> None:
    """Test SoloRoute.send_immediate_msg_with_reply method works."""
    node = MockNode()
    destination = SpecificLocation()
    server = VirtualServerConnection(node=node)
    connection = VirtualClientConnection(server=server)

    h_solo = SoloRoute(destination=destination, connection=connection)
    msg = construct_dummy_message(SignedImmediateSyftMessageWithReply)
    ret = h_solo.send_immediate_msg_with_reply(msg)

    assert isinstance(
        ret,
        SignedImmediateSyftMessageWithoutReply,
    )
예제 #28
0
def test_network_id_property_method() -> None:
    """Unit test for Address.network_id method"""
    an_id = UID(value=uuid.UUID(int=333779996850170035686993356951732753684))
    # Test getter
    address_with_network = Address(
        network=SpecificLocation(id=an_id),
        domain=SpecificLocation(id=an_id),
        device=SpecificLocation(id=an_id),
        vm=SpecificLocation(id=an_id),
    )
    address_without_network = Address(
        domain=SpecificLocation(id=an_id),
        device=SpecificLocation(id=an_id),
        vm=SpecificLocation(id=an_id),
    )

    assert address_with_network.network_id == an_id
    assert address_without_network.network_id is None
예제 #29
0
def test_compare() -> None:
    """Tests whether two address objects are the same. This functionality
    is likely to get used a lot when nodes are determining whether a message
    is for them or not."""

    x = Address(
        network=SpecificLocation(id=UID()),
        domain=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
        vm=SpecificLocation(id=UID()),
    )

    y = Address(
        network=SpecificLocation(id=UID()),
        domain=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
        vm=SpecificLocation(id=UID()),
    )

    z = Address(network=x.network, domain=x.domain, device=x.device, vm=x.vm)

    assert x != y
    assert x == z
    assert y != z
예제 #30
0
def test_init_with_specific_id() -> None:
    """Test that Address will use the SpecificLocation you pass into the constructor"""

    # init works with arguments
    addr = Address(
        network=SpecificLocation(id=UID()),
        domain=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
        vm=SpecificLocation(id=UID()),
    )

    assert addr.network is not None
    assert addr.domain is not None
    assert addr.device is not None
    assert addr.vm is not None

    # init works without arguments
    addr = Address(  # network=SpecificLocation(id=UID()),
        domain=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
        vm=SpecificLocation(id=UID()),
    )

    assert addr.network is None
    assert addr.domain is not None
    assert addr.device is not None
    assert addr.vm is not None

    # init works without arguments
    addr = Address(
        network=SpecificLocation(id=UID()),
        # domain=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
        vm=SpecificLocation(id=UID()),
    )

    assert addr.network is not None
    assert addr.domain is None
    assert addr.device is not None
    assert addr.vm is not None

    # init works without arguments
    addr = Address(
        network=SpecificLocation(id=UID()),
        domain=SpecificLocation(id=UID()),
        # device=SpecificLocation(id=UID()),
        vm=SpecificLocation(id=UID()),
    )

    assert addr.network is not None
    assert addr.domain is not None
    assert addr.device is None
    assert addr.vm is not None

    # init works without arguments
    addr = Address(
        network=SpecificLocation(id=UID()),
        domain=SpecificLocation(id=UID()),
        device=SpecificLocation(id=UID()),
        # vm=SpecificLocation(id=UID())
    )

    assert addr.network is not None
    assert addr.domain is not None
    assert addr.device is not None
    assert addr.vm is None