@@ -0,0 +1,66 @@
|
||||
"""Тесты настройки Pi (wesp.env + systemd)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch
|
||||
|
||||
from app.services.pi_platform_setup_service import (
|
||||
_merge_env_file,
|
||||
apply_pi_platform_setup,
|
||||
get_pi_platform_setup_status,
|
||||
)
|
||||
|
||||
|
||||
class PiPlatformSetupTests(unittest.TestCase):
|
||||
def test_merge_env_creates_file(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
home = Path(tmp) / "wesp"
|
||||
home.mkdir()
|
||||
(home / "install").mkdir()
|
||||
(home / "install" / "wesp.env.example").write_text(
|
||||
"WESP_CONFIG=production\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
env = Path(tmp) / "wesp.env"
|
||||
venv = Path(tmp) / "wes"
|
||||
defaults = {"WESP_SYSTEMD_UNIT": "myscript", "WESP_VENV": str(venv)}
|
||||
added, _ = _merge_env_file(env, defaults, home=home, venv=venv)
|
||||
self.assertTrue(env.is_file())
|
||||
self.assertIn("WESP_SYSTEMD_UNIT", env.read_text(encoding="utf-8"))
|
||||
self.assertTrue(added)
|
||||
|
||||
@patch(
|
||||
"app.services.pi_platform_setup_service.get_pi_platform_setup_status",
|
||||
return_value={"platform_ready": True, "running_as_root": True},
|
||||
)
|
||||
@patch("app.services.pi_platform_setup_service._is_root", return_value=True)
|
||||
@patch("app.services.pi_platform_setup_service._install_systemd_unit")
|
||||
@patch("app.services.pi_platform_setup_service.schedule_service_restart")
|
||||
@patch("app.services.pi_platform_setup_service._merge_env_file")
|
||||
def test_apply_ok(
|
||||
self,
|
||||
mock_merge: object,
|
||||
mock_restart: object,
|
||||
mock_unit: object,
|
||||
_root: object,
|
||||
_status: object,
|
||||
) -> None:
|
||||
mock_merge.return_value = (["WESP_SYSTEMD_UNIT"], [])
|
||||
mock_unit.return_value = (True, "ok", Path("/etc/systemd/system/myscript.service"))
|
||||
mock_restart.return_value = {"scheduled": True, "message": "restart"}
|
||||
|
||||
cfg = {"BASE_DIR": "/opt/wesp", "WESP_SYSTEMD_UNIT": "myscript"}
|
||||
r = apply_pi_platform_setup(cfg)
|
||||
self.assertTrue(r.get("ok"))
|
||||
|
||||
def test_apply_requires_root(self) -> None:
|
||||
with patch("app.services.pi_platform_setup_service._is_root", return_value=False):
|
||||
r = apply_pi_platform_setup({"BASE_DIR": "/opt/wesp"})
|
||||
self.assertFalse(r.get("ok"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user