mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-08-02 06:53:09 +02:00
Remove some unneeded duplication and fix up reconnection management
This commit is contained in:
+17
-11
@@ -254,7 +254,7 @@ class TestAdvertisementParsing:
|
||||
|
||||
def test_parse_repeater_advertisement_with_gps(self):
|
||||
"""Parse a repeater advertisement with GPS coordinates."""
|
||||
from app.decoder import try_parse_advertisement
|
||||
from app.decoder import parse_advertisement, parse_packet
|
||||
|
||||
# Repeater packet with lat/lon of 49.02056 / -123.82935
|
||||
# Flags 0x92: Role=Repeater (2), Location=Yes, Name=Yes
|
||||
@@ -266,7 +266,9 @@ class TestAdvertisementParsing:
|
||||
)
|
||||
packet = bytes.fromhex(packet_hex)
|
||||
|
||||
result = try_parse_advertisement(packet)
|
||||
info = parse_packet(packet)
|
||||
assert info is not None
|
||||
result = parse_advertisement(info.payload)
|
||||
|
||||
assert result is not None
|
||||
assert (
|
||||
@@ -282,7 +284,7 @@ class TestAdvertisementParsing:
|
||||
|
||||
def test_parse_chat_node_advertisement_with_gps(self):
|
||||
"""Parse a chat node advertisement with GPS coordinates."""
|
||||
from app.decoder import try_parse_advertisement
|
||||
from app.decoder import parse_advertisement, parse_packet
|
||||
|
||||
# Chat node packet with lat/lon of 47.786038 / -122.344096
|
||||
# Flags 0x91: Role=Chat (1), Location=Yes, Name=Yes
|
||||
@@ -294,7 +296,9 @@ class TestAdvertisementParsing:
|
||||
)
|
||||
packet = bytes.fromhex(packet_hex)
|
||||
|
||||
result = try_parse_advertisement(packet)
|
||||
info = parse_packet(packet)
|
||||
assert info is not None
|
||||
result = parse_advertisement(info.payload)
|
||||
|
||||
assert result is not None
|
||||
assert (
|
||||
@@ -310,7 +314,7 @@ class TestAdvertisementParsing:
|
||||
|
||||
def test_parse_advertisement_without_gps(self):
|
||||
"""Parse an advertisement without GPS coordinates."""
|
||||
from app.decoder import try_parse_advertisement
|
||||
from app.decoder import parse_advertisement, parse_packet
|
||||
|
||||
# Chat node packet without location
|
||||
# Flags 0x81: Role=Chat (1), Location=No, Name=Yes
|
||||
@@ -322,7 +326,9 @@ class TestAdvertisementParsing:
|
||||
)
|
||||
packet = bytes.fromhex(packet_hex)
|
||||
|
||||
result = try_parse_advertisement(packet)
|
||||
info = parse_packet(packet)
|
||||
assert info is not None
|
||||
result = parse_advertisement(info.payload)
|
||||
|
||||
assert result is not None
|
||||
assert (
|
||||
@@ -352,15 +358,15 @@ class TestAdvertisementParsing:
|
||||
assert info.payload_type == PayloadType.ADVERT
|
||||
|
||||
def test_non_advertisement_returns_none(self):
|
||||
"""Non-advertisement packets return None from try_parse_advertisement."""
|
||||
from app.decoder import try_parse_advertisement
|
||||
"""Non-advertisement packets return None when parsed as advertisement."""
|
||||
from app.decoder import PayloadType, parse_packet
|
||||
|
||||
# GROUP_TEXT packet, not an advertisement
|
||||
packet = bytes([0x15, 0x00]) + bytes(50)
|
||||
|
||||
result = try_parse_advertisement(packet)
|
||||
|
||||
assert result is None
|
||||
info = parse_packet(packet)
|
||||
assert info is not None
|
||||
assert info.payload_type != PayloadType.ADVERT
|
||||
|
||||
|
||||
class TestScalarClamping:
|
||||
|
||||
@@ -168,7 +168,7 @@ class TestChannelMessagePipeline:
|
||||
assert result is not None
|
||||
|
||||
# Raw packet should be stored
|
||||
raw_packets = await RawPacketRepository.get_undecrypted(limit=10)
|
||||
raw_packets = await RawPacketRepository.get_all_undecrypted()
|
||||
assert len(raw_packets) >= 1
|
||||
|
||||
# No message broadcast (only raw_packet broadcast)
|
||||
@@ -576,8 +576,8 @@ class TestCreateMessageFromDecrypted:
|
||||
)
|
||||
|
||||
# Verify packet is marked decrypted (has message_id set)
|
||||
undecrypted = await RawPacketRepository.get_undecrypted(limit=100)
|
||||
packet_ids = [p.id for p in undecrypted]
|
||||
undecrypted = await RawPacketRepository.get_all_undecrypted()
|
||||
packet_ids = [p[0] for p in undecrypted]
|
||||
assert packet_id not in packet_ids # Should be marked as decrypted
|
||||
|
||||
|
||||
@@ -831,8 +831,8 @@ class TestCreateDMMessageFromDecrypted:
|
||||
)
|
||||
|
||||
# Verify packet is marked decrypted
|
||||
undecrypted = await RawPacketRepository.get_undecrypted(limit=100)
|
||||
packet_ids = [p.id for p in undecrypted]
|
||||
undecrypted = await RawPacketRepository.get_all_undecrypted()
|
||||
packet_ids = [p[0] for p in undecrypted]
|
||||
assert packet_id not in packet_ids
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@@ -939,8 +939,8 @@ class TestDMDecryptionFunction:
|
||||
assert messages[0].outgoing is False
|
||||
|
||||
# Verify raw packet is linked
|
||||
undecrypted = await RawPacketRepository.get_undecrypted(limit=100)
|
||||
assert packet_id not in [p.id for p in undecrypted]
|
||||
undecrypted = await RawPacketRepository.get_all_undecrypted()
|
||||
assert packet_id not in [p[0] for p in undecrypted]
|
||||
|
||||
|
||||
class TestRepeaterMessageFiltering:
|
||||
|
||||
Reference in New Issue
Block a user