From 5abff7e6801adb93d871606122923e862741cfce Mon Sep 17 00:00:00 2001 From: pakrym-oai Date: Tue, 7 Jul 2026 17:35:37 -0700 Subject: [PATCH] test: exercise external header auth provider --- codex-rs/core/tests/suite/external_auth.rs | 27 ++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/codex-rs/core/tests/suite/external_auth.rs b/codex-rs/core/tests/suite/external_auth.rs index 2aa9c9a0d5..5649615d1f 100644 --- a/codex-rs/core/tests/suite/external_auth.rs +++ b/codex-rs/core/tests/suite/external_auth.rs @@ -1,5 +1,10 @@ +use std::sync::Arc; + use codex_login::AuthHeaders; use codex_login::CodexAuth; +use codex_login::ExternalAuth; +use codex_login::ExternalAuthFuture; +use codex_login::ExternalAuthRefreshContext; use core_test_support::responses::ev_completed; use core_test_support::responses::ev_response_created; use core_test_support::responses::mount_sse_once; @@ -11,8 +16,21 @@ use reqwest::header::AUTHORIZATION; use reqwest::header::HeaderMap; use reqwest::header::HeaderValue; +#[derive(Clone)] +struct StaticExternalAuth(CodexAuth); + +impl ExternalAuth for StaticExternalAuth { + fn resolve(&self) -> ExternalAuthFuture<'_, CodexAuth> { + Box::pin(async { Ok(self.0.clone()) }) + } + + fn refresh(&self, _context: ExternalAuthRefreshContext) -> ExternalAuthFuture<'_, CodexAuth> { + self.resolve() + } +} + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] -async fn header_auth_is_attached_to_responses_requests() -> anyhow::Result<()> { +async fn external_header_auth_is_attached_to_responses_requests() -> anyhow::Result<()> { skip_if_no_network!(Ok(())); let server = start_mock_server().await; @@ -24,8 +42,13 @@ async fn header_auth_is_attached_to_responses_requests() -> anyhow::Result<()> { let mut headers = HeaderMap::new(); headers.insert(AUTHORIZATION, HeaderValue::from_static("Bearer external")); headers.insert("x-external-auth", HeaderValue::from_static("enabled")); - let mut builder = test_codex().with_auth(CodexAuth::Headers(AuthHeaders::new(headers))); + let external_auth = StaticExternalAuth(CodexAuth::Headers(AuthHeaders::new(headers))); + let mut builder = test_codex(); let test = builder.build_with_auto_env(&server).await?; + test.thread_manager + .auth_manager() + .set_external_auth(Arc::new(external_auth)) + .await?; test.submit_turn("hello").await?;