Skip to main content
Glama
ShivamPansuriya

Dynamic Per-User Tool Generation MCP Server

test_invalid_field_names.py4.94 kB
#!/usr/bin/env python3 """ Test that invalid field names are properly skipped. """ import logging from tool_function_factory import is_valid_parameter_name, extract_parameters_from_schema # Setup logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) def test_is_valid_parameter_name(): """Test the is_valid_parameter_name function.""" logger.info("=" * 80) logger.info("Testing is_valid_parameter_name()") logger.info("=" * 80) test_cases = [ # (name, expected_result) ("field_name", True), ("fieldName", True), ("field123", True), ("_private", True), ("__dunder__", True), ("is_process_legitimated_?", False), # The problematic field ("user-name", False), ("field name", False), ("123field", False), ("field.name", False), ("field@name", False), ("field$name", False), ] passed = 0 failed = 0 for name, expected in test_cases: result = is_valid_parameter_name(name) status = "✅" if result == expected else "❌" if result == expected: passed += 1 else: failed += 1 logger.info(f"{status} '{name}' -> {result} (expected {expected})") logger.info(f"\nResults: {passed} passed, {failed} failed") return failed == 0 def test_extract_parameters_with_invalid_names(): """Test that extract_parameters_from_schema skips invalid field names.""" logger.info("\n" + "=" * 80) logger.info("Testing extract_parameters_from_schema() with invalid names") logger.info("=" * 80) # Sample schema with both valid and invalid field names schema = { "type": "object", "properties": { "subject": { "type": "string", "description": "Request subject" }, "description": { "type": "string", "description": "Request description" }, "is_process_legitimated_?": { # Invalid name "type": "boolean", "description": "Process legitimation flag" }, "user-name": { # Invalid name "type": "string", "description": "User name" }, "priority": { "type": "string", "description": "Priority level" }, "field.with.dots": { # Invalid name "type": "string", "description": "Field with dots" }, "valid_field": { "type": "string", "description": "Valid field" } }, "required": ["subject"] } logger.info(f"Schema has {len(schema['properties'])} total fields") # Extract parameters params = extract_parameters_from_schema(schema) logger.info(f"\nExtracted {len(params)} valid parameters:") for param in params: logger.info(f" ✅ {param['name']} ({param['type'].__name__})") # Check that invalid fields were skipped param_names = [p['name'] for p in params] expected_valid = ["subject", "description", "priority", "valid_field"] expected_invalid = ["is_process_legitimated_?", "user-name", "field.with.dots"] logger.info(f"\nValidation:") all_valid_included = all(name in param_names for name in expected_valid) no_invalid_included = all(name not in param_names for name in expected_invalid) if all_valid_included: logger.info(f" ✅ All valid fields included") else: logger.error(f" ❌ Some valid fields missing") if no_invalid_included: logger.info(f" ✅ All invalid fields skipped") else: logger.error(f" ❌ Some invalid fields were not skipped") return all_valid_included and no_invalid_included if __name__ == "__main__": logger.info("\n" + "=" * 80) logger.info("INVALID FIELD NAME HANDLING TEST") logger.info("=" * 80 + "\n") test1_passed = test_is_valid_parameter_name() test2_passed = test_extract_parameters_with_invalid_names() logger.info("\n" + "=" * 80) logger.info("TEST SUMMARY") logger.info("=" * 80) if test1_passed: logger.info("✅ is_valid_parameter_name() test PASSED") else: logger.error("❌ is_valid_parameter_name() test FAILED") if test2_passed: logger.info("✅ extract_parameters_from_schema() test PASSED") else: logger.error("❌ extract_parameters_from_schema() test FAILED") if test1_passed and test2_passed: logger.info("\n🎉 All tests PASSED!") exit(0) else: logger.error("\n❌ Some tests FAILED") exit(1)

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/ShivamPansuriya/MCP-server-Python'

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