Files
wgcloak/tests/server_capabilities.rs

51 lines
1.7 KiB
Rust

use wgcloak::config::{Config, ServerConfig, MAX_APPLICATION_DATAGRAM_SIZE};
const SECRET: &str = "MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWY=";
fn server_text(max_datagram_size: Option<u16>) -> 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;
}