Files
site/WESP_REL/tests/test_pi_platform_setup.py
T
2026-07-17 12:57:18 +03:00

67 lines
2.4 KiB
Python

"""Тесты настройки 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()