import unittest import gitea_mcp_server import mcp_namespace_health class TestMcpNamespaceHealth(unittest.TestCase): def test_registered_tool_but_live_eof_blocks_merge(self): result = mcp_namespace_health.classify_namespace_probe( "gitea-reviewer", required_tool="gitea_whoami", registered_tools=["gitea_whoami", "gitea_list_profiles"], probe_result={ "success": False, "error": "client is closing: EOF", }, process={ "pid": 4321, "profile": "prgs-reviewer", "env": { "GITEA_MCP_PROFILE": "prgs-reviewer", "GITEA_TOKEN": "must-not-leak", }, }, config_path="/Users/jasonwalker/.gemini/config/mcp_config.json", ) self.assertFalse(result["healthy"]) self.assertEqual(result["error_type"], "namespace_eof") self.assertTrue(result["required_tool_registered"]) self.assertFalse(result["required_tool_callable"]) self.assertTrue(result["blocks_merge_workflow"]) self.assertEqual(result["diagnostics"]["process_pid"], 4321) self.assertEqual(result["diagnostics"]["profile"], "prgs-reviewer") self.assertEqual( result["diagnostics"]["env"]["GITEA_MCP_PROFILE"], "prgs-reviewer", ) self.assertNotIn("GITEA_TOKEN", result["diagnostics"]["env"]) self.assertIn("gitea-reviewer", result["reasons"][0]) self.assertIn("gitea_whoami", result["reasons"][0]) def test_successful_live_invocation_is_healthy(self): result = mcp_namespace_health.classify_namespace_probe( "gitea-author", registered_tools=["gitea_whoami"], probe_result={"success": True, "result": {"authenticated": True}}, process={"pid": 1234, "profile": "prgs-author"}, config_path="/tmp/mcp_config.json", ) self.assertTrue(result["healthy"]) self.assertTrue(result["required_tool_registered"]) self.assertTrue(result["required_tool_callable"]) self.assertFalse(result["blocks_merge_workflow"]) self.assertIsNone(result["error_type"]) def test_registered_missing_required_tool_fails_before_probe_success(self): result = mcp_namespace_health.classify_namespace_probe( "gitea-tools", registered_tools=["gitea_whoami"], probe_result={"success": True, "result": {}}, ) self.assertFalse(result["healthy"]) self.assertEqual(result["required_tool"], "gitea_list_profiles") self.assertFalse(result["required_tool_registered"]) self.assertEqual(result["error_type"], "tool_missing") def test_server_tool_exposes_same_assessment(self): result = gitea_mcp_server.gitea_assess_mcp_namespace_health( "gitea-merger", registered_tools=["gitea_whoami"], probe_result={"success": False, "error": "transport closed"}, process={"pid": 9876, "profile": "prgs-merger"}, ) self.assertFalse(result["success"]) self.assertEqual(result["error_type"], "namespace_eof") self.assertEqual(result["namespace"], "gitea-merger") self.assertEqual(result["diagnostics"]["process_pid"], 9876) if __name__ == "__main__": unittest.main()