in src/common/headers.rs [703:748]
fn test_parse_header_whitespace() {
let mut header = Headers::default();
// Test that any number of whitespace characters are accepted before the header value.
// For Content-Length
assert!(header.parse_header_line(b"Content-Length:24").is_ok());
assert!(header.parse_header_line(b"Content-Length: 24").is_ok());
// For ContentType
assert!(header
.parse_header_line(b"Content-Type:application/json")
.is_ok());
assert!(header
.parse_header_line(b"Content-Type: application/json")
.is_ok());
// For Accept
assert!(header.parse_header_line(b"Accept:application/json").is_ok());
assert!(header
.parse_header_line(b"Accept: application/json")
.is_ok());
// For Transfer-Encoding
assert!(header
.parse_header_line(b"Transfer-Encoding:chunked")
.is_ok());
assert!(header.chunked());
assert!(header
.parse_header_line(b"Transfer-Encoding: chunked")
.is_ok());
assert!(header.chunked());
// For Server
assert!(header.parse_header_line(b"Server:xxx.yyy.zzz").is_ok());
assert!(header.parse_header_line(b"Server: xxx.yyy.zzz").is_ok());
// For Expect
assert!(header.parse_header_line(b"Expect:100-continue").is_ok());
assert!(header.parse_header_line(b"Expect: 100-continue").is_ok());
// Test that custom headers' names and values are trimmed before being stored
// inside the HashMap.
assert!(header.parse_header_line(b"Foo:bar").is_ok());
assert_eq!(header.custom_entries().get("Foo").unwrap(), "bar");
assert!(header.parse_header_line(b" Bar : foo ").is_ok());
assert_eq!(header.custom_entries().get("Bar").unwrap(), "foo");
}