aria / tests /test_cli.py
varshithreddy1807's picture
release: v1.5.0 production release
d242052
Raw History Blame Contribute Delete
2.1 kB
from typer.testing import CliRunner
import httpx
from backend.cli import app
runner = CliRunner()
def test_cli_version():
result = runner.invoke(app, ["version"])
assert result.exit_code == 0
assert "Client" in result.stdout
assert "1.5.0" in result.stdout
def test_cli_stability():
from unittest.mock import patch
mock_response = httpx.Response(404, text="Not Found")
with patch("httpx.get", return_value=mock_response):
result = runner.invoke(app, ["stability", "owner", "repo"])
assert result.exit_code == 0
assert "not yet implemented" in result.stdout
def test_cli_health(respx_mock=None):
# If using pytest-respx, we can mock httpx, otherwise we mock via monkeypatch or unittest.mock
# Let's use standard unittest.mock to mock httpx.get for simplicity and independence from extra plugins
from unittest.mock import patch
mock_response = httpx.Response(200, json={"status": "healthy", "backend": "online"})
with patch("httpx.get", return_value=mock_response) as mock_get:
result = runner.invoke(app, ["health", "--url", "http://test-server"])
assert result.exit_code == 0
assert "healthy" in result.stdout
mock_get.assert_called_once_with(
"http://test-server/api/v1/health", timeout=10.0
)
def test_cli_graph():
from unittest.mock import patch
mock_response = httpx.Response(200, json={"nodes": [], "edges": []})
with patch("httpx.get", return_value=mock_response) as mock_get:
result = runner.invoke(
app, ["graph", "owner", "repo", "--url", "http://test-server"]
)
assert result.exit_code == 0
assert "nodes" in result.stdout
mock_get.assert_called_once_with(
"http://test-server/api/v1/architecture/owner/repo/graph", timeout=30.0
)
def test_cli_mcp():
from unittest.mock import patch
with patch("backend.mcp_server.run_mcp_server") as mock_run:
result = runner.invoke(app, ["mcp"])
assert result.exit_code == 0
mock_run.assert_called_once()