mirror of
https://github.com/openai/codex.git
synced 2026-11-07 20:30:33 +00:00
## Why Switching providers or authentication could reuse a previous identity's model catalog, including its default service tier. An in-flight refresh could also overwrite a newer account's catalog after cache storage completed. ## What changed - Require a matching provider and auth identity for disk and in-memory catalog reuse. Treat legacy entries without an identity as cache misses and fall back to bundled metadata when the in-memory identity no longer matches. - Recheck identity after fetching and storing a catalog before publishing it. - Renew cache freshness only when the client version, identity, and ETag match the stored entry. - Update cache fixtures to include the configured provider and auth identity. ## Testing Add regression coverage for provider and auth switches, credential rotation, legacy and mismatched cache entries, conditional TTL renewal, and an account switch during cache storage. Verify that API-key requests do not inherit a ChatGPT catalog's default `service_tier`, while explicit tier selection still works. GitOrigin-RevId: e15d7ffff238d951d7a1c6a68381cbb479994146
22 lines
766 B
Rust
22 lines
766 B
Rust
//! Fixtures for integration tests that seed the provider's model cache.
|
|
|
|
use codex_login::CodexAuth;
|
|
use codex_model_provider_info::ModelProviderInfo;
|
|
use codex_models_manager::cache::ModelsCacheEntry;
|
|
use codex_protocol::openai_models::ModelInfo;
|
|
|
|
/// Constructs a cache fixture matching the supplied test provider and authentication.
|
|
pub fn models_cache_entry(
|
|
provider_info: &ModelProviderInfo,
|
|
auth: Option<&CodexAuth>,
|
|
models: Vec<ModelInfo>,
|
|
) -> ModelsCacheEntry {
|
|
ModelsCacheEntry {
|
|
fetched_at: std::time::SystemTime::now().into(),
|
|
etag: None,
|
|
client_version: Some(codex_models_manager::client_version_to_whole()),
|
|
identity: crate::models_identity::identity(provider_info, auth).ok(),
|
|
models,
|
|
}
|
|
}
|