Files
odysseus/tests/test_chat_preprocess_tool_policy.py

55 lines
1.9 KiB
Python

import pytest
from types import SimpleNamespace
from src.chat_handler import ChatHandler
class _UploadHandler:
def resolve_upload(self, *_args, **_kwargs):
raise AssertionError("attachments must not be resolved when tool preprocessing is disabled")
def is_image_file(self, *_args, **_kwargs):
raise AssertionError("images must not be inspected when tool preprocessing is disabled")
@pytest.mark.asyncio
async def test_preprocess_can_skip_external_context_and_attachment_work(monkeypatch):
async def _fail_transcript(*_args, **_kwargs):
raise AssertionError("YouTube transcripts must not be fetched")
async def _fail_comments(*_args, **_kwargs):
raise AssertionError("YouTube comments must not be fetched")
monkeypatch.setattr("src.chat_handler.extract_transcript_async", _fail_transcript)
monkeypatch.setattr("src.chat_handler.fetch_youtube_comments", _fail_comments)
monkeypatch.setattr(
"src.chat_handler.model_supports_vision",
lambda *_args, **_kwargs: (_ for _ in ()).throw(
AssertionError("vision support must not be probed")
),
)
handler = ChatHandler(
session_manager=None,
memory_manager=None,
chat_processor=None,
research_handler=None,
preset_manager=None,
upload_handler=_UploadHandler(),
)
sess = SimpleNamespace(model="text-only", endpoint_url="", owner="user", id="session")
enhanced, user_content, text_ctx, youtube, attachment_meta = await handler.preprocess_message(
"Do not use tools. https://www.youtube.com/watch?v=dQw4w9WgXcQ",
["image-id"],
sess,
auto_opened_docs=[],
allow_tool_preprocessing=False,
)
assert enhanced.startswith("Do not use tools.")
assert user_content == enhanced
assert text_ctx == enhanced
assert youtube == []
assert attachment_meta == []