async def test_discover_send(mocker): """Test discovery parameters.""" proto = _DiscoverProtocol() assert proto.discovery_packets == 3 assert proto.target == ("255.255.255.255", 9999) transport = mocker.patch.object(proto, "transport") proto.do_discover() assert transport.sendto.call_count == proto.discovery_packets
async def test_discover_invalid_responses(msg, data, mocker): """Verify that we don't crash whole discovery if some devices in the network are sending unexpected data.""" proto = _DiscoverProtocol() mocker.patch("json.loads", return_value=data) mocker.patch.object(protocol.TPLinkSmartHomeProtocol, "encrypt") mocker.patch.object(protocol.TPLinkSmartHomeProtocol, "decrypt") proto.datagram_received(data, ("127.0.0.1", 1234)) assert len(proto.discovered_devices) == 0
async def test_discover_datagram_received(mocker, discovery_data): """Verify that datagram received fills discovered_devices.""" proto = _DiscoverProtocol() mocker.patch("json.loads", return_value=discovery_data) mocker.patch.object(protocol.TPLinkSmartHomeProtocol, "encrypt") mocker.patch.object(protocol.TPLinkSmartHomeProtocol, "decrypt") addr = "127.0.0.1" proto.datagram_received("<placeholder data>", (addr, 1234)) # Check that device in discovered_devices is initialized correctly assert len(proto.discovered_devices) == 1 dev = proto.discovered_devices[addr] assert issubclass(dev.__class__, SmartDevice) assert dev.host == addr