e4dcfc49aa
Tests / Import Check (Python 3.13) (push) Has been cancelled
Tests / Import Check (Python 3.14) (push) Has been cancelled
Tests / Python Tests (Python 3.11) (push) Has been cancelled
Tests / Python Tests (Python 3.12) (push) Has been cancelled
Tests / Python Tests (Python 3.14) (push) Has been cancelled
Tests / Test Summary (push) Has been cancelled
Tests / Lint and Format (push) Has been cancelled
Tests / Web Node Tests (push) Has been cancelled
Tests / Import Check (Python 3.11) (push) Has been cancelled
Tests / Import Check (Python 3.12) (push) Has been cancelled
Tests / Python Tests (Python 3.13) (push) Has been cancelled
117 lines
3.3 KiB
Python
117 lines
3.3 KiB
Python
"""Tests for NotebookSummarizeAgent — extra_headers forwarding."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from deeptutor.services.llm.config import LLMConfig
|
|
|
|
|
|
def _make_cfg(**overrides):
|
|
defaults = dict(
|
|
model="gpt-4o-mini",
|
|
api_key="test-key",
|
|
base_url="https://api.example.com/v1",
|
|
binding="openai",
|
|
provider_name="openai",
|
|
provider_mode="standard",
|
|
)
|
|
defaults.update(overrides)
|
|
return LLMConfig(**defaults)
|
|
|
|
|
|
def test_summarize_agent_stores_extra_headers(monkeypatch) -> None:
|
|
"""Agent should pick up extra_headers from LLMConfig."""
|
|
cfg = _make_cfg(extra_headers={"X-Gateway": "prod"})
|
|
monkeypatch.setattr(
|
|
"deeptutor.agents.notebook.summarize_agent.get_llm_config",
|
|
lambda: cfg,
|
|
)
|
|
|
|
from deeptutor.agents.notebook.summarize_agent import NotebookSummarizeAgent
|
|
|
|
agent = NotebookSummarizeAgent(language="en")
|
|
assert agent.extra_headers == {"X-Gateway": "prod"}
|
|
|
|
|
|
def test_summarize_agent_empty_extra_headers(monkeypatch) -> None:
|
|
"""Agent should default to empty dict when config has no extra_headers."""
|
|
cfg = _make_cfg()
|
|
monkeypatch.setattr(
|
|
"deeptutor.agents.notebook.summarize_agent.get_llm_config",
|
|
lambda: cfg,
|
|
)
|
|
|
|
from deeptutor.agents.notebook.summarize_agent import NotebookSummarizeAgent
|
|
|
|
agent = NotebookSummarizeAgent(language="en")
|
|
assert agent.extra_headers == {}
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_summarize_agent_forwards_extra_headers(monkeypatch) -> None:
|
|
"""extra_headers must reach the underlying llm_stream call."""
|
|
cfg = _make_cfg(extra_headers={"X-Gateway": "prod"})
|
|
monkeypatch.setattr(
|
|
"deeptutor.agents.notebook.summarize_agent.get_llm_config",
|
|
lambda: cfg,
|
|
)
|
|
captured: dict[str, object] = {}
|
|
|
|
async def _fake_llm_stream(**kwargs):
|
|
captured.update(kwargs)
|
|
yield "summary text"
|
|
|
|
monkeypatch.setattr(
|
|
"deeptutor.agents.notebook.summarize_agent.llm_stream",
|
|
_fake_llm_stream,
|
|
)
|
|
|
|
from deeptutor.agents.notebook.summarize_agent import NotebookSummarizeAgent
|
|
|
|
agent = NotebookSummarizeAgent(language="en")
|
|
chunks: list[str] = []
|
|
async for c in agent.stream_summary(
|
|
title="Test",
|
|
record_type="chat",
|
|
user_query="What is X?",
|
|
output="X is Y.",
|
|
):
|
|
chunks.append(c)
|
|
|
|
assert "".join(chunks) == "summary text"
|
|
assert captured.get("extra_headers") == {"X-Gateway": "prod"}
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_summarize_agent_omits_extra_headers_when_empty(monkeypatch) -> None:
|
|
"""When no extra_headers configured, they should not appear in kwargs."""
|
|
cfg = _make_cfg()
|
|
monkeypatch.setattr(
|
|
"deeptutor.agents.notebook.summarize_agent.get_llm_config",
|
|
lambda: cfg,
|
|
)
|
|
captured: dict[str, object] = {}
|
|
|
|
async def _fake_llm_stream(**kwargs):
|
|
captured.update(kwargs)
|
|
yield "ok"
|
|
|
|
monkeypatch.setattr(
|
|
"deeptutor.agents.notebook.summarize_agent.llm_stream",
|
|
_fake_llm_stream,
|
|
)
|
|
|
|
from deeptutor.agents.notebook.summarize_agent import NotebookSummarizeAgent
|
|
|
|
agent = NotebookSummarizeAgent(language="en")
|
|
async for _ in agent.stream_summary(
|
|
title="T",
|
|
record_type="chat",
|
|
user_query="q",
|
|
output="o",
|
|
):
|
|
pass
|
|
|
|
assert "extra_headers" not in captured
|