Files
sshctl/tests/test_exporter.py
T

68 lines
1.6 KiB
Python

from __future__ import annotations
from pathlib import Path
from sshctl.config.resolver import ResolvedHost
from sshctl.export.exporter import export_csv, export_csv_to_file
def test_export_csv_with_hosts() -> None:
hosts = [
ResolvedHost(
alias="server1",
hostname="10.0.0.1",
user="admin",
port=22,
proxy_jump="gw",
identity_file="~/.ssh/id_rsa",
options={},
),
ResolvedHost(
alias="server2",
hostname="10.0.0.2",
user="root",
port=2222,
proxy_jump="",
identity_file="",
options={},
),
]
csv_content = export_csv(hosts)
lines = csv_content.strip().splitlines()
assert len(lines) == 3
assert lines[0] == "Host,HostName,User,Port,ProxyJump,IdentityFile"
assert "server1" in lines[1]
assert "server2" in lines[2]
assert "10.0.0.1" in lines[1]
assert "gw" in lines[1]
def test_export_csv_to_file(tmp_path: Path) -> None:
hosts = [
ResolvedHost(
alias="test",
hostname="10.0.0.1",
user="root",
port=22,
proxy_jump="",
identity_file="",
options={},
),
]
path = export_csv_to_file(tmp_path / "output.csv", hosts)
assert path.exists()
content = path.read_text()
assert "test" in content
assert "10.0.0.1" in content
def test_export_csv_requires_args() -> None:
raised = False
try:
export_csv()
except ValueError:
raised = True
assert raised, "Expected ValueError"