Fix OpenAI family local auth to use bearer (#302)

* Fix OpenAI family local auth to use bearer

* test(gateway): fix bearer auth assertions for openai local flows

* test(usage): make local usage status wait resilient

* style(gateway): apply rustfmt to usage test helper

---------

Co-authored-by: fawney19 <elky0401@gmail.com>
This commit is contained in:
RWDai
2026-04-17 11:10:05 +08:00
committed by GitHub
parent 6964729cb7
commit 96a25d058b
15 changed files with 89 additions and 37 deletions

View File

@@ -227,7 +227,7 @@ fn merge_comma_header_values(left: Option<&str>, right: Option<&str>) -> Option<
}
}
pub fn resolve_local_openai_chat_auth(
pub fn resolve_local_openai_bearer_auth(
transport: &GatewayProviderTransportSnapshot,
) -> Option<(String, String)> {
let auth_type = transport.key.auth_type.trim().to_ascii_lowercase();
@@ -274,7 +274,7 @@ fn resolved_local_secret(transport: &GatewayProviderTransportSnapshot) -> Option
mod tests {
use super::{
build_claude_passthrough_headers, build_complete_passthrough_headers_with_auth,
resolve_local_standard_auth,
resolve_local_openai_bearer_auth, resolve_local_standard_auth,
};
use crate::snapshot::{
GatewayProviderTransportEndpoint, GatewayProviderTransportKey,
@@ -442,4 +442,28 @@ mod tests {
fn local_standard_auth_rejects_placeholder_secret() {
assert!(resolve_local_standard_auth(&sample_transport()).is_none());
}
#[test]
fn local_openai_bearer_auth_maps_api_key_to_bearer_authorization() {
let mut transport = sample_transport();
transport.key.auth_type = "api_key".to_string();
transport.key.decrypted_api_key = "sk-openai".to_string();
assert_eq!(
resolve_local_openai_bearer_auth(&transport),
Some(("authorization".to_string(), "Bearer sk-openai".to_string(),))
);
}
#[test]
fn local_openai_bearer_auth_preserves_bearer_header_shape() {
let mut transport = sample_transport();
transport.key.auth_type = "bearer".to_string();
transport.key.decrypted_api_key = "sk-openai".to_string();
assert_eq!(
resolve_local_openai_bearer_auth(&transport),
Some(("authorization".to_string(), "Bearer sk-openai".to_string(),))
);
}
}

View File

@@ -4,7 +4,7 @@ use aether_video_tasks_core::{
};
use async_trait::async_trait;
use super::auth::{resolve_local_gemini_auth, resolve_local_standard_auth};
use super::auth::{resolve_local_gemini_auth, resolve_local_openai_bearer_auth};
use super::network::resolve_transport_execution_timeouts;
use super::policy::{supports_local_gemini_transport, supports_local_standard_transport};
use super::snapshot::GatewayProviderTransportSnapshot;
@@ -30,7 +30,7 @@ pub fn resolve_local_video_task_transport(
if !supports_local_standard_transport(transport, api_format) {
return None;
}
resolve_local_standard_auth(transport)?
resolve_local_openai_bearer_auth(transport)?
}
"gemini:video" => {
if !supports_local_gemini_transport(transport, api_format) {
@@ -229,7 +229,7 @@ mod tests {
#[test]
fn resolves_openai_video_transport() {
let transport = resolve_local_video_task_transport(
&sample_transport("openai:video", "bearer"),
&sample_transport("openai:video", "api_key"),
"openai:video",
Some("sora".to_string()),
)