fix(auth): 授权 Responses Compact 伴随端点

(cherry picked from commit e8afa03e45)
This commit is contained in:
MMEXA
2026-07-16 00:32:14 +08:00
committed by elky
parent ff7988430d
commit 598b2fb374
2 changed files with 43 additions and 3 deletions
+28 -2
View File
@@ -170,7 +170,11 @@ pub fn api_format_permission_covers(allowed_value: &str, requested_api_format: &
!allowed_value.is_empty()
&& !requested_api_format.is_empty()
&& (allowed_value == requested_api_format
|| allowed_value == "openai:responses" && requested_api_format == "openai:search")
|| allowed_value == "openai:responses"
&& matches!(
requested_api_format.as_str(),
"openai:responses:compact" | "openai:search"
))
}
pub fn intersect_api_format_allowed_lists(left: &[String], right: &[String]) -> Vec<String> {
@@ -269,11 +273,15 @@ mod tests {
}
#[test]
fn responses_permission_covers_only_its_search_companion() {
fn responses_permission_covers_its_companion_endpoints() {
assert!(api_format_permission_covers(
"OPENAI:RESPONSES",
"openai:search"
));
assert!(api_format_permission_covers(
"OPENAI:RESPONSES",
"openai:responses:compact"
));
assert!(api_format_permission_covers(
"openai:search",
"openai:search"
@@ -282,6 +290,10 @@ mod tests {
"openai:search",
"openai:responses"
));
assert!(!api_format_permission_covers(
"openai:responses:compact",
"openai:responses"
));
assert!(!api_format_permission_covers(
"openai:responses",
"openai:chat"
@@ -290,6 +302,13 @@ mod tests {
api_format_permission_storage_aliases("openai:search"),
vec!["openai:search".to_string(), "openai:responses".to_string()]
);
assert_eq!(
api_format_permission_storage_aliases("openai:responses:compact"),
vec![
"openai:responses:compact".to_string(),
"openai:responses".to_string(),
]
);
assert_eq!(
api_format_permission_storage_aliases("openai:responses"),
vec!["openai:responses".to_string()]
@@ -357,6 +376,13 @@ mod tests {
),
vec!["openai:search".to_string()]
);
assert_eq!(
intersect_api_format_allowed_lists(
&["openai:responses".to_string()],
&["openai:responses:compact".to_string()],
),
vec!["openai:responses:compact".to_string()]
);
assert!(intersect_api_format_allowed_lists(
&["openai:search".to_string()],
&["openai:chat".to_string()],