f411d8f070
SAC reads latest RDP/ssh-monitor versions from configured git repos for outdated detection, update targets, and settings test-git.
87 lines
2.9 KiB
Python
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.kalinamall.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"
|