mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-09 07:13:17 +08:00
本次迁移将网关/通道/工具/技能/脚本与协议资源集中到新结构,统一路径常量与脚本转发机制,减少顶层噪音并保证运行与测试行为一致。 Made-with: Cursor
48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
from pathlib import Path
|
|
|
|
from oclaw.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"
|
|
|