volli-manager 0.1.12

Manager for volli
Documentation
#![allow(unused_crate_dependencies)]
#![allow(unused_extern_crates)]

use volli_core::{EnvironmentConfig, override_env_config_patch};

#[tokio::test]
async fn default_profile_bootstrap() {
    let base = tempfile::TempDir::new().unwrap();
    let _cfg_guard = volli_core::override_config_dir(Some(base.path()));
    let _guard = override_env_config_patch(EnvironmentConfig {
        interval_ms: Some(10),
        backoff_ms: Some(10),
        ..Default::default()
    });
    let prof_dir = volli_manager::secret_dir(Some("default"));
    volli_manager::bootstrap_keypair(Some(&prof_dir)).unwrap();
    volli_manager::save_profile_host("default", "127.0.0.1").unwrap();
    volli_manager::save_bind_host("default", "127.0.0.1").unwrap();
    let (_c, _k, _fp) = volli_manager::load_or_generate_cert(None, None, Some(&prof_dir)).unwrap();
    volli_manager::save_peers("default", &[]).unwrap();
    let cfg = volli_manager::ServerConfigOpts {
        tcp_port: 0,
        quic_port: 0,
        secret_dir: Some(prof_dir.to_string_lossy().to_string()),
        test_disable_listeners: true,
        ..Default::default()
    };
    let (tx, rx) = tokio::sync::oneshot::channel();
    let handle = tokio::spawn(volli_manager::run(cfg, Some(tx)));
    rx.await.unwrap();
    handle.abort();
    assert!(prof_dir.join("manager_sk").exists());
    let peers = volli_manager::load_peers("default").unwrap();
    assert!(peers.is_empty());
}

#[tokio::test]
async fn second_profile_bootstrap() {
    let base = tempfile::TempDir::new().unwrap();
    let _cfg_guard = volli_core::override_config_dir(Some(base.path()));
    let _guard = override_env_config_patch(EnvironmentConfig {
        interval_ms: Some(10),
        backoff_ms: Some(10),
        ..Default::default()
    });
    let ddir = volli_manager::secret_dir(Some("default"));
    volli_manager::bootstrap_keypair(Some(&ddir)).unwrap();
    volli_manager::save_profile_host("default", "127.0.0.1").unwrap();
    volli_manager::save_bind_host("default", "127.0.0.1").unwrap();
    volli_manager::load_or_generate_cert(None, None, Some(&ddir)).unwrap();
    let cfg1 = volli_manager::ServerConfigOpts {
        tcp_port: 0,
        quic_port: 0,
        secret_dir: Some(ddir.to_string_lossy().to_string()),
        test_disable_listeners: true,
        ..Default::default()
    };
    let (tx1, rx1) = tokio::sync::oneshot::channel();
    let h1 = tokio::spawn(volli_manager::run(cfg1, Some(tx1)));
    rx1.await.unwrap();
    h1.abort();

    let prof_dir = volli_manager::secret_dir(Some("p2"));
    volli_manager::bootstrap_keypair(Some(&prof_dir)).unwrap();
    volli_manager::save_profile_host("p2", "127.0.0.1").unwrap();
    volli_manager::save_bind_host("p2", "127.0.0.1").unwrap();
    let (_c2, _k2, _fp2) =
        volli_manager::load_or_generate_cert(None, None, Some(&prof_dir)).unwrap();
    volli_manager::save_peers("p2", &[]).unwrap();
    let cfg2 = volli_manager::ServerConfigOpts {
        tcp_port: 0,
        quic_port: 0,
        secret_dir: Some(prof_dir.to_string_lossy().to_string()),
        profile: "p2".into(),
        test_disable_listeners: true,
        ..Default::default()
    };
    let (tx2, rx2) = tokio::sync::oneshot::channel();
    let h2 = tokio::spawn(volli_manager::run(cfg2, Some(tx2)));
    rx2.await.unwrap();
    h2.abort();

    assert!(prof_dir.join("manager_sk").exists());
    let peers = volli_manager::load_peers("p2").unwrap();
    assert!(peers.is_empty());
}