Codex Handbook
core/src/config/auth_keyring_tests.rs 79 lines
use super::*;use codex_config::ConfigLayerStack;use codex_config::ConfigRequirements;use codex_config::ConfigRequirementsToml;use codex_config::FeatureRequirementsToml;use codex_config::RequirementSource;use codex_config::Sourced;use codex_config::config_toml::ConfigToml;use codex_features::FeaturesToml;use pretty_assertions::assert_eq;use std::collections::BTreeMap;#[test]fn resolve_bootstrap_auth_keyring_backend_kind_uses_secret_auth_storage_feature()-> std::io::Result<()> {    let config_toml = ConfigToml {        features: Some(FeaturesToml::from(BTreeMap::from([(            "secret_auth_storage".to_string(),            true,        )]))),        ..Default::default()    };    assert_eq!(        resolve_bootstrap_auth_keyring_backend_kind(&config_toml_load_result(            config_toml,            /*feature_requirements*/ None,        )?)?,        AuthKeyringBackendKind::Secrets    );    let config_toml = ConfigToml {        features: Some(FeaturesToml::from(BTreeMap::from([(            "secret_auth_storage".to_string(),            false,        )]))),        ..Default::default()    };    assert_eq!(        resolve_bootstrap_auth_keyring_backend_kind(&config_toml_load_result(            config_toml.clone(),            /*feature_requirements*/ None,        )?)?,        AuthKeyringBackendKind::Direct    );    let requirements = Sourced::new(        FeatureRequirementsToml {            entries: BTreeMap::from([("secret_auth_storage".to_string(), true)]),        },        RequirementSource::Unknown,    );    assert_eq!(        resolve_bootstrap_auth_keyring_backend_kind(&config_toml_load_result(            config_toml,            Some(requirements),        )?)?,        AuthKeyringBackendKind::Secrets    );    Ok(())}fn config_toml_load_result(    config_toml: ConfigToml,    feature_requirements: Option<Sourced<FeatureRequirementsToml>>,) -> std::io::Result<ConfigTomlLoadResult> {    let requirements = ConfigRequirements {        feature_requirements,        ..Default::default()    };    Ok(ConfigTomlLoadResult {        config_toml,        config_layer_stack: ConfigLayerStack::new(            Vec::new(),            requirements,            ConfigRequirementsToml::default(),        )?,    })}