8112ff2f12
- FastMCP server with 4 tools: generate_image, list_available_models, get_generation_status, get_output_directory - ComfyUI REST API client (httpx) polling lifecycle - FLUX.1-schnell workflow JSON template - Dual output: TextContent (path + seed) + ImageContent (base64 PNG) - 14 passing pytest tests with respx HTTP mocking - ROCm/AMD RX 7900 XTX optimized setup in README - Ollama Linux migration path documented (future)
77 lines
1.9 KiB
Python
77 lines
1.9 KiB
Python
"""Pytest fixtures for mcp-image-gen tests."""
|
|
|
|
import base64
|
|
import io
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
# Make src/ importable
|
|
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def comfyui_url(monkeypatch):
|
|
"""Set COMFYUI_URL to a test URL for all tests."""
|
|
monkeypatch.setenv("COMFYUI_URL", "http://test-comfyui:8188")
|
|
# Also patch the module-level constant in server
|
|
import server
|
|
monkeypatch.setattr(server, "COMFYUI_URL", "http://test-comfyui:8188")
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_image_bytes():
|
|
"""Generate a 1x1 red pixel PNG as bytes using Pillow."""
|
|
from PIL import Image
|
|
|
|
img = Image.new("RGB", (1, 1), color=(255, 0, 0))
|
|
buf = io.BytesIO()
|
|
img.save(buf, format="PNG")
|
|
return buf.getvalue()
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_history_response():
|
|
"""Sample ComfyUI history response for prompt_id='test-uuid-1234'."""
|
|
return {
|
|
"test-uuid-1234": {
|
|
"outputs": {
|
|
"9": {
|
|
"images": [
|
|
{
|
|
"filename": "mcp-image-gen_00001_.png",
|
|
"subfolder": "",
|
|
"type": "output",
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"status": {"completed": True},
|
|
}
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def queue_empty():
|
|
"""ComfyUI queue response with nothing running or pending."""
|
|
return {"queue_running": [], "queue_pending": []}
|
|
|
|
|
|
@pytest.fixture
|
|
def queue_with_pending():
|
|
"""ComfyUI queue response with our test prompt pending."""
|
|
return {
|
|
"queue_running": [],
|
|
"queue_pending": [[1, "test-uuid-1234", {}, {}]],
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def queue_with_running():
|
|
"""ComfyUI queue response with our test prompt running."""
|
|
return {
|
|
"queue_running": [[1, "test-uuid-1234", {}, {}]],
|
|
"queue_pending": [],
|
|
}
|