Skip to main content
Glama

MCP Server for Splunk

Apache 2.0
16
  • Apple
  • Linux
test_lookup_tools.pyβ€’6.15 kB
""" Tests for lookup tools. Tests the ListLookupFiles and ListLookupDefinitions tools. """ import json from unittest.mock import Mock import pytest class TestListLookupFiles: """Test suite for ListLookupFiles tool.""" @pytest.fixture def mock_lookup_files_response(self): """Create mock response for lookup files endpoint.""" return { "entry": [ { "name": "geo_attr_countries.csv", "id": "https://localhost:8089/servicesNS/nobody/search/data/lookup-table-files/geo_attr_countries.csv", "content": { "filename": "geo_attr_countries.csv", "updated": "2024-01-15T10:30:00", "size": 1024, }, "acl": { "app": "search", "owner": "nobody", "sharing": "global", "perms": { "read": ["*"], "write": ["admin"], }, }, }, { "name": "user_mapping.csv", "id": "https://localhost:8089/servicesNS/admin/myapp/data/lookup-table-files/user_mapping.csv", "content": { "filename": "user_mapping.csv", "updated": "2024-01-14T09:15:00", "size": 512, }, "acl": { "app": "myapp", "owner": "admin", "sharing": "app", "perms": { "read": ["admin", "power"], "write": ["admin"], }, }, }, ], "paging": {"total": 2, "perPage": 0, "offset": 0}, } @pytest.fixture def mock_service(self, mock_lookup_files_response): """Create mock Splunk service for testing.""" service = Mock() service.host = "localhost" service.port = 8089 # Mock the GET response mock_response = Mock() mock_response.body.read.return_value = json.dumps(mock_lookup_files_response).encode( "utf-8" ) service.get.return_value = mock_response return service async def test_list_lookup_files_success( self, fastmcp_client, extract_tool_result, mock_service ): """Test successful listing of lookup files.""" async with fastmcp_client as client: # Execute tool through FastMCP result = await client.call_tool("list_lookup_files", {}) data = extract_tool_result(result) # Verify response structure if data.get("status") == "success": assert "lookup_files" in data assert "count" in data assert isinstance(data["lookup_files"], list) # At least verify structure if mocking doesn't work if data["count"] > 0: first_file = data["lookup_files"][0] assert "name" in first_file assert "filename" in first_file assert "app" in first_file class TestListLookupDefinitions: """Test suite for ListLookupDefinitions tool.""" @pytest.fixture def mock_lookup_defs_response(self): """Create mock response for lookup definitions endpoint.""" return { "entry": [ { "name": "geo_countries", "id": "https://localhost:8089/servicesNS/nobody/search/data/transforms/lookups/geo_countries", "content": { "filename": "geo_attr_countries.csv", "type": "file", "match_type": "WILDCARD(country)", "fields_list": "country,latitude,longitude,code", "updated": "2024-01-15T10:30:00", "min_matches": 0, "max_matches": 1, "default_match": "", "case_sensitive_match": True, }, "acl": { "app": "search", "owner": "nobody", "sharing": "global", "perms": { "read": ["*"], "write": ["admin"], }, }, }, ], "paging": {"total": 1, "perPage": 0, "offset": 0}, } @pytest.fixture def mock_service(self, mock_lookup_defs_response): """Create mock Splunk service for testing.""" service = Mock() service.host = "localhost" service.port = 8089 # Mock the GET response mock_response = Mock() mock_response.body.read.return_value = json.dumps(mock_lookup_defs_response).encode("utf-8") service.get.return_value = mock_response return service async def test_list_lookup_definitions_success( self, fastmcp_client, extract_tool_result, mock_service ): """Test successful listing of lookup definitions.""" async with fastmcp_client as client: # Execute tool through FastMCP result = await client.call_tool("list_lookup_definitions", {}) data = extract_tool_result(result) # Verify response structure if data.get("status") == "success": assert "lookup_definitions" in data assert "count" in data assert isinstance(data["lookup_definitions"], list) if data["count"] > 0: first_def = data["lookup_definitions"][0] assert "name" in first_def assert "filename" in first_def assert "type" in first_def

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