use wgcloak::config::{Config, ServerConfig, MAX_APPLICATION_DATAGRAM_SIZE}; const SECRET: &str = "MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWY="; fn server_text(max_datagram_size: Option) -> String { let network = max_datagram_size .map(|value| format!("[network]\nmax_datagram_size = {value}\n")) .unwrap_or_default(); format!( "[server]\nlisten = \"::1\"\n[backend]\ntarget = \"127.0.0.1:51820\"\n{network}[transports.direct_udp]\nport = 51830\n[[auth.clients]]\nid = \"test\"\nsecret = \"{SECRET}\"\n" ) } #[test] fn server_datagram_capability_defaults_and_accepts_boundary() { let Config::Server(defaults) = Config::from_str(&server_text(None)).unwrap() else { panic!("expected server configuration"); }; assert_eq!(defaults.network.max_datagram_size, 1200); let Config::Server(config) = Config::from_str(&server_text(Some(MAX_APPLICATION_DATAGRAM_SIZE))).unwrap() else { panic!("expected server configuration"); }; config.validate().unwrap(); assert_eq!( config.network.max_datagram_size, MAX_APPLICATION_DATAGRAM_SIZE ); } #[test] fn server_datagram_capability_rejects_unsupported_size() { let Config::Server(config) = Config::from_str(&server_text(Some(MAX_APPLICATION_DATAGRAM_SIZE + 1))).unwrap() else { panic!("expected server configuration"); }; let error = config.validate().unwrap_err().to_string(); assert!(error.contains("network.max_datagram_size")); } #[test] fn server_config_type_remains_constructible_from_toml() { let Config::Server(config): Config = Config::from_str(&server_text(Some(1400))).unwrap() else { panic!("expected server configuration"); }; let _: ServerConfig = config; }