oclaw/tests/test_gateway_image_generation_chain.py
oliver 420abac9f1 refactor: root-package imports (svc/runtime/interfaces) and fix PYTHONPATH
- Rename platform/ to svc/ to avoid shadowing stdlib platform.
- Replace from oclaw.* with from svc/runtime/interfaces; update -m CLI paths.
- tests/conftest: prepend repo root to sys.path (no parent-folder package name).
- CI: paths and offline_eval script under repo root.
- Ops scripts: PYTHONPATH must be repo root for python -m runtime.* (fixes gateway/WhatsApp sidecar startup).
- Fix default oclaw.json path in tabular/file attachment limits; stabilize attachment test config.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-13 14:51:17 +08:00

48 lines
1.9 KiB
Python

from __future__ import annotations
import importlib.util
from pathlib import Path
from interfaces.gateway.server_plugins import load_gateway_plugins
def _load_image_core_generate_image():
file_path = (Path(__file__).resolve().parents[1] / "runtime" / "extensions" / "image-generation-core" / "api.py").resolve()
spec = importlib.util.spec_from_file_location("test_image_generation_core_api", str(file_path))
if spec is None or spec.loader is None:
raise RuntimeError("failed to load image-generation-core api module")
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return getattr(module, "generate_image")
def test_openai_registers_image_generation_provider_in_gateway_registry() -> None:
out = load_gateway_plugins(
cfg={"plugins": {"enabled": ["openai"]}},
workspace_dir=".",
log={},
core_gateway_handlers={},
base_methods=["ping"],
)
providers = out.plugin_registry.get("image_generation_providers") or []
assert isinstance(providers, list)
assert any(isinstance(p, dict) and p.get("id") == "openai" for p in providers)
def test_image_generation_core_uses_registered_openai_provider() -> None:
out = load_gateway_plugins(
cfg={"plugins": {"enabled": ["openai"]}},
workspace_dir=".",
log={},
core_gateway_handlers={},
base_methods=["ping"],
)
runtime = {"image_generation_providers": out.plugin_registry.get("image_generation_providers") or []}
generate_image = _load_image_core_generate_image()
result = generate_image(prompt="sunset over city", provider_id="openai", runtime=runtime, size="1024x1024")
assert result.get("ok") is True
assert result.get("provider") == "openai"
assert result.get("model") == "gpt-image-1"
assert result.get("prompt") == "sunset over city"
assert result.get("size") == "1024x1024"