Skip to main content
Glama

PyGithub MCP Server

by AstroMined
"""Tests for response schema models. This module tests the schema models used for MCP tool responses. """ import pytest from pydantic import ValidationError from pygithub_mcp_server.schemas.responses import ( ToolResponse, TextContent, ErrorContent, ResponseContent, ) class TestToolResponse: """Tests for the ToolResponse schema.""" def test_valid_data(self, valid_tool_response_data): """Test that valid data passes validation.""" response = ToolResponse(**valid_tool_response_data) assert response.content == valid_tool_response_data["content"] assert response.is_error == valid_tool_response_data["is_error"] def test_minimal_valid_data(self): """Test with minimal valid data (only required fields).""" # Only content is required response = ToolResponse( content=[{"type": "text", "text": "Operation completed successfully."}] ) assert len(response.content) == 1 assert response.content[0]["type"] == "text" assert response.content[0]["text"] == "Operation completed successfully." assert response.is_error is None def test_missing_required_fields(self): """Test that missing required fields raise validation errors.""" # Missing content with pytest.raises(ValidationError) as exc_info: ToolResponse() assert "content" in str(exc_info.value).lower() def test_invalid_content_type(self): """Test that invalid content type raises validation error.""" # String instead of list with pytest.raises(ValidationError) as exc_info: ToolResponse(content="Invalid content") assert "content" in str(exc_info.value).lower() def test_empty_content_list(self): """Test behavior with empty content list.""" # Empty content list - should be valid with pytest.raises(ValidationError) as exc_info: ToolResponse(content=[]) assert "content" in str(exc_info.value).lower() def test_is_error_values(self): """Test behavior with different is_error values.""" # True is_error response = ToolResponse( content=[{"type": "error", "text": "An error occurred."}], is_error=True ) assert response.is_error is True # False is_error response = ToolResponse( content=[{"type": "text", "text": "Operation completed successfully."}], is_error=False ) assert response.is_error is False # None is_error (default) response = ToolResponse( content=[{"type": "text", "text": "Operation completed successfully."}] ) assert response.is_error is None class TestTextContent: """Tests for the TextContent schema.""" def test_valid_data(self, valid_text_content_data): """Test that valid data passes validation.""" content = TextContent(**valid_text_content_data) assert content.type == "text" assert content.text == valid_text_content_data["text"] def test_missing_required_fields(self): """Test that missing required fields raise validation errors.""" # Missing text with pytest.raises(ValidationError) as exc_info: TextContent() assert "text" in str(exc_info.value).lower() def test_invalid_type_value(self): """Test that invalid type value raises validation error.""" # Invalid type value with pytest.raises(ValidationError) as exc_info: TextContent(type="invalid", text="Some text") assert "type" in str(exc_info.value).lower() def test_empty_text(self): """Test behavior with empty text.""" # Empty text - should be valid content = TextContent(text="") assert content.type == "text" assert content.text == "" class TestErrorContent: """Tests for the ErrorContent schema.""" def test_valid_data(self, valid_error_content_data): """Test that valid data passes validation.""" content = ErrorContent(**valid_error_content_data) assert content.type == "error" assert content.text == valid_error_content_data["text"] def test_missing_required_fields(self): """Test that missing required fields raise validation errors.""" # Missing text with pytest.raises(ValidationError) as exc_info: ErrorContent() assert "text" in str(exc_info.value).lower() def test_invalid_type_value(self): """Test that invalid type value raises validation error.""" # Invalid type value with pytest.raises(ValidationError) as exc_info: ErrorContent(type="invalid", text="An error occurred.") assert "type" in str(exc_info.value).lower() def test_empty_text(self): """Test behavior with empty text.""" # Empty text - should be valid content = ErrorContent(text="") assert content.type == "error" assert content.text == "" class TestResponseContent: """Tests for the ResponseContent union type.""" def test_text_content(self): """Test that TextContent is a valid ResponseContent.""" content: ResponseContent = TextContent(text="Operation completed successfully.") assert content.type == "text" assert content.text == "Operation completed successfully." def test_error_content(self): """Test that ErrorContent is a valid ResponseContent.""" content: ResponseContent = ErrorContent(text="An error occurred.") assert content.type == "error" assert content.text == "An error occurred."

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/AstroMined/pygithub-mcp-server'

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