diff --git a/aprsd/packets/core.py b/aprsd/packets/core.py index 52bea31..85a6719 100644 --- a/aprsd/packets/core.py +++ b/aprsd/packets/core.py @@ -12,7 +12,7 @@ from dataclasses_json import ( ) from loguru import logger -from aprsd.utils import counter +from aprsd.utils import counter, trace # For mypy to be happy @@ -127,10 +127,11 @@ class Packet: msg = self._filter_for_send(self.raw).rstrip("\n") return msg - def prepare(self) -> None: + @trace.trace + def prepare(self, create_msg_number=False) -> None: """Do stuff here that is needed prior to sending over the air.""" # now build the raw message for sending - if not self.msgNo: + if not self.msgNo and create_msg_number: self.msgNo = _init_msgNo() self._build_payload() self._build_raw() @@ -244,11 +245,17 @@ class MessagePacket(Packet): return self._filter_for_send(self.message_text).rstrip("\n") def _build_payload(self): - self.payload = ":{}:{}{{{}".format( - self.to_call.ljust(9), - self._filter_for_send(self.message_text).rstrip("\n"), - str(self.msgNo), - ) + if self.msgNo: + self.payload = ":{}:{}{{{}".format( + self.to_call.ljust(9), + self._filter_for_send(self.message_text).rstrip("\n"), + str(self.msgNo), + ) + else: + self.payload = ":{}:{}".format( + self.to_call.ljust(9), + self._filter_for_send(self.message_text).rstrip("\n"), + ) @dataclass_json diff --git a/aprsd/threads/tx.py b/aprsd/threads/tx.py index 83ab140..70d5864 100644 --- a/aprsd/threads/tx.py +++ b/aprsd/threads/tx.py @@ -48,7 +48,7 @@ def send(packet: core.Packet, direct=False, aprs_client=None): """Send a packet either in a thread or directly to the client.""" # prepare the packet for sending. # This constructs the packet.raw - packet.prepare() + packet.prepare(create_msg_number=True) # Have to call the collector to track the packet # After prepare, as prepare assigns the msgNo collector.PacketCollector().tx(packet) diff --git a/tests/client/test_aprsis.py b/tests/client/test_aprsis.py index 33a4fda..a4f01a0 100644 --- a/tests/client/test_aprsis.py +++ b/tests/client/test_aprsis.py @@ -61,7 +61,7 @@ class TestAPRSISClient(unittest.TestCase): "connected": True, "filter": "m/50", "login_status": {"message": mock.ANY, "success": True}, - "server_keepalive": mock_client.aprsd_keepalive, + "connection_keepalive": mock_client.aprsd_keepalive, "server_string": mock_client.server_string, "transport": "aprsis", }, diff --git a/tests/cmds/test_webchat.py b/tests/cmds/test_webchat.py index 8280899..d9db09b 100644 --- a/tests/cmds/test_webchat.py +++ b/tests/cmds/test_webchat.py @@ -8,6 +8,7 @@ import flask_socketio from oslo_config import cfg from aprsd import conf # noqa: F401 +from aprsd.client import fake as fake_client from aprsd.cmds import webchat # noqa from aprsd.packets import core @@ -64,11 +65,13 @@ class TestSendMessageCommand(unittest.TestCase): @mock.patch("aprsd.threads.tx.send") @mock.patch("aprsd.packets.PacketList.rx") @mock.patch("aprsd.cmds.webchat.socketio") + @mock.patch("aprsd.client.factory.ClientFactory.create") def test_process_our_message_packet( self, mock_tx_send, mock_packet_add, mock_socketio, + mock_factory, ): self.config_and_init() mock_socketio.emit = mock.MagicMock() @@ -77,6 +80,7 @@ class TestSendMessageCommand(unittest.TestCase): msg_number=1, message_format=core.PACKET_TYPE_MESSAGE, ) + mock_factory.return_value = fake_client.APRSDFakeClient() mock_queue = mock.MagicMock() socketio = mock.MagicMock() wcp = webchat.WebChatProcessPacketThread(mock_queue, socketio)