"""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"