This commit is contained in:
Mateusz Gruszczyński committed 2026-10-05 19:05:55 +02:00
1 parent ddc5c6593f
commit b9d137eee1
63 files changed
+1232 -445

No files matched your search

+25 -1
View File
@@ -5,9 +5,14 @@ mod tests {
LogEntry {
event: "request",
protocol_error: None,
reason: None,
error_detail: None,
error: None,
local_addr: Some("192.0.2.1:443".into()),
tls_sni: Some("app.example".into()),
sni: Some("app.example".into()),
authority: None,
matched_by: None,
vhost: Some("app".into()),
route: Some("root".into()),
cache_effective_enabled: Some(true),
@@ -95,7 +100,7 @@ mod tests {
fn per_vhost_file_mode_has_safe_names_and_requires_directory() {
assert_eq!(vhost_log_name(Some("app-1")), "app-1");
assert_eq!(vhost_log_name(None), "_unmatched");
assert_eq!(vhost_log_name(Some("bad/name")), "bad_name");
assert_eq!(vhost_log_name(Some("bad/name")), "_unmatched");
let mut settings = Settings::default();
settings.file.enabled = true;
settings.file.per_vhost = true;
@@ -124,7 +129,12 @@ mod tests {
let mut item = entry();
item.event = "protocol_error";
item.protocol_error = Some("tls_handshake_error");
item.reason = Some("tls_handshake_error");
item.error_detail = Some("invalid handshake".into());
item.error = Some("invalid handshake".into());
item.sni = Some("app.example".into());
item.authority = Some("app.example:443".into());
item.matched_by = Some("sni");
item.outcome = "protocol_error";
item.status = 0;
item.transport = "tls";
@@ -135,7 +145,12 @@ mod tests {
assert_eq!(value["site"], "app");
assert_eq!(value["event"], "protocol_error");
assert_eq!(value["protocol_error"], "tls_handshake_error");
assert_eq!(value["reason"], "tls_handshake_error");
assert_eq!(value["error_detail"], "invalid handshake");
assert_eq!(value["error"], "invalid handshake");
assert_eq!(value["sni"], "app.example");
assert_eq!(value["authority"], "app.example:443");
assert_eq!(value["matched_by"], "sni");
assert_eq!(value["client_ip"], "192.0.2.10");
assert_eq!(value["transport"], "tls");
assert_eq!(value["outcome"], "protocol_error");
@@ -170,6 +185,15 @@ mod tests {
assert!(detail.ends_with("..."));
}
#[test]
fn protocol_identity_fields_are_bounded_and_strip_controls() {
let value = protocol_identity_field(Some(format!("host\n{}", "€".repeat(300)))).unwrap();
assert!(!value.contains('\n'));
assert!(value.is_char_boundary(value.len()));
assert!(value.len() <= 515);
assert!(value.ends_with("..."));
}
#[test]
fn error_log_defaults_off_and_redacts_common_secret_shapes() {
let settings = ErrorLogSettings::default();