Files
codex/codex-rs/model-provider/src/test_support.rs
T
Ahmed Ibrahim f046cf35df Scope model catalog caches to the current provider and auth identity (#43906)
## 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
2026-09-08 20:37:30 +00:00

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,
}
}