Codex Handbook
state/src/runtime/external_agent_config_imports_tests.rs 145 lines
use super::*;use crate::runtime::test_support::unique_temp_dir;use pretty_assertions::assert_eq;#[tokio::test]async fn records_completion_by_import_id() -> anyhow::Result<()> {    let runtime = StateRuntime::init(unique_temp_dir(), "test-provider".to_string()).await?;    runtime        .record_external_agent_config_import_completed(            "import-1",            &[ExternalAgentConfigImportSuccessRecord {                item_type: "CONFIG".to_string(),                cwd: None,                source: Some("settings.json".to_string()),                target: Some("config.toml".to_string()),            }],            &[],        )        .await?;    runtime        .record_external_agent_config_import_completed(            "import-1",            &[                ExternalAgentConfigImportSuccessRecord {                    item_type: "CONFIG".to_string(),                    cwd: None,                    source: Some("settings.json".to_string()),                    target: Some("config.toml".to_string()),                },                ExternalAgentConfigImportSuccessRecord {                    item_type: "MCP_SERVER_CONFIG".to_string(),                    cwd: None,                    source: Some("github".to_string()),                    target: Some("github".to_string()),                },            ],            &[ExternalAgentConfigImportFailureRecord {                item_type: "MCP_SERVER_CONFIG".to_string(),                error_type: None,                failure_stage: "import".to_string(),                message: "failed".to_string(),                cwd: None,                source: Some("broken".to_string()),            }],        )        .await?;    assert_eq!(        runtime            .external_agent_config_import_details_record("import-1")            .await?,        Some(ExternalAgentConfigImportDetailsRecord {            successes: vec![                ExternalAgentConfigImportSuccessRecord {                    item_type: "CONFIG".to_string(),                    cwd: None,                    source: Some("settings.json".to_string()),                    target: Some("config.toml".to_string()),                },                ExternalAgentConfigImportSuccessRecord {                    item_type: "MCP_SERVER_CONFIG".to_string(),                    cwd: None,                    source: Some("github".to_string()),                    target: Some("github".to_string()),                }            ],            failures: vec![ExternalAgentConfigImportFailureRecord {                item_type: "MCP_SERVER_CONFIG".to_string(),                error_type: None,                failure_stage: "import".to_string(),                message: "failed".to_string(),                cwd: None,                source: Some("broken".to_string()),            }],        })    );    assert_eq!(        runtime            .external_agent_config_import_history_records()            .await?            .into_iter()            .map(|record| (                record.import_id,                record.successes,                record.failures,                record.completed_at_ms > 0            ))            .collect::<Vec<_>>(),        vec![(            "import-1".to_string(),            vec![                ExternalAgentConfigImportSuccessRecord {                    item_type: "CONFIG".to_string(),                    cwd: None,                    source: Some("settings.json".to_string()),                    target: Some("config.toml".to_string()),                },                ExternalAgentConfigImportSuccessRecord {                    item_type: "MCP_SERVER_CONFIG".to_string(),                    cwd: None,                    source: Some("github".to_string()),                    target: Some("github".to_string()),                }            ],            vec![ExternalAgentConfigImportFailureRecord {                item_type: "MCP_SERVER_CONFIG".to_string(),                error_type: None,                failure_stage: "import".to_string(),                message: "failed".to_string(),                cwd: None,                source: Some("broken".to_string()),            }],            true        )]    );    Ok(())}#[tokio::test]async fn reads_all_history_records() -> anyhow::Result<()> {    let runtime = StateRuntime::init(unique_temp_dir(), "test-provider".to_string()).await?;    runtime        .record_external_agent_config_import_completed("import-1", &[], &[])        .await?;    runtime        .record_external_agent_config_import_completed("import-2", &[], &[])        .await?;    let mut records = runtime        .external_agent_config_import_history_records()        .await?;    records.sort_by(|left, right| left.import_id.cmp(&right.import_id));    assert_eq!(        records            .into_iter()            .map(|record| record.import_id)            .collect::<Vec<_>>(),        vec!["import-1".to_string(), "import-2".to_string()]    );    Ok(())}