test bad headers

This commit is contained in:
Martin Algesten
2018-07-02 09:23:22 +02:00
parent 6d3dc75e73
commit 8b2d4c0545
2 changed files with 14 additions and 3 deletions

View File

@@ -1,6 +1,5 @@
use agent::Unit; use agent::Unit;
use error::Error; use error::Error;
use header::Header;
use std::collections::HashMap; use std::collections::HashMap;
use std::io::{Cursor, Write}; use std::io::{Cursor, Write};
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
@@ -38,8 +37,7 @@ pub fn make_response(
let mut buf: Vec<u8> = vec![]; let mut buf: Vec<u8> = vec![];
write!(&mut buf, "HTTP/1.1 {} {}\r\n", status, status_text).ok(); write!(&mut buf, "HTTP/1.1 {} {}\r\n", status, status_text).ok();
for hstr in headers.iter() { for hstr in headers.iter() {
let header = hstr.parse::<Header>().unwrap(); write!(&mut buf, "{}\r\n", hstr).ok();
write!(&mut buf, "{}: {}\r\n", header.name(), header.value()).ok();
} }
write!(&mut buf, "\r\n").ok(); write!(&mut buf, "\r\n").ok();
buf.append(&mut body); buf.append(&mut body);

View File

@@ -125,3 +125,16 @@ fn request_debug() {
"Request(GET /my/page?q=z&foo=bar%20baz, [Authorization: abcdef])" "Request(GET /my/page?q=z&foo=bar%20baz, [Authorization: abcdef])"
); );
} }
#[test]
fn non_ascii_header() {
test::set_handler("/non_ascii_header", |_unit| {
test::make_response(200, "OK", vec!["Wörse: Hädör"], vec![])
});
let resp = get("test://host/non_ascii_header")
.set("Bäd", "Headör")
.call();
assert!(!resp.ok());
assert_eq!(resp.status(), 500);
assert_eq!(resp.status_text(), "Bad Header");
}