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:
jif
2026-10-02 19:04:39 +00:00
committed by Andrew Gu
parent 6e4b58112d
commit df32b8dadf
@@ -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(())
}