Skip to main content
Glama
test_discovery.py5.75 kB
"""Unit tests for Process Discovery component. Tests discovery of markdown process files in the configured directory. """ from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: from pathlib import Path class TestProcessDiscovery: """Tests for Process Discovery functionality.""" def test_discover_markdown_files(self, temp_dir: Path) -> None: """Test discovering .md files in directory.""" from sso_mcp_server.processes.discovery import discover_processes # Create test files (temp_dir / "process1.md").write_text("# Process 1") (temp_dir / "process2.md").write_text("# Process 2") files = discover_processes(temp_dir) assert len(files) == 2 filenames = {f.name for f in files} assert "process1.md" in filenames assert "process2.md" in filenames def test_discover_ignores_non_markdown_files(self, temp_dir: Path) -> None: """Test that discovery ignores non-.md files.""" from sso_mcp_server.processes.discovery import discover_processes # Create mixed files (temp_dir / "process.md").write_text("# Valid") (temp_dir / "readme.txt").write_text("Invalid") (temp_dir / "config.json").write_text("{}") (temp_dir / "script.py").write_text("# Python") files = discover_processes(temp_dir) assert len(files) == 1 assert files[0].name == "process.md" def test_discover_returns_empty_for_missing_directory(self, temp_dir: Path) -> None: """Test that discovery returns empty list for missing directory.""" from sso_mcp_server.processes.discovery import discover_processes missing_dir = temp_dir / "nonexistent" files = discover_processes(missing_dir) assert files == [] def test_discover_returns_empty_for_empty_directory(self, temp_dir: Path) -> None: """Test that discovery returns empty list for empty directory.""" from sso_mcp_server.processes.discovery import discover_processes empty_dir = temp_dir / "empty" empty_dir.mkdir() files = discover_processes(empty_dir) assert files == [] def test_discover_does_not_recurse_subdirectories(self, temp_dir: Path) -> None: """Test that discovery does not recurse into subdirectories.""" from sso_mcp_server.processes.discovery import discover_processes # Create files in root and subdirectory (temp_dir / "root.md").write_text("# Root") subdir = temp_dir / "subdir" subdir.mkdir() (subdir / "nested.md").write_text("# Nested") files = discover_processes(temp_dir) # Should only find root-level files assert len(files) == 1 assert files[0].name == "root.md" def test_discover_returns_paths(self, temp_dir: Path) -> None: """Test that discovery returns Path objects.""" from pathlib import Path as PathType from sso_mcp_server.processes.discovery import discover_processes (temp_dir / "test.md").write_text("# Test") files = discover_processes(temp_dir) assert len(files) == 1 assert isinstance(files[0], PathType) assert files[0].is_absolute() def test_discover_is_dynamic(self, temp_dir: Path) -> None: """Test that discovery picks up newly added files (FR-007).""" from sso_mcp_server.processes.discovery import discover_processes # Initial discovery (temp_dir / "first.md").write_text("# First") files1 = discover_processes(temp_dir) assert len(files1) == 1 # Add new file at runtime (temp_dir / "second.md").write_text("# Second") files2 = discover_processes(temp_dir) # Should see new file without restart assert len(files2) == 2 def test_discover_handles_hidden_files(self, temp_dir: Path) -> None: """Test that discovery ignores hidden files (starting with .).""" from sso_mcp_server.processes.discovery import discover_processes (temp_dir / "visible.md").write_text("# Visible") (temp_dir / ".hidden.md").write_text("# Hidden") files = discover_processes(temp_dir) assert len(files) == 1 assert files[0].name == "visible.md" class TestProcessDiscoveryEdgeCases: """Edge case tests for Process Discovery.""" def test_discover_handles_files_with_spaces(self, temp_dir: Path) -> None: """Test discovering files with spaces in names.""" from sso_mcp_server.processes.discovery import discover_processes (temp_dir / "file with spaces.md").write_text("# Spaces") files = discover_processes(temp_dir) assert len(files) == 1 assert files[0].name == "file with spaces.md" def test_discover_handles_unicode_filenames(self, temp_dir: Path) -> None: """Test discovering files with unicode in names.""" from sso_mcp_server.processes.discovery import discover_processes (temp_dir / "日本語.md").write_text("# Japanese") (temp_dir / "émoji-🎉.md").write_text("# Emoji") files = discover_processes(temp_dir) assert len(files) == 2 def test_discover_case_sensitivity(self, temp_dir: Path) -> None: """Test that discovery handles different case extensions.""" from sso_mcp_server.processes.discovery import discover_processes (temp_dir / "lowercase.md").write_text("# Lower") (temp_dir / "uppercase.MD").write_text("# Upper") (temp_dir / "mixed.Md").write_text("# Mixed") files = discover_processes(temp_dir) # All markdown files should be discovered assert len(files) == 3

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/DauQuangThanh/sso-mcp-server'

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