test: add unit tests for core, parser and operations
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from sshctl.core.config import SshctlConfig
|
||||
from sshctl.core.models import HostBlock
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def ssh_dir(tmp_path: Path) -> Path:
|
||||
d = tmp_path / ".ssh"
|
||||
d.mkdir()
|
||||
return d
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_config(ssh_dir: Path) -> Path:
|
||||
content = """Host *
|
||||
User root
|
||||
Port 22
|
||||
StrictHostKeyChecking accept-new
|
||||
|
||||
Host server1
|
||||
HostName 10.0.0.1
|
||||
User admin
|
||||
Port 2222
|
||||
|
||||
Host server2
|
||||
HostName 10.0.0.2
|
||||
ProxyJump server1
|
||||
|
||||
Host *.example.com
|
||||
HostName example.com
|
||||
User deploy
|
||||
"""
|
||||
path = ssh_dir / "config"
|
||||
path.write_text(content)
|
||||
return path
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def config_with_includes(ssh_dir: Path) -> Path:
|
||||
conf_d = ssh_dir / "conf.d"
|
||||
conf_d.mkdir()
|
||||
|
||||
jumps = conf_d / "98-jumpservers.conf"
|
||||
jumps.write_text("""Host gw
|
||||
HostName 10.0.0.254
|
||||
User jumpuser
|
||||
""")
|
||||
|
||||
creds = conf_d / "99-cred.conf"
|
||||
creds.write_text("""Host *
|
||||
IdentityFile ~/.ssh/keys.d/fallback
|
||||
""")
|
||||
|
||||
main = ssh_dir / "config"
|
||||
main.write_text("""Host *
|
||||
User root
|
||||
Port 22
|
||||
|
||||
Include conf.d/98-jumpservers.conf
|
||||
Include conf.d/99-cred.conf
|
||||
|
||||
Host app1
|
||||
HostName 10.0.0.10
|
||||
ProxyJump gw
|
||||
""")
|
||||
return main
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_host() -> HostBlock:
|
||||
host = HostBlock(alias="test-box")
|
||||
host.set("HostName", "10.0.0.1")
|
||||
host.set("User", "admin")
|
||||
host.set("Port", "2222")
|
||||
host.set("ProxyJump", "gw")
|
||||
return host
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def cfg() -> SshctlConfig:
|
||||
return SshctlConfig()
|
||||
Reference in New Issue
Block a user