mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-08-07 17:23:05 +02:00
Add endpoint for deleting raw packets of decrypted messages
This commit is contained in:
@@ -887,6 +887,23 @@ class TestRawPacketRepository:
|
||||
deleted = await RawPacketRepository.prune_old_undecrypted(10)
|
||||
assert deleted == 0
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_purge_linked_to_messages_deletes_only_linked_packets(self, test_db):
|
||||
"""Purge linked raw packets removes only rows with a message_id."""
|
||||
ts = int(time.time())
|
||||
linked_1, _ = await RawPacketRepository.create(b"\x01\x02\x03", ts)
|
||||
linked_2, _ = await RawPacketRepository.create(b"\x04\x05\x06", ts)
|
||||
await RawPacketRepository.mark_decrypted(linked_1, 101)
|
||||
await RawPacketRepository.mark_decrypted(linked_2, 102)
|
||||
|
||||
await RawPacketRepository.create(b"\x07\x08\x09", ts) # undecrypted, should remain
|
||||
|
||||
deleted = await RawPacketRepository.purge_linked_to_messages()
|
||||
assert deleted == 2
|
||||
|
||||
remaining = await RawPacketRepository.get_undecrypted_count()
|
||||
assert remaining == 1
|
||||
|
||||
|
||||
class TestMaintenanceEndpoint:
|
||||
"""Test database maintenance endpoint."""
|
||||
@@ -909,6 +926,23 @@ class TestMaintenanceEndpoint:
|
||||
assert result.packets_deleted == 2
|
||||
assert result.vacuumed is True
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_maintenance_can_purge_linked_raw_packets(self, test_db):
|
||||
"""Maintenance endpoint can purge raw packets linked to messages."""
|
||||
from app.routers.packets import MaintenanceRequest, run_maintenance
|
||||
|
||||
ts = int(time.time())
|
||||
linked_1, _ = await RawPacketRepository.create(b"\x0A\x0B\x0C", ts)
|
||||
linked_2, _ = await RawPacketRepository.create(b"\x0D\x0E\x0F", ts)
|
||||
await RawPacketRepository.mark_decrypted(linked_1, 201)
|
||||
await RawPacketRepository.mark_decrypted(linked_2, 202)
|
||||
|
||||
request = MaintenanceRequest(purge_linked_raw_packets=True)
|
||||
result = await run_maintenance(request)
|
||||
|
||||
assert result.packets_deleted == 2
|
||||
assert result.vacuumed is True
|
||||
|
||||
|
||||
class TestHealthEndpointDatabaseSize:
|
||||
"""Test database size reporting in health endpoint."""
|
||||
|
||||
Reference in New Issue
Block a user