Skip to main content
Glama

MCP Server for Splunk

test_resources_dashboard_studio.pyβ€’5.87 kB
""" Tests for Dashboard Studio documentation resources. """ import pytest from src.core.registry import resource_registry from src.resources.dashboard_studio_docs import ( DASHBOARD_STUDIO_TOPICS, DashboardStudioDiscoveryResource, DashboardStudioDocsResource, ) # Mock Context for testing class MockContext: pass class TestDashboardStudioResources: """Test Dashboard Studio documentation resources.""" def test_cheatsheet_resource_metadata(self): """Test cheatsheet resource has correct metadata.""" resource = DashboardStudioDocsResource("cheatsheet") assert resource.uri == "dashboard-studio://cheatsheet" assert "Dashboard Studio Cheatsheet" in resource.name assert ( "cheatsheet" in resource.description.lower() or "comprehensive" in resource.description.lower() ) assert resource.mime_type == "text/markdown" def test_discovery_resource_metadata(self): """Test discovery resource has correct metadata.""" resource = DashboardStudioDiscoveryResource() assert resource.uri == "dashboard-studio://discovery" assert resource.name == "dashboard_studio_discovery" assert ( "discovery" in resource.description.lower() or "index" in resource.description.lower() ) assert resource.mime_type == "text/markdown" @pytest.mark.asyncio async def test_cheatsheet_content_loads(self): """Test cheatsheet content loads successfully.""" resource = DashboardStudioDocsResource("cheatsheet") ctx = MockContext() content = await resource.get_content(ctx) assert content is not None assert len(content) > 0 # Check for key sections assert "Dashboard Studio" in content or "cheatsheet" in content.lower() assert "version" in content.lower() assert "datasources" in content.lower() or "data" in content.lower() assert "visualizations" in content.lower() @pytest.mark.asyncio async def test_cheatsheet_has_examples(self): """Test cheatsheet contains JSON examples.""" resource = DashboardStudioDocsResource("cheatsheet") ctx = MockContext() content = await resource.get_content(ctx) # Check for JSON code blocks with key structure assert "```json" in content or "```" in content # Content should have dashboard-related structure assert "version" in content.lower() or "title" in content.lower() @pytest.mark.asyncio async def test_discovery_content_structure(self): """Test discovery resource has expected structure.""" resource = DashboardStudioDiscoveryResource() ctx = MockContext() content = await resource.get_content(ctx) assert content is not None assert len(content) > 0 # Check for expected content expected_content = [ "Dashboard Studio", "discovery", "cheatsheet", "dashboard-studio://", ] for expected in expected_content: assert expected.lower() in content.lower() @pytest.mark.asyncio async def test_discovery_has_topics_list(self): """Test discovery resource references available topics.""" resource = DashboardStudioDiscoveryResource() ctx = MockContext() content = await resource.get_content(ctx) # Check for key documentation topics from DASHBOARD_STUDIO_TOPICS assert "cheatsheet" in content.lower() assert "visualization" in content.lower() assert "definition" in content.lower() or "schema" in content.lower() def test_resources_registered_in_registry(self): """Test resources are registered in the resource registry.""" # Get all registered resources registered_uris = [metadata.uri for metadata in resource_registry.list_resources()] # Check resources are registered with template pattern # Note: The dynamic resource uses a template URI pattern assert any("dashboard-studio" in uri for uri in registered_uris) assert "dashboard-studio://discovery" in registered_uris def test_metadata_tags(self): """Test resources have appropriate tags.""" # Test cheatsheet resource tags assert "dashboard-studio" in DashboardStudioDocsResource.METADATA.tags # Test discovery resource tags discovery_metadata = DashboardStudioDiscoveryResource.METADATA assert "dashboard-studio" in discovery_metadata.tags assert "discovery" in discovery_metadata.tags or "index" in discovery_metadata.tags def test_available_topics(self): """Test that DASHBOARD_STUDIO_TOPICS contains expected topics.""" assert "cheatsheet" in DASHBOARD_STUDIO_TOPICS assert "definition" in DASHBOARD_STUDIO_TOPICS assert "visualizations" in DASHBOARD_STUDIO_TOPICS # Verify cheatsheet has a file reference assert "file" in DASHBOARD_STUDIO_TOPICS["cheatsheet"] def test_dynamic_resource_creation(self): """Test creating resources for different topics.""" # Create resources for different topics cheatsheet = DashboardStudioDocsResource("cheatsheet") definition = DashboardStudioDocsResource("definition") visualizations = DashboardStudioDocsResource("visualizations") # Verify URIs are correct assert cheatsheet.uri == "dashboard-studio://cheatsheet" assert definition.uri == "dashboard-studio://definition" assert visualizations.uri == "dashboard-studio://visualizations" # Verify mime types assert cheatsheet.mime_type == "text/markdown" assert definition.mime_type == "text/markdown" assert visualizations.mime_type == "text/markdown"

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/deslicer/mcp-for-splunk'

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