Add application read models and thin TUI command adapter
This commit is contained in:
@@ -102,6 +102,42 @@ fn saved_peer_projection_counts_legacy_peers_without_inventing_managed_state() {
|
||||
assert!(!view.has_draft);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn read_model_exposes_supported_exact_host_peer_actions_individually() {
|
||||
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 exact-host peer");
|
||||
|
||||
let app = wireguard_admin::app::Application::open_from_saved_store(fixture.store.clone())
|
||||
.expect("application opens with an inspect-only legacy peer");
|
||||
let mut view = SessionView::from_application(&app, 0);
|
||||
assert_eq!(view.clients.len(), 1);
|
||||
assert_eq!(view.clients[0].mutable_identity, None);
|
||||
assert_eq!(view.application.as_ref().unwrap().clients.len(), 1);
|
||||
|
||||
let mut state = wireguard_admin::tui::state::UiState {
|
||||
view: Some(view),
|
||||
..Default::default()
|
||||
};
|
||||
assert!(state.select_peer_index(0));
|
||||
assert!(state.selected_rename_available());
|
||||
assert!(state.selected_delete_available());
|
||||
assert!(!state.selected_first_delivery_available());
|
||||
assert!(!state.selected_reissue_available());
|
||||
|
||||
view = SessionView::from_application(&app, 0);
|
||||
assert_eq!(view.saved_peer_count, Some(1));
|
||||
assert!(view.client_states.is_empty());
|
||||
}
|
||||
|
||||
#[derive(Clone, Default)]
|
||||
struct CountingStatistics(Arc<AtomicUsize>);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user