v0.25.1
This commit is contained in:
1 parent
87e571c170
commit
fa7abc9e53
308 files changed
+49746
-50237
No files matched your search
@@ -0,0 +1,48 @@
|
||||
mod tests {
|
||||
use super::*;
|
||||
#[test]
|
||||
fn transformations_preserve_distinct_set_cookie_fields() {
|
||||
let source = r#"{"request":[],"response":[{"op":"remove","name":"server"},{"op":"set","name":"x-test","value":"one"},{"op":"append","name":"x-test","value":"two"},{"op":"append","name":"set-cookie","value":"b=2"}]}"#;
|
||||
let rules: HeaderRules = serde_json::from_str(source).unwrap();
|
||||
let compiled = rules.compile().unwrap();
|
||||
let mut headers = HeaderMap::new();
|
||||
headers.insert("server", "upstream".parse().unwrap());
|
||||
headers.append("set-cookie", "a=1".parse().unwrap());
|
||||
apply(&mut headers, &compiled.response);
|
||||
assert!(!headers.contains_key("server"));
|
||||
assert_eq!(headers.get_all("x-test").iter().count(), 2);
|
||||
assert_eq!(headers.get_all("set-cookie").iter().count(), 2);
|
||||
}
|
||||
#[test]
|
||||
fn transport_identity_and_crlf_are_rejected() {
|
||||
for name in [
|
||||
"Host",
|
||||
"Connection",
|
||||
"Content-Length",
|
||||
"x-forwarded-for",
|
||||
"Upgrade",
|
||||
"X-RustProxy-Backend",
|
||||
"X-RustProxy-Backend-Time",
|
||||
"X-Rust-Proxy-Backend-Time",
|
||||
] {
|
||||
let rules = HeaderRules {
|
||||
request: vec![Rule {
|
||||
op: Operation::Set,
|
||||
name: name.into(),
|
||||
value: Some("x".into()),
|
||||
}],
|
||||
response: vec![],
|
||||
};
|
||||
assert!(rules.compile().is_err(), "{name}");
|
||||
}
|
||||
let rules = HeaderRules {
|
||||
request: vec![Rule {
|
||||
op: Operation::Set,
|
||||
name: "x-test".into(),
|
||||
value: Some("hello\r\ninjected: yes".into()),
|
||||
}],
|
||||
response: vec![],
|
||||
};
|
||||
assert!(rules.compile().is_err());
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user