Files
kumacli/tests/test_info.py
Pim van Pelt e2e65add2e Add tests
2025-08-02 20:03:32 +02:00

92 lines
2.8 KiB
Python

#!/usr/bin/env python3
import pytest
from unittest.mock import Mock, patch
from io import StringIO
import sys
from kumacli.cmd.info import InfoCommands, handle_info_command
class TestInfoCommands:
def test_get_info_success(self, mock_client, capsys):
"""Test successful info retrieval"""
# Setup
mock_info_data = {
"version": "1.23.0",
"hostname": "kuma-server",
"primaryBaseURL": "https://status.example.com"
}
mock_client.api.info.return_value = mock_info_data
info_commands = InfoCommands(mock_client)
# Execute
info_commands.get_info()
# Verify
mock_client.api.info.assert_called_once()
captured = capsys.readouterr()
assert "Server Information:" in captured.out
assert "version: 1.23.0" in captured.out
assert "hostname: kuma-server" in captured.out
assert "primaryBaseURL: https://status.example.com" in captured.out
def test_get_info_empty_response(self, mock_client, capsys):
"""Test info command with empty response"""
# Setup
mock_client.api.info.return_value = None
info_commands = InfoCommands(mock_client)
# Execute
info_commands.get_info()
# Verify
mock_client.api.info.assert_called_once()
captured = capsys.readouterr()
assert "No server info available" in captured.out
def test_get_info_api_error(self, mock_client, capsys):
"""Test info command with API error"""
# Setup
mock_client.api.info.side_effect = Exception("Connection failed")
info_commands = InfoCommands(mock_client)
# Execute
info_commands.get_info()
# Verify
mock_client.api.info.assert_called_once()
captured = capsys.readouterr()
assert "Error getting server info: Connection failed" in captured.out
class TestInfoCommandHandler:
def test_handle_info_command(self, mock_client):
"""Test info command handler"""
# Setup
mock_args = Mock()
mock_info_data = {"version": "1.23.0"}
mock_client.api.info.return_value = mock_info_data
# Execute
result = handle_info_command(mock_args, mock_client)
# Verify
assert result is True
mock_client.api.info.assert_called_once()
def test_handle_info_command_with_error(self, mock_client):
"""Test info command handler with error"""
# Setup
mock_args = Mock()
mock_client.api.info.side_effect = Exception("API Error")
# Execute
result = handle_info_command(mock_args, mock_client)
# Verify
assert result is True # Handler always returns True
mock_client.api.info.assert_called_once()