Implement adaptive client list

This commit is contained in:
2026-10-28 23:12:22 +02:00
parent d49721ff8e
commit 4960c65f65
8 changed files with 1794 additions and 256 deletions
+27
View File
@@ -21,6 +21,7 @@ use wireguard_admin::tui::events::{
ShutdownProgress, StatisticsReader, UiCommand, WorkerConfig, WorkerEvent,
};
use wireguard_admin::tui::forms::{FormAction, FormController};
use wireguard_admin::tui::state::SessionView;
use wireguard_admin::vault::WireGuardPrivateKey;
const SETTINGS: &str = r#"
@@ -75,6 +76,32 @@ fn fixture() -> Fixture {
}
}
#[test]
fn saved_peer_projection_counts_legacy_peers_without_inventing_managed_state() {
let fixture = fixture();
let legacy_key = WireGuardPrivateKey::generate()
.expect("synthetic legacy peer key")
.public_key();
let mut server_config =
fs::read_to_string(&fixture.settings.server_config_path).expect("synthetic server config");
server_config.push_str(&format!(
"\n[Peer]\nPublicKey = {legacy_key}\nAllowedIPs = 10.20.0.2/32\n"
));
fs::write(&fixture.settings.server_config_path, server_config)
.expect("write synthetic legacy peer");
let app = wireguard_admin::app::Application::open_from_saved_store(fixture.store.clone())
.expect("application opens with an inspect-only legacy peer");
let view = SessionView::from_application(&app, 0);
assert_eq!(view.saved_peer_count, Some(1));
assert_eq!(view.clients.len(), 1);
assert_eq!(view.clients[0].identity, Some(legacy_key));
assert_eq!(view.clients[0].mutable_identity, None);
assert!(view.client_states.is_empty());
assert!(!view.has_draft);
}
#[derive(Clone, Default)]
struct CountingStatistics(Arc<AtomicUsize>);