use std::time::Duration;
use crate::certification::CertificationMode;
pub type HeaderField = (String, String);
#[derive(Clone, Debug)]
#[derive(Default)]
pub struct RouteConfig {
pub certification: CertificationMode,
pub ttl: Option<Duration>,
pub headers: Vec<HeaderField>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_route_config_uses_response_only() {
let config = RouteConfig::default();
assert!(matches!(
config.certification,
CertificationMode::ResponseOnly(_)
));
assert!(config.ttl.is_none());
assert!(config.headers.is_empty());
}
#[test]
fn route_config_clone_and_debug() {
let config = RouteConfig {
certification: CertificationMode::skip(),
ttl: Some(Duration::from_secs(300)),
headers: vec![("x-custom".to_string(), "value".to_string())],
};
let cloned = config.clone();
let _debug = format!("{:?}", cloned);
assert!(matches!(cloned.certification, CertificationMode::Skip));
assert_eq!(cloned.ttl, Some(Duration::from_secs(300)));
assert_eq!(cloned.headers.len(), 1);
}
#[test]
fn route_config_with_authenticated_mode() {
let config = RouteConfig {
certification: CertificationMode::authenticated(),
ttl: None,
headers: vec![],
};
assert!(matches!(config.certification, CertificationMode::Full(_)));
}
}