11"""Unit tests for OpenAI Realtime bidirectional streaming model.
22
3- Tests the unified OpenAIRealtimeModel interface including:
3+ Tests the unified BidiOpenAIRealtimeModel interface including:
44- Model initialization and configuration
55- Connection establishment with WebSocket
66- Unified send() method with different content types
1515
1616import pytest
1717
18- from strands .experimental .bidirectional_streaming .models .openai import OpenAIRealtimeModel
18+ from strands .experimental .bidirectional_streaming .models .openai import BidiOpenAIRealtimeModel
1919from strands .experimental .bidirectional_streaming .types .events import (
2020 BidiAudioInputEvent ,
2121 BidiImageInputEvent ,
@@ -56,8 +56,8 @@ def api_key():
5656
5757@pytest .fixture
5858def model (api_key , model_name ):
59- """Create an OpenAIRealtimeModel instance."""
60- return OpenAIRealtimeModel (model = model_name , api_key = api_key )
59+ """Create an BidiOpenAIRealtimeModel instance."""
60+ return BidiOpenAIRealtimeModel (model = model_name , api_key = api_key )
6161
6262
6363@pytest .fixture
@@ -85,19 +85,19 @@ def messages():
8585def test_model_initialization (api_key , model_name ):
8686 """Test model initialization with various configurations."""
8787 # Test default config
88- model_default = OpenAIRealtimeModel (api_key = "test-key" )
88+ model_default = BidiOpenAIRealtimeModel (api_key = "test-key" )
8989 assert model_default .model == "gpt-realtime"
9090 assert model_default .api_key == "test-key"
9191 assert model_default ._active is False
9292 assert model_default .websocket is None
9393
9494 # Test with custom model
95- model_custom = OpenAIRealtimeModel (model = model_name , api_key = api_key )
95+ model_custom = BidiOpenAIRealtimeModel (model = model_name , api_key = api_key )
9696 assert model_custom .model == model_name
9797 assert model_custom .api_key == api_key
9898
9999 # Test with organization and project
100- model_org = OpenAIRealtimeModel (
100+ model_org = BidiOpenAIRealtimeModel (
101101 model = model_name ,
102102 api_key = api_key ,
103103 organization = "org-123" ,
@@ -108,15 +108,15 @@ def test_model_initialization(api_key, model_name):
108108
109109 # Test with env API key
110110 with unittest .mock .patch .dict ("os.environ" , {"OPENAI_API_KEY" : "env-key" }):
111- model_env = OpenAIRealtimeModel ()
111+ model_env = BidiOpenAIRealtimeModel ()
112112 assert model_env .api_key == "env-key"
113113
114114
115115def test_init_without_api_key_raises ():
116116 """Test that initialization without API key raises error."""
117117 with unittest .mock .patch .dict ("os.environ" , {}, clear = True ):
118118 with pytest .raises (ValueError , match = "OpenAI API key is required" ):
119- OpenAIRealtimeModel ()
119+ BidiOpenAIRealtimeModel ()
120120
121121
122122# Connection Tests
@@ -171,7 +171,7 @@ async def test_connection_lifecycle(mock_websockets_connect, model, system_promp
171171 await model .close ()
172172
173173 # Test connection with organization header
174- model_org = OpenAIRealtimeModel (api_key = "test-key" , organization = "org-123" )
174+ model_org = BidiOpenAIRealtimeModel (api_key = "test-key" , organization = "org-123" )
175175 await model_org .connect ()
176176 call_kwargs = mock_connect .call_args .kwargs
177177 headers = call_kwargs .get ("additional_headers" , [])
@@ -187,7 +187,7 @@ async def test_connection_edge_cases(mock_websockets_connect, api_key, model_nam
187187 mock_connect , mock_ws = mock_websockets_connect
188188
189189 # Test connection error
190- model1 = OpenAIRealtimeModel (model = model_name , api_key = api_key )
190+ model1 = BidiOpenAIRealtimeModel (model = model_name , api_key = api_key )
191191 mock_connect .side_effect = Exception ("Connection failed" )
192192 with pytest .raises (Exception , match = "Connection failed" ):
193193 await model1 .connect ()
@@ -198,18 +198,18 @@ async def async_connect(*args, **kwargs):
198198 mock_connect .side_effect = async_connect
199199
200200 # Test double connection
201- model2 = OpenAIRealtimeModel (model = model_name , api_key = api_key )
201+ model2 = BidiOpenAIRealtimeModel (model = model_name , api_key = api_key )
202202 await model2 .connect ()
203203 with pytest .raises (RuntimeError , match = "Connection already active" ):
204204 await model2 .connect ()
205205 await model2 .close ()
206206
207207 # Test close when not connected
208- model3 = OpenAIRealtimeModel (model = model_name , api_key = api_key )
208+ model3 = BidiOpenAIRealtimeModel (model = model_name , api_key = api_key )
209209 await model3 .close () # Should not raise
210210
211211 # Test close error handling (should not raise, just log)
212- model4 = OpenAIRealtimeModel (model = model_name , api_key = api_key )
212+ model4 = BidiOpenAIRealtimeModel (model = model_name , api_key = api_key )
213213 await model4 .connect ()
214214 mock_ws .close .side_effect = Exception ("Close failed" )
215215 await model4 .close () # Should not raise
0 commit comments