mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-08-07 17:23:05 +02:00
Add bulk room add
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
"""Tests for the channels router endpoints."""
|
||||
|
||||
import time
|
||||
from unittest.mock import patch
|
||||
from hashlib import sha256
|
||||
from unittest.mock import AsyncMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -77,6 +78,55 @@ class TestCreateChannel:
|
||||
assert channel is not None
|
||||
assert channel.flood_scope_override is None
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_bulk_hashtag_create_adds_only_new_rooms(self, test_db, client):
|
||||
ops_key = sha256(b"#ops").digest()[:16].hex().upper()
|
||||
await ChannelRepository.upsert(key=ops_key, name="#ops", is_hashtag=True)
|
||||
|
||||
response = await client.post(
|
||||
"/api/channels/bulk-hashtag",
|
||||
json={
|
||||
"channel_names": ["#ops", "mesh-room", "bad_room", "mesh-room", "another-room"],
|
||||
"try_historical": False,
|
||||
},
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert [channel["name"] for channel in data["created_channels"]] == [
|
||||
"#mesh-room",
|
||||
"#another-room",
|
||||
]
|
||||
assert data["existing_count"] == 2
|
||||
assert data["invalid_names"] == ["bad_room"]
|
||||
assert data["decrypt_started"] is False
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_bulk_hashtag_create_can_start_one_decrypt_job(self, test_db, client):
|
||||
with (
|
||||
patch(
|
||||
"app.routers.channels.RawPacketRepository.get_undecrypted_count",
|
||||
new=AsyncMock(return_value=7),
|
||||
),
|
||||
patch(
|
||||
"app.routers.channels._run_historical_channel_decryption_for_channels",
|
||||
new=AsyncMock(),
|
||||
) as mock_decrypt,
|
||||
):
|
||||
response = await client.post(
|
||||
"/api/channels/bulk-hashtag",
|
||||
json={
|
||||
"channel_names": ["ops", "mesh-room"],
|
||||
"try_historical": True,
|
||||
},
|
||||
)
|
||||
|
||||
assert response.status_code == 202
|
||||
data = response.json()
|
||||
assert data["decrypt_started"] is True
|
||||
assert data["decrypt_total_packets"] == 7
|
||||
mock_decrypt.assert_awaited_once()
|
||||
|
||||
|
||||
class TestPublicChannelProtection:
|
||||
@pytest.mark.asyncio
|
||||
|
||||
Reference in New Issue
Block a user