Add status page quick actions
Co-authored-by: Copilot <[email protected]>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
import subprocess
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from modules import app_status
|
||||
|
||||
@@ -104,6 +105,35 @@ class AppStatusTest(unittest.TestCase):
|
||||
self.assertFalse(status["uplink"]["ok"])
|
||||
self.assertIn("nmcli failed", status["uplink"]["error"])
|
||||
|
||||
@patch("modules.app_status.Thread")
|
||||
@patch("modules.app_status.subprocess.run")
|
||||
def test_request_app_restart_schedules_background_restart(self, run, thread):
|
||||
run.return_value = MagicMock(returncode=0, stdout="", stderr="")
|
||||
thread_instance = MagicMock()
|
||||
thread.return_value = thread_instance
|
||||
|
||||
result = app_status.request_app_restart()
|
||||
|
||||
self.assertEqual(result["status"], "restart_scheduled")
|
||||
run.assert_called_once_with(
|
||||
["sudo", "-n", "-l", "/usr/bin/systemctl", "restart", "--no-block", "yaris-obd.service"],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=5,
|
||||
check=True,
|
||||
)
|
||||
thread.assert_called_once_with(
|
||||
target=app_status._delayed_restart,
|
||||
args=(1,),
|
||||
daemon=True,
|
||||
)
|
||||
thread_instance.start.assert_called_once_with()
|
||||
|
||||
@patch("modules.app_status.subprocess.run", side_effect=subprocess.CalledProcessError(1, "sudo"))
|
||||
def test_request_app_restart_requires_installed_permission(self, _run):
|
||||
with self.assertRaises(RuntimeError):
|
||||
app_status.request_app_restart()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user