#![allow(clippy::disallowed_methods)]
use aprender_mcp::AprMcpServer;
#[test]
fn every_tool_input_schema_is_valid_jsonschema_draft_7() {
let server = AprMcpServer::new();
let definitions = server.tool_definitions();
assert!(
!definitions.is_empty(),
"expected at least one tool registered"
);
for def in &definitions {
let schema_value = serde_json::to_value(&def.input_schema)
.unwrap_or_else(|e| panic!("serialize {}: {e}", def.name));
jsonschema::validator_for(&schema_value).unwrap_or_else(|e| {
panic!(
"tool {} has an invalid JSON Schema inputSchema: {e}\nschema: {}",
def.name,
serde_json::to_string_pretty(&schema_value).unwrap_or_default()
)
});
}
}
#[test]
fn invalid_schema_is_rejected_by_validator_for() {
let bogus = serde_json::json!({
"type": "object",
"properties": "this-should-be-an-object-not-a-string"
});
assert!(
jsonschema::validator_for(&bogus).is_err(),
"validator_for should reject schema with non-object `properties`"
);
}