This commit is contained in:
Mateusz Gruszczyński committed 2026-10-17 11:57:16 +02:00
1 parent 6b937aaf85
commit 87c8393d86
79 files changed
+6727 -297

No files matched your search

+32
View File
@@ -24,6 +24,38 @@ mod tests {
assert!(settings.enabled());
}
#[tokio::test]
async fn narrowed_request_headers_preserve_encoding_and_skip_decisions() {
for accept in ["gzip", "br;q=0.8, gzip;q=0.5", "zstd", "identity", "*;q=0"] {
for method in [Method::GET, Method::HEAD, Method::POST] {
for skip in [None, Some("range"), Some("cache-control")] {
let mut headers = HeaderMap::new();
headers.append("accept-encoding", accept.parse().unwrap());
headers.append("accept-encoding", "deflate;q=0".parse().unwrap());
headers.append("cache-control", "max-age=0".parse().unwrap());
if let Some(name) = skip {
headers.append(name, if name == "range" { "bytes=0-3" } else { "no-transform" }.parse().unwrap());
}
headers.insert("cookie", "session=private".parse().unwrap());
headers.insert("authorization", "Bearer test".parse().unwrap());
headers.insert("x-large-custom", "x".repeat(4096).parse().unwrap());
let selected = request_headers(&headers);
for name in ["accept-encoding", "range", "cache-control"] {
assert_eq!(headers.get_all(name).iter().collect::<Vec<_>>(), selected.get_all(name).iter().collect::<Vec<_>>());
}
assert!(!selected.contains_key("cookie"));
assert!(!selected.contains_key("authorization"));
let full = encode(response(), &headers, &method, &Settings::default()).await;
let narrow = encode(response(), &selected, &method, &Settings::default()).await;
assert_eq!(full.status(), narrow.status());
assert_eq!(full.headers(), narrow.headers());
assert_eq!(full.into_body().collect().await.unwrap().to_bytes(), narrow.into_body().collect().await.unwrap().to_bytes());
}
}
}
assert!(request_headers(&HeaderMap::new()).is_empty());
}
#[test]
fn scoped_codec_overrides_keep_global_codecs_authoritative() {
let global = Settings::default();