use folk_plugin_http::config::{CompressionConfig, HttpConfig};
use folk_plugin_http::folk_plugin_factory;
#[test]
fn compression_min_size_default() {
let config = CompressionConfig::default();
assert_eq!(config.min_size, 256);
}
#[test]
fn compression_min_size_parse_valid() {
let toml = r#"
[compression]
enabled = true
min_size = 65535
"#;
let config: HttpConfig = toml::from_str(toml).unwrap();
assert_eq!(config.compression.min_size, 65535);
}
#[test]
fn compression_min_size_parse_human() {
let toml = r#"
[compression]
enabled = true
min_size = "1kb"
"#;
let config: HttpConfig = toml::from_str(toml).unwrap();
assert_eq!(config.compression.min_size, 1024);
}
#[test]
fn compression_min_size_exceeds_u16_max_rejected() {
let config = serde_json::json!({
"compression": {
"enabled": true,
"min_size": u16::MAX as u64 + 1
}
});
let err = folk_plugin_factory()
.create(config)
.err()
.expect("expected an error for min_size > u16::MAX");
let msg = err.to_string();
assert!(
msg.contains("compression.min_size"),
"error should mention field name, got: {msg}"
);
assert!(
msg.contains("65535"),
"error should mention the max value, got: {msg}"
);
}
#[test]
fn compression_min_size_at_u16_max_accepted() {
let config = serde_json::json!({
"compression": {
"enabled": true,
"min_size": u16::MAX as u64
}
});
assert!(folk_plugin_factory().create(config).is_ok());
}