Skip to main content
Glama

MCP Atlassian

by ArconixForge
factories.py4.16 kB
"""Test data factories for creating consistent test objects.""" from typing import Any class JiraIssueFactory: """Factory for creating Jira issue test data.""" @staticmethod def create(key: str = "TEST-123", **overrides) -> dict[str, Any]: """Create a Jira issue with default values.""" defaults = { "id": "12345", "key": key, "self": f"https://test.atlassian.net/rest/api/3/issue/{key}", "fields": { "summary": "Test Issue Summary", "description": "Test issue description", "status": {"name": "Open", "id": "1", "statusCategory": {"key": "new"}}, "issuetype": {"name": "Task", "id": "10001"}, "priority": {"name": "Medium", "id": "3"}, "assignee": { "displayName": "Test User", "emailAddress": "test@example.com", }, "created": "2023-01-01T12:00:00.000+0000", "updated": "2023-01-01T12:00:00.000+0000", }, } return deep_merge(defaults, overrides) @staticmethod def create_minimal(key: str = "TEST-123") -> dict[str, Any]: """Create minimal Jira issue for basic tests.""" return { "key": key, "fields": {"summary": "Test Issue", "status": {"name": "Open"}}, } class ConfluencePageFactory: """Factory for creating Confluence page test data.""" @staticmethod def create(page_id: str = "123456", **overrides) -> dict[str, Any]: """Create a Confluence page with default values.""" defaults = { "id": page_id, "title": "Test Page", "type": "page", "status": "current", "space": {"key": "TEST", "name": "Test Space"}, "body": { "storage": {"value": "<p>Test content</p>", "representation": "storage"} }, "version": {"number": 1}, "_links": { "webui": f"/spaces/TEST/pages/{page_id}", "self": f"https://test.atlassian.net/wiki/rest/api/content/{page_id}", }, } return deep_merge(defaults, overrides) class AuthConfigFactory: """Factory for authentication configuration objects.""" @staticmethod def create_oauth_config(**overrides) -> dict[str, str]: """Create OAuth configuration.""" defaults = { "client_id": "test-client-id", "client_secret": "test-client-secret", "redirect_uri": "http://localhost:8080/callback", "scope": "read:jira-work write:jira-work", "cloud_id": "test-cloud-id", "access_token": "test-access-token", "refresh_token": "test-refresh-token", } return {**defaults, **overrides} @staticmethod def create_basic_auth_config(**overrides) -> dict[str, str]: """Create basic auth configuration.""" defaults = { "url": "https://test.atlassian.net", "username": "test@example.com", "api_token": "test-api-token", } return {**defaults, **overrides} class ErrorResponseFactory: """Factory for creating error response test data.""" @staticmethod def create_api_error( status_code: int = 400, message: str = "Bad Request" ) -> dict[str, Any]: """Create API error response.""" return {"errorMessages": [message], "errors": {}, "status": status_code} @staticmethod def create_auth_error() -> dict[str, Any]: """Create authentication error response.""" return {"errorMessages": ["Authentication failed"], "status": 401} def deep_merge(base: dict[str, Any], override: dict[str, Any]) -> dict[str, Any]: """Deep merge two dictionaries.""" result = base.copy() for key, value in override.items(): if key in result and isinstance(result[key], dict) and isinstance(value, dict): result[key] = deep_merge(result[key], value) else: result[key] = value return result

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/ArconixForge/mcp-atlassian'

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