mcp-server-llmling

by phil65
Verified
from __future__ import annotations from mcp.types import AnyUrl import pytest from mcp_server_llmling.conversions import from_mcp_uri, to_mcp_uri @pytest.mark.parametrize( ("internal_uri", "mcp_uri"), [ # File URIs ("file:///path/to/file.txt", "file://host/path/to/file.txt"), ( "file:///C:/path/to/file.txt", "file://host/c/path/to/file.txt", ), # Convert to /c/path format # HTTP URIs ("http://example.com", "http://example.com/"), ("https://example.com", "https://example.com/"), # Resource URIs ("text://content", "resource://host/content"), ("python://module.name", "resource://host/module.name"), ("cli://command", "resource://host/command"), ], ) def test_uri_conversion_roundtrip(internal_uri: str, mcp_uri: str) -> None: """Test URI conversion in both directions.""" # Internal -> MCP assert str(to_mcp_uri(internal_uri)) == mcp_uri # MCP -> Internal (for supported schemes) if not internal_uri.startswith(("text://", "python://", "cli://")): assert from_mcp_uri(mcp_uri) == internal_uri @pytest.mark.parametrize( "uri", ["invalid://uri", "unknown://test", "://incomplete", ""], ) def test_invalid_uri_conversion(uri: str) -> None: """Test handling of invalid URIs.""" with pytest.raises(ValueError, match="URI"): to_mcp_uri(uri) with pytest.raises(ValueError, match="URI"): from_mcp_uri(uri) def test_uri_type_handling() -> None: """Test handling of different URI input types.""" # Test AnyUrl input mcp_uri = AnyUrl("file://host/test.txt") assert from_mcp_uri(str(mcp_uri)) == "file:///test.txt" # Test conversion to AnyUrl internal_uri = "file:///test.txt" assert isinstance(to_mcp_uri(internal_uri), AnyUrl)