datui-lib 0.4.5

Data Exploration in the Terminal (library)
Documentation
use super::*;

#[test]
fn only_cloud_variables_are_read() {
    let text = "# a project's .env\n\
                    DATABASE_URL=postgres://secret\n\
                    export AWS_ACCESS_KEY_ID=AKIAFILE\n\
                    AWS_SECRET_ACCESS_KEY=\"with spaces\" # quoted\n\
                    AZURE_STORAGE_ACCOUNT_NAME=acct # trailing comment\n\
                    MC_HOST_lab=http://k:s@127.0.0.1:9000\n\
                    ONPREM_KEY='single'\n";
    let allowed = |k: &str| KNOWN.contains(&k) || k.starts_with("MC_HOST_") || k == "ONPREM_KEY";
    let parsed: HashMap<String, String> = parse(text, &allowed).into_iter().collect();
    assert_eq!(parsed.get("DATABASE_URL"), None);
    assert_eq!(parsed["AWS_ACCESS_KEY_ID"], "AKIAFILE");
    assert_eq!(parsed["AWS_SECRET_ACCESS_KEY"], "with spaces");
    assert_eq!(parsed["AZURE_STORAGE_ACCOUNT_NAME"], "acct");
    assert_eq!(parsed["MC_HOST_lab"], "http://k:s@127.0.0.1:9000");
    assert_eq!(parsed["ONPREM_KEY"], "single");
}

#[test]
fn files_are_found_relative_to_the_working_directory() {
    let dir = tempfile::TempDir::new().unwrap();
    std::fs::write(
        dir.path().join(".env"),
        "DATUI_ENV_FILE_TEST_ONLY=x\nONPREM_SECRET_FOR_ENV_FILE_TEST=s3cr3t\n",
    )
    .unwrap();
    let cloud = CloudConfig {
        env_files: vec![".env".to_string(), "missing.env".to_string()],
        connections: vec![crate::config::CloudConnectionConfig {
            name: "onprem".to_string(),
            secret_access_key_env: Some("ONPREM_SECRET_FOR_ENV_FILE_TEST".to_string()),
            ..Default::default()
        }],
        ..Default::default()
    };
    let notes = load(&cloud, dir.path());
    assert_eq!(notes.len(), 1, "{notes:?}");
    assert!(notes[0].contains("missing.env"));
    assert_eq!(
        var("ONPREM_SECRET_FOR_ENV_FILE_TEST").as_deref(),
        Some("s3cr3t")
    );
    assert_eq!(
        var("DATUI_ENV_FILE_TEST_ONLY"),
        None,
        "not a cloud variable"
    );
    assert!(
        std::env::var("ONPREM_SECRET_FOR_ENV_FILE_TEST").is_err(),
        "never exported"
    );
    load(&CloudConfig::default(), dir.path());
}