use api_openai::ClientApiAccessors;
use api_openai::
{
Client,
components ::responses::{ CreateResponseRequest, ResponseInput },
};
#[ tokio::test ]
async fn test_responses_create_stream_example_secret_loading()
{
let secret = api_openai::secret::Secret::load_with_fallbacks("OPENAI_API_KEY")
.expect("OPENAI_API_KEY should be available in workspace secrets");
let env = api_openai::environment::OpenaiEnvironmentImpl::build(secret, None, None, api_openai::environment::OpenAIRecommended::base_url().to_string(), api_openai::environment::OpenAIRecommended::realtime_base_url().to_string())
.expect("Failed to create environment");
let client = Client::build(env).expect("Failed to create client");
let request = CreateResponseRequest::former()
.model( "gpt-5-mini".to_string() )
.input( ResponseInput::String( "Tell me a very short story about a brave knight in exactly 2 sentences.".to_string() ) )
.stream( true )
.form();
let result = client.responses().create_stream( request ).await;
match result
{
Ok( mut receiver ) =>
{
println!( "✅ Streaming started successfully with proper secret loading!" );
let mut message_count = 0;
let mut content_received = String::new();
while let Some( event ) = receiver.recv().await
{
match event
{
Ok( event ) =>
{
println!( "📦 Received stream event : {event:?}" );
let event_str = format!( "{event:?}" );
if event_str.contains( "knight" ) || event_str.contains( "brave" )
{
content_received = event_str;
}
message_count += 1;
if message_count >= 5
{
break;
}
},
Err( e ) =>
{
let error_msg = format!( "{e:?}" );
if error_msg.contains( "dummy_key" )
{
panic!( "❌ ISSUE: Stream example still using dummy_key : {error_msg}" );
}
else
{
println!( "⚠️ Stream error (not dummy_key issue): {error_msg}" );
break;
}
}
}
}
assert!( message_count > 0, "Should have received at least one stream event" );
println!( "✅ Stream processing works correctly - received {message_count} events" );
if !content_received.is_empty()
{
println!( "✅ Received content about knight story" );
}
},
Err( e ) =>
{
let error_msg = format!( "{e:?}" );
if error_msg.contains( "dummy_key" )
{
panic!( "❌ ISSUE: Stream example still using dummy_key : {error_msg}" );
}
else
{
println!( "⚠️ Stream API returned error (not dummy_key issue): {error_msg}" );
println!( "✅ Secret loading works correctly (not a dummy_key issue)" );
}
}
}
}