Skip to main content
Glama
test_json_parsing_simple.py3.85 kB
""" Simple tests for JSON string parameter parsing logic. Tests the core JSON parsing functionality without MCP server dependencies. """ import json import pytest def parse_properties_json(properties): """ Test the JSON parsing logic that would be used in manage_asset. This simulates the core parsing functionality. """ if isinstance(properties, str): try: parsed = json.loads(properties) return parsed, "success" except json.JSONDecodeError as e: return properties, f"failed to parse: {e}" return properties, "no_parsing_needed" class TestJsonParsingLogic: """Test the core JSON parsing logic.""" def test_valid_json_string_parsing(self): """Test that valid JSON strings are correctly parsed.""" json_string = '{"shader": "Universal Render Pipeline/Lit", "color": [0, 0, 1, 1]}' result, status = parse_properties_json(json_string) assert status == "success" assert isinstance(result, dict) assert result["shader"] == "Universal Render Pipeline/Lit" assert result["color"] == [0, 0, 1, 1] def test_invalid_json_string_handling(self): """Test that invalid JSON strings are handled gracefully.""" invalid_json = '{"invalid": json, "missing": quotes}' result, status = parse_properties_json(invalid_json) assert "failed to parse" in status assert result == invalid_json # Original string returned def test_dict_input_unchanged(self): """Test that dict inputs are passed through unchanged.""" original_dict = { "shader": "Universal Render Pipeline/Lit", "color": [0, 0, 1, 1]} result, status = parse_properties_json(original_dict) assert status == "no_parsing_needed" assert result == original_dict def test_none_input_handled(self): """Test that None input is handled correctly.""" result, status = parse_properties_json(None) assert status == "no_parsing_needed" assert result is None def test_complex_json_parsing(self): """Test parsing of complex JSON with nested objects and arrays.""" complex_json = ''' { "shader": "Universal Render Pipeline/Lit", "color": [1, 0, 0, 1], "float": {"name": "_Metallic", "value": 0.5}, "texture": {"name": "_MainTex", "path": "Assets/Textures/Test.png"} } ''' result, status = parse_properties_json(complex_json) assert status == "success" assert isinstance(result, dict) assert result["shader"] == "Universal Render Pipeline/Lit" assert result["color"] == [1, 0, 0, 1] assert result["float"]["name"] == "_Metallic" assert result["float"]["value"] == 0.5 assert result["texture"]["name"] == "_MainTex" assert result["texture"]["path"] == "Assets/Textures/Test.png" def test_empty_json_string(self): """Test handling of empty JSON string.""" empty_json = "{}" result, status = parse_properties_json(empty_json) assert status == "success" assert isinstance(result, dict) assert len(result) == 0 def test_malformed_json_edge_cases(self): """Test various malformed JSON edge cases.""" test_cases = [ '{"incomplete": }', '{"missing": "quote}', '{"trailing": "comma",}', '{"unclosed": [1, 2, 3}', 'not json at all', '{"nested": {"broken": }' ] for malformed_json in test_cases: result, status = parse_properties_json(malformed_json) assert "failed to parse" in status assert result == malformed_json if __name__ == "__main__": pytest.main([__file__, "-v"])

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/CoplayDev/unity-mcp'

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