dynamic-infra-tooling/tests/unit/test_proxmox_logic.py

47 lines
1.6 KiB
Python
Raw Permalink Normal View History

import pytest
from unittest.mock import MagicMock, patch
from infra_cli.proxmox import ProxmoxManager
class MockConfig:
def get_node(self, name):
return {"host": "1.2.3.4", "pass": "secret"}
def get(self, key, default=None):
return default
@patch('infra_cli.proxmox.SSHClient')
def test_template_resolution(mock_ssh):
# Setup mock SSH response
mock_instance = mock_ssh.return_value
mock_instance.run.return_value.returncode = 0
mock_instance.run.return_value.stdout = "local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst tzst vztmpl 129710398"
mgr = ProxmoxManager(MockConfig())
resolved = mgr.resolve_template("debian-13")
assert resolved == "local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst"
mock_instance.run.assert_called_with("pvesm list --content vztmpl | grep 'debian-13-standard' | sort -V | tail -n 1")
@patch('infra_cli.proxmox.SSHClient')
def test_storage_discovery(mock_ssh):
mock_instance = mock_ssh.return_value
mock_instance.run.return_value.returncode = 0
mock_instance.run.return_value.stdout = "local-zfs zfspool active 1000 500 500 50%"
mgr = ProxmoxManager(MockConfig())
storage = mgr.discover_storage()
assert storage == "local-zfs"
@patch('infra_cli.proxmox.SSHClient')
def test_vmid_discovery(mock_ssh):
mock_instance = mock_ssh.return_value
mock_instance.run.return_value.returncode = 0
mock_instance.run.return_value.stdout = "105"
mgr = ProxmoxManager(MockConfig())
vmid = mgr.get_next_vmid()
assert vmid == "105"
mock_instance.run.assert_called_with("pvesh get /cluster/nextid")