mirror of
https://github.com/openai/codex.git
synced 2026-10-20 00:18:49 +00:00
Isolate realtime auth fallback test from startup prewarm (#48973)
## Why Startup prewarm can reconnect after its empty WebSocket connection closes, consuming the scripted realtime session reply in the environment-key fallback test with ChatGPT authentication. ## What changed Use separate WebSocket servers for startup and realtime traffic, configuring `experimental_realtime_ws_base_url` to point to the realtime server. Assert that it receives exactly one handshake and that the handshake uses the environment key for authorization. GitOrigin-RevId: 0e8ba4bdd66ef8aa3c619e36454dded9dcf55444
This commit is contained in:
@@ -2110,19 +2110,26 @@ async fn conversation_start_uses_openai_env_key_fallback_with_chatgpt_auth() ->
|
||||
|
||||
skip_if_no_network!(Ok(()));
|
||||
|
||||
let server = start_websocket_server(vec![
|
||||
vec![],
|
||||
vec![vec![json!({
|
||||
"type": "session.updated",
|
||||
"session": { "id": "sess_env", "instructions": "backend prompt" }
|
||||
})]],
|
||||
])
|
||||
// Startup prewarm can reconnect after the empty connection closes. Keep its
|
||||
// Responses requests from consuming the realtime session's scripted reply.
|
||||
let startup_server = start_websocket_server(vec![vec![]]).await;
|
||||
let server = start_websocket_server(vec![vec![vec![json!({
|
||||
"type": "session.updated",
|
||||
"session": { "id": "sess_env", "instructions": "backend prompt" }
|
||||
})]]])
|
||||
.await;
|
||||
|
||||
let mut builder = test_codex().with_auth(CodexAuth::create_dummy_chatgpt_auth_for_testing());
|
||||
let test = builder.build_with_websocket_server(&server).await?;
|
||||
let mut builder = test_codex()
|
||||
.with_auth(CodexAuth::create_dummy_chatgpt_auth_for_testing())
|
||||
.with_config({
|
||||
let realtime_base_url = server.uri().to_string();
|
||||
move |config| {
|
||||
config.experimental_realtime_ws_base_url = Some(realtime_base_url);
|
||||
}
|
||||
});
|
||||
let test = builder.build_with_websocket_server(&startup_server).await?;
|
||||
assert!(
|
||||
server
|
||||
startup_server
|
||||
.wait_for_handshakes(/*expected*/ 1, Duration::from_secs(2))
|
||||
.await
|
||||
);
|
||||
@@ -2174,8 +2181,9 @@ async fn conversation_start_uses_openai_env_key_fallback_with_chatgpt_auth() ->
|
||||
.await;
|
||||
assert_eq!(session_updated, "sess_env");
|
||||
|
||||
assert_eq!(server.handshakes().len(), 1);
|
||||
assert_eq!(
|
||||
server.handshakes()[1].header("authorization").as_deref(),
|
||||
server.handshakes()[0].header("authorization").as_deref(),
|
||||
Some("Bearer env-realtime-key")
|
||||
);
|
||||
|
||||
@@ -2186,6 +2194,7 @@ async fn conversation_start_uses_openai_env_key_fallback_with_chatgpt_auth() ->
|
||||
})
|
||||
.await;
|
||||
|
||||
startup_server.shutdown().await;
|
||||
server.shutdown().await;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user