-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathtest_codex_router.py
More file actions
91 lines (71 loc) · 3.11 KB
/
Copy pathtest_codex_router.py
File metadata and controls
91 lines (71 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
"""Simple tests for Codex routing"""
from anthropic_router import create_client
from codex_client import CodexClient
from openai_router import AsyncOpenAIRouter, OpenAIRouter
import pytest
def test_codex_detection():
client = create_client(provider="codex", api_key="999999999")
assert isinstance(client.client, CodexClient)
def test_codex_stream_not_supported():
router = OpenAIRouter(api_key="999999999")
with pytest.raises(NotImplementedError):
router.messages.create(
model="gpt-codex",
max_tokens=5,
messages=[{"role": "user", "content": "hi"}],
stream=True,
)
def test_openai_message_list_content_conversion(monkeypatch):
router = create_client(provider="openai", api_key="test")
captured = {}
class DummyResp:
def __init__(self):
self.id = "resp_123"
self.choices = [type("Choice", (), {"message": type("Msg", (), {"content": "ok"})()})]
self.usage = type("Usage", (), {"prompt_tokens": 0, "completion_tokens": 0})()
def fake_create(*, model, messages, max_tokens, temperature=None, stop=None, stream=False, **kwargs):
captured["messages"] = messages
return DummyResp()
monkeypatch.setattr(router.client.chat.completions, "create", fake_create)
router.messages.create(
model="gpt-test",
max_tokens=5,
messages=[{"role": "user", "content": [{"type": "text", "text": "Hello"}, {"type": "text", "text": " world"}]}],
)
assert captured["messages"][0]["content"] == "Hello world"
@pytest.mark.asyncio
async def test_openai_message_list_content_conversion_async(monkeypatch):
router = AsyncOpenAIRouter(api_key="test")
captured = {}
class DummyResp:
def __init__(self):
self.id = "resp_123"
self.choices = [type("Choice", (), {"message": type("Msg", (), {"content": "ok"})()})]
self.usage = type("Usage", (), {"prompt_tokens": 0, "completion_tokens": 0})()
async def fake_create(*, model, messages, max_tokens, temperature=None, stop=None, stream=False, **kwargs):
captured["messages"] = messages
return DummyResp()
monkeypatch.setattr(router.client.chat.completions, "create", fake_create)
await router.messages.create(
model="gpt-test",
max_tokens=5,
messages=[{"role": "user", "content": [{"type": "text", "text": "Hello"}, {"type": "text", "text": " world"}]}],
)
assert captured["messages"][0]["content"] == "Hello world"
@pytest.mark.asyncio
async def test_async_codex_stream_not_supported():
router = AsyncOpenAIRouter(api_key="999999999")
with pytest.raises(NotImplementedError):
await router.messages.create(
model="gpt-codex",
max_tokens=5,
messages=[{"role": "user", "content": "hi"}],
stream=True,
)
def test_invalid_provider():
with pytest.raises(ValueError):
create_client(provider="invalid")
def test_invalid_provider_env(monkeypatch):
monkeypatch.setenv("AI_ROUTER_DEFAULT", "invalid")
with pytest.raises(ValueError):
create_client()