Files
FabledSteward/tests/plugins/host_agent/test_install_template.py
T
bvandeusen 88ab5b917e chore: rename project Roundtable → Steward
Renames the Python package directory, CLI command, env var prefix,
docker-compose service/container/image, Postgres role/db, and all
visible branding. Marketing form is "Fabled Steward".

Clean break from the previous rebrand: drops the fabledscryer→roundtable
import shim in __init__.py and the FABLEDSCRYER_* env var fallback in
config.py and migrations/env.py. Env vars are now STEWARD_* only.

Heads-up for existing deployments:
- Postgres user/db renamed fabledscryer → steward in docker-compose.yml.
  Existing volumes need the role/db renamed inside Postgres, or override
  POSTGRES_USER/POSTGRES_DB to keep the old names.
- Host-agent systemd unit is now steward-agent.service. Existing agents
  keep running under the old name; reinstall to switch.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-25 16:20:14 -04:00

76 lines
2.0 KiB
Python

"""Pure-function tests for install.sh.j2 rendering and agent.py parsing."""
import subprocess
from pathlib import Path
import pytest
from jinja2 import Environment, FileSystemLoader
from plugins.host_agent.routes import _agent_version, AGENT_SOURCE_PATH
TEMPLATE_DIR = Path(__file__).resolve().parents[3] / "plugins" / "host_agent" / "templates"
def _render(**overrides) -> str:
env = Environment(loader=FileSystemLoader(str(TEMPLATE_DIR)))
defaults = dict(
url="https://r.example",
token="tok-abc",
agent_version="1.0.0",
host_name="testhost",
host_address="10.0.0.1",
)
defaults.update(overrides)
return env.get_template("install.sh.j2").render(**defaults)
def test_render_contains_token_and_url():
out = _render()
assert "tok-abc" in out
assert "https://r.example" in out
assert "testhost" in out
def test_render_contains_hardening_directives():
out = _render()
for needle in (
"NoNewPrivileges=yes",
"ProtectSystem=strict",
"ProtectHome=yes",
"PrivateTmp=yes",
"ReadOnlyPaths=/proc /sys",
):
assert needle in out, f"missing {needle}"
def test_render_has_uninstall_branch():
out = _render()
assert "--uninstall" in out
assert "systemctl disable --now steward-agent.service" in out
def test_render_has_systemctl_enable():
out = _render()
assert "systemctl enable --now steward-agent.service" in out
def test_render_uses_agent_py_url():
out = _render()
assert "/plugins/host_agent/agent.py" in out
def test_rendered_script_passes_sh_n(tmp_path):
out = _render()
script = tmp_path / "install.sh"
script.write_text(out)
result = subprocess.run(
["sh", "-n", str(script)], capture_output=True, text=True
)
assert result.returncode == 0, f"sh -n failed: {result.stderr}"
def test_agent_version_parses_on_disk_agent():
assert AGENT_SOURCE_PATH.exists()
v = _agent_version()
assert v == "1.0.0"