Files
comfy-adapter/tests/conftest.py
T

52 lines
1.5 KiB
Python

import struct
import zlib
import httpx
import pytest
from app.config import Settings
from app.main import create_app
COMFY = "http://comfy.test"
FAKE_KEY = "sk-test-1234"
def settings(**overrides) -> Settings:
base = dict(
comfy_base_url=COMFY,
adapter_api_key=FAKE_KEY,
validate_templates_on_server=False,
poll_interval=0.0,
execution_timeout=5.0,
)
base.update(overrides)
return Settings(**base)
def png_bytes(w: int = 64, h: int = 64) -> bytes:
def chunk(t: bytes, d: bytes) -> bytes:
return struct.pack(">I", len(d)) + t + d + struct.pack(">I", zlib.crc32(t + d))
ihdr = struct.pack(">IIBBBBB", w, h, 8, 2, 0, 0, 0)
iend = b"\x89PNG\r\n\x1a\n" + chunk(b"IHDR", ihdr) + chunk(b"IDAT", zlib.compress(b"\x00" * (w * 3 + 1) * h)) + chunk(b"IEND", b"")
return iend
def png_size(data: bytes) -> tuple[int, int]:
return struct.unpack(">II", data[16:24])
@pytest.fixture
async def client():
"""Async client bound to the app with lifespan running
(templates loaded, comfy client targeting http://comfy.test)."""
import contextlib
app = create_app(settings())
async with contextlib.AsyncExitStack() as stack:
await stack.enter_async_context(app.router.lifespan_context(app))
transport = httpx.ASGITransport(app=app)
async with httpx.AsyncClient(transport=transport, base_url="http://adapter.test") as ac:
ac.headers["Authorization"] = f"Bearer {FAKE_KEY}"
yield ac