Skip to main content
Glama
conftest.py4.5 kB
"""Pytest configuration and fixtures for SharePoint MCP tests.""" import pytest from unittest.mock import AsyncMock, MagicMock from sharepoint_mcp.auth import AuthManager from sharepoint_mcp.config import Config from sharepoint_mcp.graph import GraphClient @pytest.fixture def mock_config() -> Config: """Create a mock configuration for testing. Returns: Test configuration """ return Config( client_id="test-client-id", tenant_id="test-tenant-id", redirect_uri="http://localhost:8765/callback", log_level="DEBUG", ) @pytest.fixture def mock_auth_manager(mock_config: Config) -> MagicMock: """Create a mock auth manager. Args: mock_config: Mock configuration Returns: Mock AuthManager """ auth = MagicMock(spec=AuthManager) auth.config = mock_config auth.get_access_token = AsyncMock(return_value="mock-access-token") auth.ensure_authenticated = AsyncMock(return_value="mock-access-token") return auth @pytest.fixture def mock_graph_client(mock_auth_manager: MagicMock) -> GraphClient: """Create a mock Graph client. Args: mock_auth_manager: Mock auth manager Returns: GraphClient with mocked auth """ return GraphClient(mock_auth_manager) @pytest.fixture def sample_site_response() -> dict: """Sample Microsoft Graph API response for sites. Returns: Mock API response """ return { "value": [ { "id": "site-1", "displayName": "Marketing Site", "webUrl": "https://contoso.sharepoint.com/sites/marketing", "description": "Marketing team site", }, { "id": "site-2", "displayName": "Engineering Site", "webUrl": "https://contoso.sharepoint.com/sites/engineering", "description": None, }, ] } @pytest.fixture def sample_library_response() -> dict: """Sample Microsoft Graph API response for libraries. Returns: Mock API response """ return { "value": [ { "id": "drive-1", "name": "Documents", "webUrl": "https://contoso.sharepoint.com/sites/marketing/Documents", "quota": {"used": 42}, }, { "id": "drive-2", "name": "Shared Documents", "webUrl": "https://contoso.sharepoint.com/sites/marketing/Shared", "quota": {"used": 15}, }, ] } @pytest.fixture def sample_file_response() -> dict: """Sample Microsoft Graph API response for files. Returns: Mock API response """ return { "value": [ { "id": "file-1", "name": "report.pdf", "size": 1024000, "webUrl": "https://contoso.sharepoint.com/sites/marketing/Documents/report.pdf", "createdDateTime": "2025-01-01T10:00:00Z", "lastModifiedDateTime": "2025-01-02T15:30:00Z", "file": {"mimeType": "application/pdf"}, "createdBy": {"user": {"displayName": "John Doe"}}, "lastModifiedBy": {"user": {"displayName": "Jane Smith"}}, }, { "id": "file-2", "name": "data.xlsx", "size": 512000, "webUrl": "https://contoso.sharepoint.com/sites/marketing/Documents/data.xlsx", "createdDateTime": "2025-01-03T09:00:00Z", "lastModifiedDateTime": "2025-01-03T09:00:00Z", "file": { "mimeType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }, "createdBy": {"user": {"displayName": "Alice Johnson"}}, "lastModifiedBy": {"user": {"displayName": "Alice Johnson"}}, }, ], "@odata.nextLink": "https://graph.microsoft.com/v1.0/sites/site-1/drives/drive-1/root/children?$skiptoken=abc123", } @pytest.fixture def sample_user_response() -> dict: """Sample Microsoft Graph API response for current user. Returns: Mock API response """ return { "id": "user-1", "displayName": "Test User", "mail": "test.user@contoso.com", "userPrincipalName": "test.user@contoso.com", }

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/ezemriv/sharepoint-mcp'

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