audio2face3d-server 0.1.0

Audio2Face-3D compatible gRPC server
#![cfg(feature = "cli")]
use std::process::Command;
const SECRET: &str = "SentinelApiKeyNeverPrint";
fn run(args: &[&str], environment: Option<&str>) -> std::process::Output {
    let mut command = Command::new(env!("CARGO_BIN_EXE_audio2face3d-server"));
    command
        .args(args)
        .env_remove("AUDIO2FACE3D_API_KEY")
        .env_remove("RUST_LOG");
    if let Some(value) = environment {
        command.env("AUDIO2FACE3D_API_KEY", value);
    }
    command.output().unwrap()
}
#[test]
fn parse_errors_help_and_startup_never_echo_secrets() {
    for args in [
        vec!["--api-key", SECRET, "--api-key", SECRET],
        vec!["--api-key", SECRET, "--listen", SECRET],
        vec!["--api-key", SECRET, "--unknown"],
        vec!["--api-key"],
        vec!["--api-key", ""],
    ] {
        let result = run(&args, None);
        assert!(!result.status.success());
        let text = format!(
            "{}{}",
            String::from_utf8_lossy(&result.stdout),
            String::from_utf8_lossy(&result.stderr)
        );
        assert!(!text.contains(SECRET), "{text}");
    }
    for args in [
        vec!["--help"],
        vec!["--version"],
        vec!["--api-key", SECRET, "--help"],
    ] {
        let result = run(&args, Some(""));
        assert!(result.status.success());
        assert!(!String::from_utf8_lossy(&result.stdout).contains(SECRET));
        assert!(!String::from_utf8_lossy(&result.stderr).contains(SECRET));
    }
}
#[test]
fn descriptor_export_ignores_invalid_auth_environment() {
    let path = std::env::temp_dir().join(format!("a2f-descriptor-{}.bin", std::process::id()));
    let result = run(&["--export-descriptor", path.to_str().unwrap()], Some(""));
    assert!(result.status.success());
    assert_eq!(
        std::fs::read(&path).unwrap(),
        audio2face3d_server::proto::DESCRIPTOR
    );
    std::fs::remove_file(path).unwrap();
}