mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
69 lines
2.2 KiB
Python
69 lines
2.2 KiB
Python
"""Tests for agent_sdk.server.load_tool_manifest().
|
|||
|
|
|
||
|
|
load_tool_manifest() reads its env variables at call-time, so monkeypatch
|
||
|
|
is enough — no importlib.reload required.
|
||
|
|
"""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import json
|
||
|
|
from typing import TYPE_CHECKING
|
||
|
|
|
||
|
|
import roboco.agent_sdk.server as srv
|
||
|
|
|
||
|
|
if TYPE_CHECKING:
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
|
||
|
|
def test_manifest_loader_disabled(
|
||
|
|
monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
||
|
|
) -> None:
|
||
|
|
"""Returns None when ROBOCO_GATEWAY_ENABLED is false, even if file exists."""
|
||
|
|
monkeypatch.setenv("ROBOCO_GATEWAY_ENABLED", "false")
|
||
|
|
manifest_file = tmp_path / "manifest.json"
|
||
|
|
manifest_file.write_text(json.dumps({"flow_tools": ["x"]}))
|
||
|
|
monkeypatch.setenv("ROBOCO_TOOL_MANIFEST_PATH", str(manifest_file))
|
||
|
|
|
||
|
|
assert srv.load_tool_manifest() is None
|
||
|
|
|
||
|
|
|
||
|
|
def test_manifest_loader_enabled(
|
||
|
|
monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
||
|
|
) -> None:
|
||
|
|
"""Returns parsed manifest dict when gateway is enabled and file is valid."""
|
||
|
|
monkeypatch.setenv("ROBOCO_GATEWAY_ENABLED", "true")
|
||
|
|
manifest_file = tmp_path / "manifest.json"
|
||
|
|
manifest_file.write_text(json.dumps({"flow_tools": ["i_am_done"]}))
|
||
|
|
monkeypatch.setenv("ROBOCO_TOOL_MANIFEST_PATH", str(manifest_file))
|
||
|
|
|
||
|
|
result = srv.load_tool_manifest()
|
||
|
|
|
||
|
|
assert result is not None
|
||
|
|
flow_tools = result["flow_tools"]
|
||
|
|
assert isinstance(flow_tools, list)
|
||
|
|
assert "i_am_done" in flow_tools
|
||
|
|
|
||
|
|
|
||
|
|
def test_manifest_loader_enabled_file_missing(
|
||
|
|
monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
||
|
|
) -> None:
|
||
|
|
"""Returns None (not an error) when gateway is enabled but file is absent."""
|
||
|
|
monkeypatch.setenv("ROBOCO_GATEWAY_ENABLED", "true")
|
||
|
|
monkeypatch.setenv("ROBOCO_TOOL_MANIFEST_PATH", str(tmp_path / "no-such-file.json"))
|
||
|
|
|
||
|
|
assert srv.load_tool_manifest() is None
|
||
|
|
|
||
|
|
|
||
|
|
def test_manifest_loader_enabled_invalid_json(
|
||
|
|
monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
||
|
|
) -> None:
|
||
|
|
"""Returns None (not an error) when gateway is enabled but JSON is invalid."""
|
||
|
|
monkeypatch.setenv("ROBOCO_GATEWAY_ENABLED", "true")
|
||
|
|
manifest_file = tmp_path / "bad.json"
|
||
|
|
manifest_file.write_text("{ not valid json }")
|
||
|
|
monkeypatch.setenv("ROBOCO_TOOL_MANIFEST_PATH", str(manifest_file))
|
||
|
|
|
||
|
|
assert srv.load_tool_manifest() is None
|