Spaces:
Configuration error
Configuration error
File size: 5,054 Bytes
d242052 a5d33a6 d242052 a5d33a6 d242052 a5d33a6 d242052 a5d33a6 d242052 a5d33a6 d242052 a5d33a6 d242052 a5d33a6 d242052 a5d33a6 d242052 a5d33a6 d242052 a5d33a6 d242052 a5d33a6 d242052 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | """Unit tests for C9 Developer Interfaces (REST, CLI, MCP, Python SDK, VS Code)."""
from unittest.mock import MagicMock
from ria.interfaces.cli import CLIRunner
from ria.interfaces.mcp import MCPServer
from ria.interfaces.rest import RESTAPIServer
from ria.interfaces.sdk.python import RIAClient
from ria.interfaces.vscode.extension import VSCodeCommandDispatcher
def test_rest_api_server_endpoints() -> None:
mock_sync = MagicMock()
mock_search = MagicMock()
mock_query = MagicMock()
mock_context = MagicMock()
mock_knowledge = MagicMock()
mock_sync.register_repository.return_value = MagicMock(
is_success=True, repo_id="r1", status="SYNCED"
)
mock_sync.synchronize_repository.return_value = MagicMock(
is_success=True, repo_id="r1", current_commit_sha="abc"
)
mock_search.search_symbol.return_value = MagicMock(
is_success=True, results=MagicMock(payload=(1, 2, 3, 4, 5))
)
mock_query.find_definition.return_value = MagicMock(is_success=True, query_id="q1")
mock_context.build_context.return_value = MagicMock(
is_success=True, package_id="p1", total_tokens=150, content="{}"
)
mock_knowledge.answer_question.return_value = MagicMock(
is_success=True, answer_text="Ans", is_grounded=True, grounding_score=0.98
)
server = RESTAPIServer(
mock_sync, mock_search, mock_query, mock_context, mock_knowledge
)
# Health
resp = server.handle_request("GET", "/health")
assert resp.is_success
assert resp.data["status"] == "healthy"
# Version
resp = server.handle_request("GET", "/version")
assert resp.is_success
assert resp.data["version"] == "2.0.0"
# Register repo
resp = server.handle_request(
"POST", "/repositories", {"remote_url": "https://repo.git", "name": "repo"}
)
assert resp.is_success
assert resp.data["repo_id"] == "r1"
# Search
resp = server.handle_request(
"POST", "/search", {"repo_id": "r1", "query_text": "main"}
)
assert resp.is_success
assert resp.data["total_matches"] == 5
def test_mcp_server_tools() -> None:
mock_sync = MagicMock()
mock_search = MagicMock()
mock_query = MagicMock()
mock_context = MagicMock()
mock_knowledge = MagicMock()
mock_search.search_symbol.return_value = MagicMock(
is_success=True, results=MagicMock(payload=(1, 2))
)
mock_knowledge.answer_question.return_value = MagicMock(
is_success=True, answer_text="Ans", is_grounded=True
)
mcp = MCPServer(mock_sync, mock_search, mock_query, mock_context, mock_knowledge)
tools = mcp.list_tools()
assert len(tools) == 14
res = mcp.invoke_tool("search_symbol", {"repo_id": "r1", "query": "login"})
assert res["is_success"]
res = mcp.invoke_tool(
"ask_repository", {"repo_id": "r1", "question": "how to login?"}
)
assert res["is_success"]
assert res["answer"] == "Ans"
def test_python_sdk_client() -> None:
mock_sync = MagicMock()
mock_search = MagicMock()
mock_query = MagicMock()
mock_context = MagicMock()
mock_knowledge = MagicMock()
mock_search.search_symbol.return_value = MagicMock(
is_success=True, results=MagicMock(payload=tuple(range(10)))
)
mock_knowledge.answer_question.return_value = MagicMock(
is_success=True, answer_text="SDK Ans", is_grounded=True
)
client = RIAClient(mock_sync, mock_search, mock_query, mock_context, mock_knowledge)
srch_resp = client.search("r1", "AuthService")
assert srch_resp.is_success
assert srch_resp.data["total_matches"] == 10
ask_resp = client.ask("r1", "AuthService?")
assert ask_resp.is_success
assert ask_resp.data["answer"] == "SDK Ans"
def test_cli_runner() -> None:
mock_sync = MagicMock()
mock_search = MagicMock()
mock_query = MagicMock()
mock_context = MagicMock()
mock_knowledge = MagicMock()
mock_sync.register_repository.return_value = MagicMock(
is_success=True, repo_id="r1", status="SYNCED"
)
mock_search.search_symbol.return_value = MagicMock(
is_success=True, results=MagicMock(payload=(1,))
)
cli = CLIRunner(mock_sync, mock_search, mock_query, mock_context, mock_knowledge)
ret = cli.run(["init", "--remote-url", "https://repo.git", "--name", "repo"])
assert ret == 0
ret = cli.run(["search", "--repo-id", "r1", "--query", "login"])
assert ret == 0
def test_vscode_command_dispatcher() -> None:
mock_search = MagicMock()
mock_query = MagicMock()
mock_context = MagicMock()
mock_knowledge = MagicMock()
mock_knowledge.answer_question.return_value = MagicMock(
is_success=True, answer_text="VS Code Ans"
)
disp = VSCodeCommandDispatcher(
mock_search, mock_query, mock_context, mock_knowledge
)
res = disp.execute_command(
"ria.askRepository", {"repo_id": "r1", "question": "auth?"}
)
assert res["is_success"]
assert res["answer"] == "VS Code Ans"
|