Codex Handbook
core/src/tools/handlers/mcp_search_tests.rs 70 lines
use super::*;use codex_tools::LoadableToolSpec;use codex_tools::ToolSearchSourceInfo;use pretty_assertions::assert_eq;use serde_json::json;#[test]fn search_info_uses_mcp_tool_metadata_and_parameter_names() {    let handler = McpHandler::new(tool_info()).expect("MCP tool spec should build");    let search_info = handler.search_info().expect("MCP search info");    assert_eq!(        search_info.entry.search_text,        "mcp__calendar___create_event _create_event createEvent codex-apps Create event Create a calendar event. Calendar Plan events. Calendar plugin attendees start_time"    );    assert_eq!(        search_info.source_info,        Some(ToolSearchSourceInfo {            name: "Calendar".to_string(),            description: Some("Plan events.".to_string()),        })    );}#[test]fn search_info_uses_connector_name_for_output_namespace_description() {    let mut tool_info = tool_info();    tool_info.namespace_description = None;    let handler = McpHandler::new(tool_info).expect("MCP tool spec should build");    let search_info = handler.search_info().expect("MCP search info");    let LoadableToolSpec::Namespace(namespace) = search_info.entry.output else {        panic!("expected namespace search output");    };    assert_eq!(namespace.description, "Tools for working with Calendar.");    assert_eq!(        search_info.source_info,        Some(ToolSearchSourceInfo {            name: "Calendar".to_string(),            description: None,        })    );}fn tool_info() -> ToolInfo {    ToolInfo {        server_name: "codex-apps".to_string(),        supports_parallel_tool_calls: false,        server_origin: None,        callable_name: "_create_event".to_string(),        callable_namespace: "mcp__calendar__".to_string(),        namespace_description: Some("Plan events.".to_string()),        tool: rmcp::model::Tool::new(            "createEvent",            "Create a calendar event.",            Arc::new(rmcp::model::object(json!({                "type": "object",                "properties": {                    "start_time": { "type": "string" },                    "attendees": { "type": "string" }                },                "additionalProperties": false            }))),        )        .with_title("Create event"),        connector_id: None,        connector_name: Some("Calendar".to_string()),        plugin_display_names: vec![" Calendar plugin ".to_string(), " ".to_string()],    }}