51 lines
1.7 KiB
Rust
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;
|
|
}
|