Skip to main content
Glama

FastMCP Demo Server

by apoojary94
test_server.py6.07 kB
"""Tests for the GitHub MCP Server.""" import pytest from unittest.mock import patch, MagicMock import server def test_app_metadata(): """Test that the app has correct metadata.""" assert server.app.name == server.APP_NAME assert server.app.instructions == server.APP_DESCRIPTION @patch('server.make_github_request') def test_search_repositories_success(mock_request): """Test successful repository search.""" # Mock GitHub API response mock_response = { "total_count": 1, "items": [{ "name": "test-repo", "full_name": "user/test-repo", "description": "A test repository", "html_url": "https://github.com/user/test-repo", "stargazers_count": 100, "forks_count": 10, "language": "Python", "updated_at": "2024-01-01T00:00:00Z", "created_at": "2023-01-01T00:00:00Z", "topics": ["python", "test"] }] } mock_request.return_value = mock_response result = server.search_repositories("python", "stars", "desc", 10) assert result["total_count"] == 1 assert len(result["repositories"]) == 1 assert result["repositories"][0]["name"] == "test-repo" assert result["query"] == "python" def test_search_repositories_empty_query(): """Test search with empty query.""" result = server.search_repositories("") assert "error" in result assert result["error"] == "Query cannot be empty" @patch('server.make_github_request') def test_get_user_repositories_success(mock_request): """Test successful user repository retrieval.""" mock_response = [{ "name": "user-repo", "full_name": "username/user-repo", "description": "User's repository", "html_url": "https://github.com/username/user-repo", "stargazers_count": 50, "forks_count": 5, "language": "JavaScript", "updated_at": "2024-01-01T00:00:00Z", "created_at": "2023-01-01T00:00:00Z", "private": False, "topics": ["javascript"] }] mock_request.return_value = mock_response result = server.get_user_repositories("username", "public", "updated") assert result["username"] == "username" assert result["total_repositories"] == 1 assert len(result["repositories"]) == 1 assert result["repositories"][0]["name"] == "user-repo" def test_get_user_repositories_empty_username(): """Test get user repositories with empty username.""" result = server.get_user_repositories("") assert "error" in result assert result["error"] == "Username cannot be empty" @patch('server.make_github_request') def test_get_repository_details_success(mock_request): """Test successful repository details retrieval.""" mock_response = { "name": "repo", "full_name": "owner/repo", "description": "A repository", "html_url": "https://github.com/owner/repo", "stargazers_count": 200, "forks_count": 20, "watchers_count": 150, "language": "Python", "languages_url": "https://api.github.com/repos/owner/repo/languages", "created_at": "2023-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z", "pushed_at": "2024-01-01T00:00:00Z", "size": 1000, "open_issues_count": 5, "license": {"name": "MIT"}, "topics": ["python"], "default_branch": "main", "private": False, "fork": False } mock_request.return_value = mock_response result = server.get_repository_details("owner", "repo") assert result["name"] == "repo" assert result["full_name"] == "owner/repo" assert result["stars"] == 200 assert result["license"] == "MIT" def test_get_repository_details_empty_params(): """Test get repository details with empty parameters.""" result = server.get_repository_details("", "repo") assert "error" in result assert result["error"] == "Owner and repository name cannot be empty" result = server.get_repository_details("owner", "") assert "error" in result assert result["error"] == "Owner and repository name cannot be empty" @patch('server.make_github_request') def test_get_trending_repositories_success(mock_request): """Test successful trending repositories retrieval.""" mock_response = { "total_count": 1, "items": [{ "name": "trending-repo", "full_name": "user/trending-repo", "description": "A trending repository", "html_url": "https://github.com/user/trending-repo", "stargazers_count": 1000, "forks_count": 100, "language": "Python", "updated_at": "2024-01-01T00:00:00Z", "created_at": "2023-01-01T00:00:00Z", "topics": ["python", "trending"] }] } mock_request.return_value = mock_response result = server.get_trending_repositories("daily", "python") assert result["period"] == "daily" assert result["language_filter"] == "python" assert result["total_count"] == 1 assert len(result["repositories"]) == 1 assert result["repositories"][0]["name"] == "trending-repo" @patch('server.requests.get') def test_make_github_request_success(mock_get): """Test successful GitHub API request.""" mock_response = MagicMock() mock_response.json.return_value = {"test": "data"} mock_response.raise_for_status.return_value = None mock_get.return_value = mock_response result = server.make_github_request("/test/endpoint") assert result == {"test": "data"} mock_get.assert_called_once() @patch('server.requests.get') def test_make_github_request_failure(mock_get): """Test failed GitHub API request.""" mock_get.side_effect = Exception("Network error") with pytest.raises(Exception) as exc_info: server.make_github_request("/test/endpoint") assert "GitHub API request failed" in str(exc_info.value)

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/apoojary94/mcp_hackathon'

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