Additional tweaks
This commit is contained in:
+38
-1
@@ -3,7 +3,7 @@ import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from rex.client.config import ClientAction, ClientConfig, ClientConfigManager
|
||||
from rex.server.config import ServerConfigManager
|
||||
from rex.server.config import ServerConfig, ServerConfigManager
|
||||
from rex.server.connection_manager import ConnectionManager
|
||||
|
||||
|
||||
@@ -28,6 +28,31 @@ class ConfigTests(unittest.TestCase):
|
||||
with self.assertRaises(ValueError):
|
||||
ClientAction(name="bad name", argv=["/bin/echo"])
|
||||
|
||||
def test_reload_preserves_last_valid_server_configuration(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
path = Path(directory) / "server.toml"
|
||||
manager = ServerConfigManager(path)
|
||||
manager.config = ServerConfig(devices=["desk"])
|
||||
manager.save()
|
||||
manager.reload()
|
||||
path.write_text("rate_limit_per_minute = 0\n")
|
||||
self.assertFalse(manager.reload())
|
||||
self.assertEqual(manager.config.devices, ["desk"])
|
||||
path.write_text("rate_limit_per_minute = 100\ndevices = [\"laptop\"]\n")
|
||||
self.assertTrue(manager.reload())
|
||||
self.assertEqual(manager.config.devices, ["laptop"])
|
||||
|
||||
def test_reload_preserves_last_valid_client_configuration(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
path = Path(directory) / "client.toml"
|
||||
manager = ClientConfigManager(path)
|
||||
manager.config = ClientConfig(device_name="desk")
|
||||
manager.save()
|
||||
manager.reload()
|
||||
path.write_text("scheme = \"https\"\n")
|
||||
self.assertFalse(manager.reload())
|
||||
self.assertEqual(manager.config.device_name, "desk")
|
||||
|
||||
|
||||
class ConnectionManagerTests(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_only_registered_actions_are_sent(self) -> None:
|
||||
@@ -44,3 +69,15 @@ class ConnectionManagerTests(unittest.IsolatedAsyncioTestCase):
|
||||
self.assertTrue(await manager.send("desk", "lock"))
|
||||
self.assertEqual(socket.messages, [{"type": "action", "name": "lock"}])
|
||||
|
||||
async def test_disconnect_all_closes_registered_clients(self) -> None:
|
||||
class Socket:
|
||||
def __init__(self) -> None:
|
||||
self.closed = False
|
||||
async def close(self, **_: object) -> None: self.closed = True
|
||||
|
||||
socket = Socket()
|
||||
manager = ConnectionManager()
|
||||
await manager.connect("desk", socket, {"lock"}) # type: ignore[arg-type]
|
||||
await manager.disconnect_all()
|
||||
self.assertTrue(socket.closed)
|
||||
self.assertEqual(manager.actions("desk"), [])
|
||||
|
||||
Reference in New Issue
Block a user