Codex Handbook
config/src/cloud_config_bundle_tests.rs 125 lines
use super::*;use crate::ConfigLayerSource;use crate::ConfigRequirementsToml;use crate::compose_requirements;use codex_protocol::protocol::AskForApproval;use pretty_assertions::assert_eq;use std::sync::Arc;use std::sync::atomic::AtomicUsize;use std::sync::atomic::Ordering;use tempfile::tempdir;#[tokio::test]async fn shared_future_runs_once() {    let counter = Arc::new(AtomicUsize::new(0));    let counter_clone = Arc::clone(&counter);    let loader = CloudConfigBundleLoader::new(async move {        counter_clone.fetch_add(1, Ordering::SeqCst);        Ok(Some(CloudConfigBundle::default()))    });    let (first, second) = tokio::join!(loader.get(), loader.get());    assert_eq!(first, second);    assert_eq!(counter.load(Ordering::SeqCst), 1);}#[test]fn bundle_layers_preserve_enterprise_managed_bucket_order() {    let tempdir = tempdir().expect("tempdir");    let base_dir = AbsolutePathBuf::from_absolute_path(tempdir.path()).expect("absolute path");    let layers = CloudConfigBundleLayers::from_bundle(        CloudConfigBundle {            config_toml: CloudConfigTomlBundle {                enterprise_managed: vec![                    CloudConfigFragment {                        id: "cfg_high".to_string(),                        name: "High config".to_string(),                        contents: "model = \"high\"".to_string(),                    },                    CloudConfigFragment {                        id: "cfg_low".to_string(),                        name: "Low config".to_string(),                        contents: "model = \"low\"".to_string(),                    },                ],            },            requirements_toml: CloudRequirementsTomlBundle {                enterprise_managed: vec![                    CloudRequirementsFragment {                        id: "req_high".to_string(),                        name: "High requirements".to_string(),                        contents: "allowed_approval_policies = [\"on-request\"]".to_string(),                    },                    CloudRequirementsFragment {                        id: "req_low".to_string(),                        name: "Low requirements".to_string(),                        contents: "allowed_approval_policies = [\"never\"]".to_string(),                    },                ],            },        },        &base_dir,    )    .expect("bundle should be converted into layers");    assert_eq!(        layers            .enterprise_managed_config            .iter()            .map(|layer| layer.name.clone())            .collect::<Vec<_>>(),        vec![            ConfigLayerSource::EnterpriseManaged {                id: "cfg_low".to_string(),                name: "Low config".to_string(),            },            ConfigLayerSource::EnterpriseManaged {                id: "cfg_high".to_string(),                name: "High config".to_string(),            },        ]    );    assert_eq!(        compose_requirements(layers.enterprise_managed_requirements)            .expect("requirements should compose")            .expect("requirements should be present")            .into_toml(),        ConfigRequirementsToml {            allowed_approval_policies: Some(vec![AskForApproval::OnRequest]),            ..Default::default()        }    );}#[test]fn bundle_layers_can_strict_validate_enterprise_managed_config() {    let tempdir = tempdir().expect("tempdir");    let base_dir = AbsolutePathBuf::from_absolute_path(tempdir.path()).expect("absolute path");    let err = CloudConfigBundleLayers::from_bundle_strict_config(        CloudConfigBundle {            config_toml: CloudConfigTomlBundle {                enterprise_managed: vec![CloudConfigFragment {                    id: "cfg".to_string(),                    name: "Cloud config".to_string(),                    contents: "unknown_key = true".to_string(),                }],            },            requirements_toml: CloudRequirementsTomlBundle {                enterprise_managed: Vec::new(),            },        },        &base_dir,    )    .expect_err("strict config should reject unknown fields");    assert_eq!(        err,        CloudConfigLayerError::Invalid {            fragment: crate::CloudConfigFragmentSource {                id: "cfg".to_string(),                name: "Cloud config".to_string(),            },            message: "unknown configuration field `unknown_key`".to_string(),        }    );}