from __future__ import annotations from unittest.mock import MagicMock, patch from backend.config import settings from backend.llm import openai_client def test_chat_text_uses_pipeline_timeout(monkeypatch): monkeypatch.setattr(settings, "openai_pipeline_timeout_seconds", 20.0) openai_client.reset_client() mock_client = MagicMock() mock_client.chat.completions.create.return_value = MagicMock( choices=[MagicMock(message=MagicMock(content="ok"))] ) with patch.object(openai_client, "_get_client", return_value=mock_client): openai_client.chat_text([{"role": "user", "content": "hi"}]) _, kwargs = mock_client.chat.completions.create.call_args assert kwargs["timeout"] == 20.0 def test_chat_json_uses_pipeline_timeout(monkeypatch): monkeypatch.setattr(settings, "openai_pipeline_timeout_seconds", 20.0) openai_client.reset_client() mock_client = MagicMock() mock_client.chat.completions.create.return_value = MagicMock( choices=[MagicMock(message=MagicMock(content='{"passed": true}'))] ) with patch.object(openai_client, "_get_client", return_value=mock_client): openai_client.chat_json([{"role": "user", "content": "audit"}]) _, kwargs = mock_client.chat.completions.create.call_args assert kwargs["timeout"] == 20.0 def test_chat_text_explicit_timeout_override(monkeypatch): monkeypatch.setattr(settings, "openai_pipeline_timeout_seconds", 20.0) openai_client.reset_client() mock_client = MagicMock() mock_client.chat.completions.create.return_value = MagicMock( choices=[MagicMock(message=MagicMock(content="ok"))] ) with patch.object(openai_client, "_get_client", return_value=mock_client): openai_client.chat_text([{"role": "user", "content": "hi"}], timeout=8.0) _, kwargs = mock_client.chat.completions.create.call_args assert kwargs["timeout"] == 8.0