#!/usr/bin/env python3 """Tests for max25d privilege_drop (no root required).""" from __future__ import annotations import configparser import sys from pathlib import Path ROOT = Path(__file__).resolve().parent sys.path.insert(0, str(ROOT)) from privilege_drop import RunAsConfig, parse_run_as, resolve_run_as, run_as_configured # noqa: E402 def test_parse_run_as_empty() -> None: cp = configparser.ConfigParser() cp.read_string("[daemon]\nmode = standalone\n") cfg = parse_run_as(cp) assert cfg.user == "" assert not run_as_configured(cfg) def test_parse_run_as_user_group() -> None: cp = configparser.ConfigParser() cp.read_string( "[daemon]\nuser = max25\ngroup = dialout\nuid = 1001\n" ) cfg = parse_run_as(cp) assert cfg.user == "max25" assert cfg.group == "dialout" assert cfg.uid == 1001 assert run_as_configured(cfg) def test_resolve_run_as_current_user() -> None: import os import pwd pw = pwd.getpwuid(os.getuid()) uid, gid, name = resolve_run_as(RunAsConfig(user=pw.pw_name)) assert uid == pw.pw_uid assert gid == pw.pw_gid assert name == pw.pw_name def main() -> int: test_parse_run_as_empty() test_parse_run_as_user_group() test_resolve_run_as_current_user() print("privilege_drop: OK") return 0 if __name__ == "__main__": raise SystemExit(main())