ghost-mcp/tests/e2e/test_e2e_connection.py
2025-09-23 06:15:42 -03:00

85 lines
No EOL
3.1 KiB
Python

"""End-to-end tests for Ghost connection functionality."""
import json
import pytest
from .conftest import BaseE2ETest
@pytest.mark.e2e
class TestConnectionE2E(BaseE2ETest):
"""Test Ghost connection functionality end-to-end."""
async def test_check_ghost_connection_success(self, mcp_server):
"""Test successful Ghost connection check."""
# Call the MCP tool
result = await self.call_mcp_tool(mcp_server, "check_ghost_connection")
# Parse the JSON result
status = json.loads(result)
# Verify connection status
assert status["ghost_url"] == "http://localhost:2368/"
assert status["content_api_configured"] is True
assert status["admin_api_configured"] is True
assert status["connection_test"] == "completed"
assert status["content_api_status"] == "connected"
assert status["admin_api_status"] == "connected"
async def test_check_ghost_connection_config_fields(self, mcp_server):
"""Test that connection check returns all expected configuration fields."""
result = await self.call_mcp_tool(mcp_server, "check_ghost_connection")
status = json.loads(result)
# Verify all expected fields are present
expected_fields = {
"ghost_url",
"content_api_configured",
"admin_api_configured",
"mode",
"connection_test",
"content_api_status",
"admin_api_status"
}
assert set(status.keys()) >= expected_fields
async def test_connection_with_ghost_client(self, ghost_client):
"""Test direct connection using Ghost client."""
# Test Content API connection
response = await ghost_client._make_request("GET", "settings/", api_type="content")
assert "settings" in response
# Test Admin API connection
response = await ghost_client._make_request("GET", "site/", api_type="admin")
assert "site" in response
async def test_ghost_instance_health(self, ghost_client):
"""Test that Ghost instance is healthy and responsive."""
# Test getting site settings to verify the instance is functional
response = await ghost_client._make_request("GET", "settings/", api_type="content")
# Verify we get expected settings structure
assert "settings" in response
settings = response["settings"]
# Check for some expected settings
setting_keys = [setting["key"] for setting in settings]
expected_keys = ["title", "description", "url"]
for key in expected_keys:
assert key in setting_keys
async def test_api_version_compatibility(self, ghost_client):
"""Test that the API version is compatible."""
# Make a request to test API version response headers
response = await ghost_client._make_request("GET", "site/", api_type="admin")
# Verify we get a proper response structure
assert "site" in response
site = response["site"]
# Check for expected site fields
expected_fields = ["title", "url", "version"]
for field in expected_fields:
assert field in site