mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-08 02:17:46 +08:00
fix(gateway): add provider key concurrency and cache affinity modes
This commit is contained in:
@@ -256,12 +256,16 @@ fn auth_config_has_refresh_token(auth_config: Option<&str>) -> bool {
|
||||
let Ok(value) = serde_json::from_str::<Value>(auth_config) else {
|
||||
return false;
|
||||
};
|
||||
value
|
||||
.as_object()
|
||||
.and_then(|object| object.get("refresh_token"))
|
||||
.and_then(Value::as_str)
|
||||
.map(str::trim)
|
||||
.is_some_and(|value| !value.is_empty())
|
||||
let Some(object) = value.as_object() else {
|
||||
return false;
|
||||
};
|
||||
["refresh_token", "refreshToken"].iter().any(|field| {
|
||||
object
|
||||
.get(*field)
|
||||
.and_then(Value::as_str)
|
||||
.map(str::trim)
|
||||
.is_some_and(|value| !value.is_empty())
|
||||
})
|
||||
}
|
||||
|
||||
fn now_unix_secs() -> u64 {
|
||||
@@ -273,7 +277,44 @@ fn now_unix_secs() -> u64 {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::agent_identity_needs_task_recovery;
|
||||
use aether_data_contracts::repository::provider_catalog::{
|
||||
StoredProviderCatalogKey, StoredProviderCatalogProvider,
|
||||
};
|
||||
|
||||
use super::{
|
||||
agent_identity_needs_task_recovery, auth_config_has_refresh_token, oauth_refresh_candidate,
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn legacy_antigravity_refresh_token_is_refreshable() {
|
||||
assert!(auth_config_has_refresh_token(Some(
|
||||
r#"{"refreshToken":"legacy-refresh-token"}"#,
|
||||
)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn expiring_antigravity_oauth_key_is_refresh_candidate() {
|
||||
let provider = StoredProviderCatalogProvider::new(
|
||||
"provider-antigravity".to_string(),
|
||||
"Antigravity".to_string(),
|
||||
None,
|
||||
"antigravity".to_string(),
|
||||
)
|
||||
.expect("provider should build");
|
||||
let mut key = StoredProviderCatalogKey::new(
|
||||
"key-antigravity".to_string(),
|
||||
provider.id.clone(),
|
||||
"Antigravity OAuth".to_string(),
|
||||
"oauth".to_string(),
|
||||
None,
|
||||
true,
|
||||
)
|
||||
.expect("key should build");
|
||||
key.encrypted_auth_config = Some("encrypted-auth-config".to_string());
|
||||
key.expires_at_unix_secs = Some(120);
|
||||
|
||||
assert!(oauth_refresh_candidate(&provider, &key, 120));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pending_agent_identity_without_task_is_recoverable() {
|
||||
|
||||
Reference in New Issue
Block a user