This commit is contained in:
Mateusz Gruszczyński committed 2026-10-05 17:05:06 +02:00
1 parent d168ee2afa
commit ddc5c6593f
70 files changed
+2293 -594

No files matched your search

+57
View File
@@ -3,6 +3,11 @@ mod tests {
fn entry() -> LogEntry {
LogEntry {
event: "request",
protocol_error: None,
error_detail: None,
local_addr: Some("192.0.2.1:443".into()),
tls_sni: Some("app.example".into()),
vhost: Some("app".into()),
route: Some("root".into()),
cache_effective_enabled: Some(true),
@@ -108,11 +113,63 @@ mod tests {
#[test]
fn default_json_format_keeps_standard_entry() {
let value = format_entry(&entry(), &JsonFormat::default());
assert_eq!(value["event"], "request");
assert_eq!(value["method"], "GET");
assert_eq!(value["cache"], "HIT");
assert_eq!(value["response_bytes"], 42);
}
#[test]
fn protocol_error_keeps_required_diagnostic_fields_with_custom_mapping() {
let mut item = entry();
item.event = "protocol_error";
item.protocol_error = Some("tls_handshake_error");
item.error_detail = Some("invalid handshake".into());
item.outcome = "protocol_error";
item.status = 0;
item.transport = "tls";
let mut format = JsonFormat::default();
format.fields.insert("site".into(), "vhost".into());
format.static_fields.insert("event".into(), "custom".into());
let value = format_entry(&item, &format);
assert_eq!(value["site"], "app");
assert_eq!(value["event"], "protocol_error");
assert_eq!(value["protocol_error"], "tls_handshake_error");
assert_eq!(value["error_detail"], "invalid handshake");
assert_eq!(value["client_ip"], "192.0.2.10");
assert_eq!(value["transport"], "tls");
assert_eq!(value["outcome"], "protocol_error");
}
#[test]
fn protocol_errors_skip_live_history_and_use_persistent_sink_only() {
let logs = Logs::default();
let mut settings = Settings::default();
settings.file.enabled = true;
logs.configure(settings);
logs.push_protocol_error(
"tls_handshake_error",
"invalid token=topsecret",
"192.0.2.10:50000".parse().unwrap(),
"192.0.2.20:443".parse().unwrap(),
"tls",
"",
0,
Some("app.example".into()),
);
assert!(logs.recent().is_empty());
assert_eq!(logs.sink_dropped.load(Ordering::Relaxed), 1);
}
#[test]
fn protocol_error_detail_is_utf8_safe_bounded_and_redacted() {
let detail = protocol_error_detail(format!("token=topsecret {}", "€".repeat(300)));
assert!(!detail.contains("topsecret"));
assert!(detail.is_char_boundary(detail.len()));
assert!(detail.len() <= 515);
assert!(detail.ends_with("..."));
}
#[test]
fn error_log_defaults_off_and_redacts_common_secret_shapes() {
let settings = ErrorLogSettings::default();