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
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>"
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()), )
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
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
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:🙍🛖>"
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
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
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
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
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
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
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)
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
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)
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)
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
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
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
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
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
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]
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)
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", )
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
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
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, )
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
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
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