Files
microsoft--generative-ai-fo…/tests/test_api_utils.py
T
wehub-resource-sync 3fbbd7970c
Code Quality / Python Lint & Format (push) Has been cancelled
Code Quality / Python Tests (push) Has been cancelled
Code Quality / JavaScript/TypeScript Lint (advisory) (push) Has been cancelled
Security Scan / CodeQL Analysis (python) (push) Has been cancelled
Security Scan / Dependency Review (push) Has been cancelled
Security Scan / CodeQL Analysis (javascript-typescript) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:43:57 +08:00

69 lines
2.2 KiB
Python

"""Tests for shared.python.api_utils."""
import pytest
from requests.exceptions import RequestException
from shared.python.api_utils import (
create_azure_openai_client,
create_openai_client,
make_safe_request,
)
class _FakeResponse:
def __init__(self):
self.raised = False
def raise_for_status(self):
self.raised = True
class TestMakeSafeRequest:
def test_returns_response_on_success(self, monkeypatch):
fake = _FakeResponse()
def fake_request(method, url, timeout, **kwargs):
assert timeout == 30
return fake
monkeypatch.setattr("shared.python.api_utils.requests.request", fake_request)
result = make_safe_request("https://example.com")
assert result is fake
assert fake.raised is True
def test_retries_then_raises(self, monkeypatch):
calls = {"count": 0}
def fake_request(method, url, timeout, **kwargs):
calls["count"] += 1
raise RequestException("boom")
monkeypatch.setattr("shared.python.api_utils.requests.request", fake_request)
with pytest.raises(RequestException):
make_safe_request("https://example.com", retries=3)
assert calls["count"] == 3
class TestCreateOpenAIClient:
def test_missing_key_raises_value_error(self, monkeypatch):
pytest.importorskip("openai")
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
with pytest.raises(ValueError, match="API key"):
create_openai_client()
class TestCreateAzureOpenAIClient:
def test_missing_endpoint_raises_value_error(self, monkeypatch):
pytest.importorskip("openai")
monkeypatch.delenv("AZURE_OPENAI_ENDPOINT", raising=False)
monkeypatch.setenv("AZURE_OPENAI_API_KEY", "test-key")
with pytest.raises(ValueError, match="endpoint"):
create_azure_openai_client()
def test_missing_key_raises_value_error(self, monkeypatch):
pytest.importorskip("openai")
monkeypatch.setenv("AZURE_OPENAI_ENDPOINT", "https://example.openai.azure.com")
monkeypatch.delenv("AZURE_OPENAI_API_KEY", raising=False)
with pytest.raises(ValueError, match="API key"):
create_azure_openai_client()