109 lines
4.8 KiB
Python
109 lines
4.8 KiB
Python
from unittest.mock import Mock, patch
|
|
from importlib.metadata import PackageNotFoundError
|
|
|
|
from agentops.helpers.version import get_agentops_version, check_agentops_update
|
|
|
|
|
|
class TestGetAgentopsVersion:
|
|
def test_get_agentops_version_success(self):
|
|
"""Test successful version retrieval."""
|
|
with patch("agentops.helpers.version.version") as mock_version:
|
|
mock_version.return_value = "1.2.3"
|
|
|
|
result = get_agentops_version()
|
|
|
|
assert result == "1.2.3"
|
|
mock_version.assert_called_once_with("agentops")
|
|
|
|
def test_get_agentops_version_exception(self):
|
|
"""Test version retrieval when an exception occurs."""
|
|
test_exception = Exception("Test error")
|
|
|
|
with patch("agentops.helpers.version.version") as mock_version:
|
|
mock_version.side_effect = test_exception
|
|
|
|
with patch("agentops.helpers.version.logger") as mock_logger:
|
|
result = get_agentops_version()
|
|
|
|
assert result is None
|
|
mock_logger.warning.assert_called_once_with("Error reading package version: %s", test_exception)
|
|
|
|
|
|
class TestCheckAgentopsUpdate:
|
|
def test_check_agentops_update_outdated(self):
|
|
"""Test update check when a newer version is available."""
|
|
mock_response = Mock()
|
|
mock_response.status_code = 200
|
|
mock_response.json.return_value = {"info": {"version": "2.0.0"}}
|
|
|
|
with patch("agentops.helpers.version.requests.get", return_value=mock_response):
|
|
with patch("agentops.helpers.version.version", return_value="1.0.0"):
|
|
with patch("agentops.helpers.version.logger") as mock_logger:
|
|
check_agentops_update()
|
|
|
|
mock_logger.warning.assert_called_once_with(
|
|
" WARNING: agentops is out of date. Please update with the command: 'pip install --upgrade agentops'"
|
|
)
|
|
|
|
def test_check_agentops_update_current(self):
|
|
"""Test update check when current version is up to date."""
|
|
mock_response = Mock()
|
|
mock_response.status_code = 200
|
|
mock_response.json.return_value = {"info": {"version": "1.0.0"}}
|
|
|
|
with patch("agentops.helpers.version.requests.get", return_value=mock_response):
|
|
with patch("agentops.helpers.version.version", return_value="1.0.0"):
|
|
with patch("agentops.helpers.version.logger") as mock_logger:
|
|
check_agentops_update()
|
|
|
|
# Should not log any warning when versions match
|
|
mock_logger.warning.assert_not_called()
|
|
|
|
def test_check_agentops_update_package_not_found(self):
|
|
"""Test update check when package is not found."""
|
|
mock_response = Mock()
|
|
mock_response.status_code = 200
|
|
mock_response.json.return_value = {"info": {"version": "2.0.0"}}
|
|
|
|
with patch("agentops.helpers.version.requests.get", return_value=mock_response):
|
|
with patch("agentops.helpers.version.version", side_effect=PackageNotFoundError("agentops")):
|
|
with patch("agentops.helpers.version.logger") as mock_logger:
|
|
result = check_agentops_update()
|
|
|
|
assert result is None
|
|
mock_logger.warning.assert_not_called()
|
|
|
|
def test_check_agentops_update_request_failure(self):
|
|
"""Test update check when the HTTP request fails."""
|
|
with patch("agentops.helpers.version.requests.get", side_effect=Exception("Network error")):
|
|
with patch("agentops.helpers.version.logger") as mock_logger:
|
|
result = check_agentops_update()
|
|
|
|
assert result is None
|
|
mock_logger.debug.assert_called_once_with("Failed to check for updates: Network error")
|
|
|
|
def test_check_agentops_update_non_200_status(self):
|
|
"""Test update check when the HTTP response is not 200."""
|
|
mock_response = Mock()
|
|
mock_response.status_code = 404
|
|
|
|
with patch("agentops.helpers.version.requests.get", return_value=mock_response):
|
|
with patch("agentops.helpers.version.logger") as mock_logger:
|
|
check_agentops_update()
|
|
|
|
# Should not log any warning when status is not 200
|
|
mock_logger.warning.assert_not_called()
|
|
|
|
def test_check_agentops_update_json_error(self):
|
|
"""Test update check when JSON parsing fails."""
|
|
mock_response = Mock()
|
|
mock_response.status_code = 200
|
|
mock_response.json.side_effect = Exception("JSON error")
|
|
|
|
with patch("agentops.helpers.version.requests.get", return_value=mock_response):
|
|
with patch("agentops.helpers.version.logger") as mock_logger:
|
|
result = check_agentops_update()
|
|
|
|
assert result is None
|
|
mock_logger.debug.assert_called_once_with("Failed to check for updates: JSON error")
|