98 lines
2.9 KiB
Rust
98 lines
2.9 KiB
Rust
use std::io::Read;
|
|
use test;
|
|
|
|
use super::super::*;
|
|
|
|
#[test]
|
|
fn header_passing() {
|
|
test::set_handler("/header_passing", |req, _url| {
|
|
assert!(req.has("X-Foo"));
|
|
assert_eq!(req.header("X-Foo").unwrap(), "bar");
|
|
test::make_response(200, "OK", vec!["X-Bar: foo"], vec![])
|
|
});
|
|
let resp = get("test://host/header_passing").set("X-Foo", "bar").call();
|
|
assert_eq!(*resp.status(), 200);
|
|
assert!(resp.has("X-Bar"));
|
|
assert_eq!(resp.header("X-Bar").unwrap(), "foo");
|
|
}
|
|
|
|
#[test]
|
|
fn repeat_non_x_header() {
|
|
test::set_handler("/repeat_non_x_header", |req, _url| {
|
|
assert!(req.has("Accept"));
|
|
assert_eq!(req.header("Accept").unwrap(), "baz");
|
|
test::make_response(200, "OK", vec![], vec![])
|
|
});
|
|
let resp = get("test://host/repeat_non_x_header")
|
|
.set("Accept", "bar")
|
|
.set("Accept", "baz")
|
|
.call();
|
|
assert_eq!(*resp.status(), 200);
|
|
}
|
|
|
|
#[test]
|
|
fn repeat_x_header() {
|
|
test::set_handler("/repeat_x_header", |req, _url| {
|
|
assert!(req.has("X-Forwarded-For"));
|
|
assert_eq!(req.header("X-Forwarded-For").unwrap(), "130.240.19.2");
|
|
assert_eq!(
|
|
req.all("X-Forwarded-For"),
|
|
vec!["130.240.19.2", "130.240.19.3"]
|
|
);
|
|
test::make_response(200, "OK", vec![], vec![])
|
|
});
|
|
let resp = get("test://host/repeat_x_header")
|
|
.set("X-Forwarded-For", "130.240.19.2")
|
|
.set("X-Forwarded-For", "130.240.19.3")
|
|
.call();
|
|
assert_eq!(*resp.status(), 200);
|
|
}
|
|
|
|
#[test]
|
|
fn body_as_text() {
|
|
test::set_handler("/body_as_text", |_req, _url| {
|
|
test::make_response(200, "OK", vec![], "Hello World!".to_string().into_bytes())
|
|
});
|
|
let resp = get("test://host/body_as_text").call();
|
|
let text = resp.into_string().unwrap();
|
|
assert_eq!(text, "Hello World!");
|
|
}
|
|
|
|
#[test]
|
|
fn body_as_json() {
|
|
test::set_handler("/body_as_json", |_req, _url| {
|
|
test::make_response(
|
|
200,
|
|
"OK",
|
|
vec![],
|
|
"{\"hello\":\"world\"}".to_string().into_bytes(),
|
|
)
|
|
});
|
|
let resp = get("test://host/body_as_json").call();
|
|
let json = resp.into_json().unwrap();
|
|
assert_eq!(json["hello"], "world");
|
|
}
|
|
|
|
#[test]
|
|
fn body_as_reader() {
|
|
test::set_handler("/body_as_reader", |_req, _url| {
|
|
test::make_response(200, "OK", vec![], "abcdefgh".to_string().into_bytes())
|
|
});
|
|
let resp = get("test://host/body_as_reader").call();
|
|
let mut reader = resp.into_reader();
|
|
let mut text = String::new();
|
|
reader.read_to_string(&mut text).unwrap();
|
|
assert_eq!(text, "abcdefgh");
|
|
}
|
|
|
|
#[test]
|
|
fn escape_path() {
|
|
test::set_handler("/escape_path%20here", |_req, _url| {
|
|
test::make_response(200, "OK", vec![], vec![])
|
|
});
|
|
let resp = get("test://host/escape_path here").call();
|
|
let vec = resp.to_write_vec();
|
|
let s = String::from_utf8_lossy(&vec);
|
|
assert!(s.contains("GET /escape_path%20here HTTP/1.1"))
|
|
}
|