summaryrefslogtreecommitdiff
path: root/stacks/daemon/test_privilege_drop.py
diff options
context:
space:
mode:
authorinfo@mode42.com <info@mode42.com>2026-08-07 18:25:13 +0000
committerinfo@mode42.com <info@mode42.com>2026-08-07 18:25:13 +0000
commit04d965d67a7264a1c7c211494aebda1953df7603 (patch)
tree0ebd700a6e219f84a26a656f4bee8778bc75da7b /stacks/daemon/test_privilege_drop.py
Initial push
Diffstat (limited to 'stacks/daemon/test_privilege_drop.py')
-rw-r--r--stacks/daemon/test_privilege_drop.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/stacks/daemon/test_privilege_drop.py b/stacks/daemon/test_privilege_drop.py
new file mode 100644
index 0000000..3a611c9
--- /dev/null
+++ b/stacks/daemon/test_privilege_drop.py
@@ -0,0 +1,55 @@
+#!/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())
git clone -b <branch> https://cgit.mode42.com/<repo>.git
git clone -b <branch> git://cgit.mode42.com/<repo>.git

info@mode42.com