Files

87 lines
2.9 KiB
Python

"""Tests for git-based agent release version resolution."""
from pathlib import Path
from app.services.agent_git_release import (
normalize_git_repo_url,
parse_product_version_from_dir,
parse_rdp_version_from_files,
parse_ssh_version_from_files,
recommended_from_git,
)
from app.services.agent_update_settings import PRODUCT_RDP, PRODUCT_SSH, AgentUpdateConfig
from app.services.agent_version import reference_agent_versions_by_product
def test_normalize_git_repo_url():
assert normalize_git_repo_url("git.papatramp.ru/PapaTramp/ssh-monitor").endswith(
"ssh-monitor.git"
)
assert normalize_git_repo_url("https://example.com/repo.git") == "https://example.com/repo.git"
def test_parse_rdp_version_from_files():
assert parse_rdp_version_from_files("2.1.2-SAC\n", None) == "2.1.2-SAC"
assert (
parse_rdp_version_from_files(None, '$ScriptVersion = "2.0.35-SAC"')
== "2.0.35-SAC"
)
def test_parse_ssh_version_from_files():
assert parse_ssh_version_from_files('SSH_MONITOR_VERSION="2.1.0-SAC"\n', None) == "2.1.0-SAC"
assert parse_ssh_version_from_files(None, "2.0.6-SAC") == "2.0.6-SAC"
def test_parse_product_version_from_dir(tmp_path: Path):
(tmp_path / "version.txt").write_text("2.1.2-SAC\n", encoding="utf-8")
assert parse_product_version_from_dir(tmp_path, PRODUCT_RDP) == "2.1.2-SAC"
ssh_dir = tmp_path / "ssh"
ssh_dir.mkdir()
(ssh_dir / "ssh-monitor").write_text('SSH_MONITOR_VERSION="2.1.0-SAC"\n', encoding="utf-8")
assert parse_product_version_from_dir(ssh_dir, PRODUCT_SSH) == "2.1.0-SAC"
def test_recommended_from_git_prefers_git():
cfg = AgentUpdateConfig(
mode="sac",
fallback_enabled=True,
fallback_after_minutes=15,
recommended_rdp_version="2.0.0-SAC",
recommended_ssh_version="",
min_rdp_version="",
min_ssh_version="",
win_agent_update_script="",
rdp_git_repo_url="https://git.example/rdp.git",
ssh_git_repo_url="https://git.example/ssh.git",
git_branch="main",
source="env",
)
git_versions = {PRODUCT_SSH: "2.1.0-SAC"}
assert recommended_from_git(cfg, git_versions, PRODUCT_SSH) == "2.1.0-SAC"
assert recommended_from_git(cfg, git_versions, PRODUCT_RDP) == "2.0.0-SAC"
def test_reference_agent_versions_uses_git():
cfg = AgentUpdateConfig(
mode="gpo",
fallback_enabled=True,
fallback_after_minutes=15,
recommended_rdp_version="",
recommended_ssh_version="",
min_rdp_version="",
min_ssh_version="",
win_agent_update_script="",
rdp_git_repo_url="",
ssh_git_repo_url="",
git_branch="main",
source="env",
)
refs = reference_agent_versions_by_product(
cfg,
{"ssh-monitor": "2.0.6-SAC"},
git_versions={"ssh-monitor": "2.1.0-SAC"},
)
assert refs["ssh-monitor"] == "2.1.0-SAC"