#![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());
}