tools/src/dynamic_tool_tests.rs
65 lines
use super::parse_dynamic_tool;use crate::JsonSchema;use crate::ToolDefinition;use codex_protocol::dynamic_tools::DynamicToolFunctionSpec;use pretty_assertions::assert_eq;use std::collections::BTreeMap;#[test]fn parse_dynamic_tool_sanitizes_input_schema() { let tool = DynamicToolFunctionSpec { name: "lookup_ticket".to_string(), description: "Fetch a ticket".to_string(), input_schema: serde_json::json!({ "properties": { "id": { "description": "Ticket identifier" } } }), defer_loading: false, }; assert_eq!( parse_dynamic_tool(&tool).expect("parse dynamic tool"), ToolDefinition { name: "lookup_ticket".to_string(), description: "Fetch a ticket".to_string(), input_schema: JsonSchema::object( BTreeMap::from([("id".to_string(), JsonSchema::default(),)]), /*required*/ None, /*additional_properties*/ None ), output_schema: None, defer_loading: false, } );}#[test]fn parse_dynamic_tool_preserves_defer_loading() { let tool = DynamicToolFunctionSpec { name: "lookup_ticket".to_string(), description: "Fetch a ticket".to_string(), input_schema: serde_json::json!({ "type": "object", "properties": {} }), defer_loading: true, }; assert_eq!( parse_dynamic_tool(&tool).expect("parse dynamic tool"), ToolDefinition { name: "lookup_ticket".to_string(), description: "Fetch a ticket".to_string(), input_schema: JsonSchema::object( BTreeMap::new(), /*required*/ None, /*additional_properties*/ None ), output_schema: None, defer_loading: true, } );}