Download tests/gateway/test_api_server_toolset.py from SaylorTwift/hermes-agent: direct link, hf CLI and curl.
- Browser
- Download file 3.61 kB
-
https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/tests/gateway/test_api_server_toolset.py
- Command line
-
hf download hf://SaylorTwift/hermes-agent/tests/gateway/test_api_server_toolset.py
-
curl -L -o test_api_server_toolset.py https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/tests/gateway/test_api_server_toolset.py
3.61 kB
| """Tests for hermes-api-server toolset and API server tool availability.""" | |
| from unittest.mock import patch, MagicMock | |
| from toolsets import resolve_toolset, get_toolset, validate_toolset | |
| class TestHermesApiServerToolset: | |
| """Tests for the hermes-api-server toolset definition.""" | |
| def test_toolset_includes_web_tools(self): | |
| tools = resolve_toolset("hermes-api-server") | |
| assert "web_search" in tools | |
| assert "web_extract" in tools | |
| def test_toolset_includes_core_tools(self): | |
| tools = resolve_toolset("hermes-api-server") | |
| expected = [ | |
| "terminal", "process_manage", | |
| "read_file", "write_file", "patch", "search_files", | |
| "vision_analyze", "image_generate", | |
| "execute_code", "delegate_task", | |
| "todo_list", "memory", "session_search", "cronjob_manage", | |
| ] | |
| for tool in expected: | |
| assert tool in tools, f"Missing expected tool: {tool}" | |
| def test_toolset_includes_browser_tools(self): | |
| tools = resolve_toolset("hermes-api-server") | |
| for tool in ["browser_navigate", "browser_snapshot", "browser_click", | |
| "browser_type", "browser_scroll", "browser_back", | |
| "browser_press"]: | |
| assert tool in tools, f"Missing browser tool: {tool}" | |
| class TestApiServerPlatformConfig: | |
| def test_default_api_server_includes_terminal_toolset(self): | |
| """Regression #49622: desktop-only read_terminal is registered into the | |
| 'terminal' toolset (ships in-repo), so resolve_toolset('terminal') grows | |
| to include it after discovery. read_terminal is NOT in the | |
| hermes-api-server composite, so the old all-tools subset test dropped | |
| 'terminal' entirely. Its static membership (terminal, process) IS in the | |
| composite, so it must stay enabled.""" | |
| from tools.registry import discover_builtin_tools | |
| from hermes_cli.tools_config import _get_platform_tools | |
| discover_builtin_tools() | |
| assert "terminal" in _get_platform_tools({}, "api_server") | |
| class TestApiServerAdapterToolset: | |
| def test_create_agent_reads_config_toolsets(self): | |
| """API server resolves toolsets from config like all other platforms.""" | |
| from gateway.platforms.api_server import APIServerAdapter | |
| from gateway.config import PlatformConfig | |
| adapter = APIServerAdapter(PlatformConfig()) | |
| with patch("gateway.run._resolve_runtime_agent_kwargs") as mock_kwargs, \ | |
| patch("gateway.run._resolve_gateway_model") as mock_model, \ | |
| patch("gateway.run._load_gateway_config") as mock_config, \ | |
| patch("run_agent.AIAgent") as mock_agent_cls: | |
| mock_kwargs.return_value = {"api_key": "test-key", "base_url": None, | |
| "provider": None, "api_mode": None, | |
| "command": None, "args": []} | |
| mock_model.return_value = "test/model" | |
| # No platform_toolsets override — should fall back to hermes-api-server default | |
| mock_config.return_value = {} | |
| mock_agent_cls.return_value = MagicMock() | |
| adapter._create_agent() | |
| mock_agent_cls.assert_called_once() | |
| call_kwargs = mock_agent_cls.call_args | |
| toolsets = call_kwargs.kwargs.get("enabled_toolsets") | |
| assert isinstance(toolsets, list) | |
| assert len(toolsets) > 0 | |
| assert call_kwargs.kwargs.get("platform") == "api_server" | |