test: add unit tests for core, parser and operations
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from sshctl.export.permissions import check_permissions, fix_ssh_permissions
|
||||
|
||||
|
||||
def test_check_permissions_ok(tmp_path: Path) -> None:
|
||||
ssh_dir = tmp_path / ".ssh"
|
||||
ssh_dir.mkdir(mode=0o700)
|
||||
(ssh_dir / "config").write_text("Host test\n", encoding="utf-8")
|
||||
(ssh_dir / "config").chmod(0o600)
|
||||
(ssh_dir / "keys.p").mkdir(mode=0o700)
|
||||
(ssh_dir / "keys.p" / "key.pub").write_text("ssh-ed25519 AAA...")
|
||||
(ssh_dir / "keys.p" / "key.pub").chmod(0o644)
|
||||
|
||||
issues = check_permissions(ssh_dir)
|
||||
total = sum(len(v) for v in issues.values())
|
||||
assert total == 0
|
||||
|
||||
|
||||
def test_fix_permissions(tmp_path: Path) -> None:
|
||||
ssh_dir = tmp_path / ".ssh"
|
||||
ssh_dir.mkdir(mode=0o755)
|
||||
(ssh_dir / "config").write_text("Host test\n", encoding="utf-8")
|
||||
(ssh_dir / "config").chmod(0o644)
|
||||
(ssh_dir / "id_rsa").write_text("private key data")
|
||||
(ssh_dir / "id_rsa").chmod(0o644)
|
||||
|
||||
counts = fix_ssh_permissions(ssh_dir)
|
||||
assert counts["dirs"] >= 1
|
||||
assert counts["private"] >= 1
|
||||
|
||||
assert (ssh_dir / "config").stat().st_mode & 0o777 == 0o600
|
||||
assert (ssh_dir / "id_rsa").stat().st_mode & 0o777 == 0o600
|
||||
Reference in New Issue
Block a user