Skip to main content
Glama
test_environment_state.py3.62 kB
#!/usr/bin/env python3 """环境状态管理单元测试.""" from __future__ import annotations import json from magicapi_tools.ws import EnvironmentState, MessageType, WSMessage, parse_ws_message class DummyResolver: def __init__(self, details: dict[str, dict]): self._details = details def resolve_file(self, file_id: str): # noqa: D401 return self._details.get(file_id) def _print_header(title: str) -> None: print("=" * 60) print(title) print("=" * 60) def main() -> None: dummy_detail = { "file123": { "id": "file123", "name": "示例接口", "method": "GET", "path": "/demo/example", "groupName": "演示组", "groupPath": "demo", } } state = EnvironmentState(resource_resolver=DummyResolver(dummy_detail)) state.set_primary_client("client-1") _print_header("1. 处理登录响应,合并到IP环境") login_payload = json.dumps({"clientId": "client-1", "loginIp": "192.168.1.8", "nickname": "测试用户"}) login_msg = parse_ws_message(f"login_response,1,{login_payload}") env_after_login = state.handle_message(login_msg, default_client_id="client-1") print("环境标识:", env_after_login.ide_key if env_after_login else None) print("客户端集合:", sorted(env_after_login.client_ids) if env_after_login else None) print("最新用户:", env_after_login.latest_user if env_after_login else None) _print_header("2. 处理文件切换,记录接口上下文") set_file_msg = parse_ws_message("set_file_id,file123,{\"clientId\":\"client-1\"}") env_after_file = state.handle_message(set_file_msg, default_client_id="client-1") opened = env_after_file.opened_files.get("client-1") if env_after_file else None if opened: print("打开的文件:", opened.file_id) print("接口路径:", opened.method, opened.path) print("接口名称:", opened.name) print("分组链:", opened.group_chain) else: print("未找到打开文件记录") _print_header("3. 处理断点消息,更新变量和行号") breakpoint_payload = json.dumps( { "variables": [ { "name": "header", "type": "java.util.Map", "value": json.dumps({ "magic-request-client-id": "client-1", "magic-request-script-id": "file123", "magic-request-breakpoints": "5,9", }), }, {"name": "db", "type": "Object", "value": "{}"}, ], "range": [5, 1, 5, 20], } ) breakpoint_msg = parse_ws_message(f"breakpoint,file123,{breakpoint_payload}") env_after_breakpoint = state.handle_message(breakpoint_msg, default_client_id="client-1") ctx = env_after_breakpoint.opened_files.get("client-1") if env_after_breakpoint else None if ctx: print("最后断点范围:", ctx.last_breakpoint_range) print("捕获变量数量:", len(ctx.last_variables or [])) print("Headers: magic-request-client-id=", ctx.headers.get("magic-request-client-id") if ctx.headers else None) else: print("断点上下文缺失") _print_header("4. 总环境快照") for env in state.list_environments(): print( "IDE环境:", env.ide_key, "| 客户端数量:", len(env.client_ids), "| 打开文件:", list(env.opened_files.keys()), ) if __name__ == "__main__": main()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dwsy/magic-api-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server