refactor into unit

This commit is contained in:
Martin Algesten
2018-06-30 13:05:36 +02:00
parent 0334f9608b
commit f5a4c83819
13 changed files with 349 additions and 297 deletions

View File

@@ -6,18 +6,18 @@ use super::super::*;
fn agent_reuse_headers() {
let agent = agent().set("Authorization", "Foo 12345").build();
test::set_handler("/agent_reuse_headers", |req, _url| {
assert!(req.has("Authorization"));
assert_eq!(req.header("Authorization").unwrap(), "Foo 12345");
test::set_handler("/agent_reuse_headers", |unit| {
assert!(unit.has("Authorization"));
assert_eq!(unit.header("Authorization").unwrap(), "Foo 12345");
test::make_response(200, "OK", vec!["X-Call: 1"], vec![])
});
let resp = agent.get("test://host/agent_reuse_headers").call();
assert_eq!(resp.header("X-Call").unwrap(), "1");
test::set_handler("/agent_reuse_headers", |req, _url| {
assert!(req.has("Authorization"));
assert_eq!(req.header("Authorization").unwrap(), "Foo 12345");
test::set_handler("/agent_reuse_headers", |unit| {
assert!(unit.has("Authorization"));
assert_eq!(unit.header("Authorization").unwrap(), "Foo 12345");
test::make_response(200, "OK", vec!["X-Call: 2"], vec![])
});
@@ -29,7 +29,7 @@ fn agent_reuse_headers() {
fn agent_cookies() {
let agent = agent().build();
test::set_handler("/agent_cookies", |_req, _url| {
test::set_handler("/agent_cookies", |_unit| {
test::make_response(
200,
"OK",
@@ -43,7 +43,7 @@ fn agent_cookies() {
assert!(agent.cookie("foo").is_some());
assert_eq!(agent.cookie("foo").unwrap().value(), "bar baz");
test::set_handler("/agent_cookies", |_req, _url| {
test::set_handler("/agent_cookies", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});

View File

@@ -4,9 +4,9 @@ use super::super::*;
#[test]
fn basic_auth() {
test::set_handler("/basic_auth", |req, _url| {
test::set_handler("/basic_auth", |unit| {
assert_eq!(
req.header("Authorization").unwrap(),
unit.header("Authorization").unwrap(),
"Basic bWFydGluOnJ1YmJlcm1hc2hndW0="
);
test::make_response(200, "OK", vec![], vec![])
@@ -19,8 +19,8 @@ fn basic_auth() {
#[test]
fn kind_auth() {
test::set_handler("/kind_auth", |req, _url| {
assert_eq!(req.header("Authorization").unwrap(), "Digest abcdefgh123");
test::set_handler("/kind_auth", |unit| {
assert_eq!(unit.header("Authorization").unwrap(), "Digest abcdefgh123");
test::make_response(200, "OK", vec![], vec![])
});
let resp = get("test://host/kind_auth")

View File

@@ -5,7 +5,7 @@ use super::super::*;
#[test]
fn transfer_encoding_bogus() {
test::set_handler("/transfer_encoding_bogus", |_req, _url| {
test::set_handler("/transfer_encoding_bogus", |_unit| {
test::make_response(
200,
"OK",
@@ -26,7 +26,7 @@ fn transfer_encoding_bogus() {
#[test]
fn content_length_limited() {
test::set_handler("/content_length_limited", |_req, _url| {
test::set_handler("/content_length_limited", |_unit| {
test::make_response(
200,
"OK",
@@ -44,7 +44,7 @@ fn content_length_limited() {
#[test]
// content-length should be ignored when chunked
fn ignore_content_length_when_chunked() {
test::set_handler("/ignore_content_length_when_chunked", |_req, _url| {
test::set_handler("/ignore_content_length_when_chunked", |_unit| {
test::make_response(
200,
"OK",
@@ -63,7 +63,7 @@ fn ignore_content_length_when_chunked() {
#[test]
fn no_reader_on_head() {
test::set_handler("/no_reader_on_head", |_req, _url| {
test::set_handler("/no_reader_on_head", |_unit| {
// so this is technically illegal, we return a body for the HEAD request.
test::make_response(
200,

View File

@@ -4,7 +4,7 @@ use super::super::*;
#[test]
fn content_length_on_str() {
test::set_handler("/content_length_on_str", |_req, _url| {
test::set_handler("/content_length_on_str", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});
let resp = post("test://host/content_length_on_str").send_string("Hello World!!!");
@@ -15,7 +15,7 @@ fn content_length_on_str() {
#[test]
fn user_set_content_length_on_str() {
test::set_handler("/user_set_content_length_on_str", |_req, _url| {
test::set_handler("/user_set_content_length_on_str", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});
let resp = post("test://host/user_set_content_length_on_str")
@@ -29,7 +29,7 @@ fn user_set_content_length_on_str() {
#[test]
#[cfg(feature = "json")]
fn content_length_on_json() {
test::set_handler("/content_length_on_json", |_req, _url| {
test::set_handler("/content_length_on_json", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});
let mut json = SerdeMap::new();
@@ -45,7 +45,7 @@ fn content_length_on_json() {
#[test]
fn content_length_and_chunked() {
test::set_handler("/content_length_and_chunked", |_req, _url| {
test::set_handler("/content_length_and_chunked", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});
let resp = post("test://host/content_length_and_chunked")
@@ -60,7 +60,7 @@ fn content_length_and_chunked() {
#[test]
#[cfg(feature = "charset")]
fn str_with_encoding() {
test::set_handler("/str_with_encoding", |_req, _url| {
test::set_handler("/str_with_encoding", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});
let resp = post("test://host/str_with_encoding")

View File

@@ -1,4 +1,4 @@
use agent::Request;
use agent::Unit;
use agent::Stream;
use error::Error;
use header::Header;
@@ -6,7 +6,6 @@ use std::collections::HashMap;
use std::io::Cursor;
use std::io::Write;
use std::sync::{Arc, Mutex};
use url::Url;
mod agent_test;
mod auth;
@@ -16,7 +15,7 @@ mod query_string;
mod range;
mod simple;
type RequestHandler = Fn(&Request, &Url) -> Result<Stream, Error> + Send + 'static;
type RequestHandler = Fn(&Unit) -> Result<Stream, Error> + Send + 'static;
lazy_static! {
pub static ref TEST_HANDLERS: Arc<Mutex<HashMap<String, Box<RequestHandler>>>> =
@@ -25,7 +24,7 @@ lazy_static! {
pub fn set_handler<H>(path: &str, handler: H)
where
H: Fn(&Request, &Url) -> Result<Stream, Error> + Send + 'static,
H: Fn(&Unit) -> Result<Stream, Error> + Send + 'static,
{
let mut handlers = TEST_HANDLERS.lock().unwrap();
handlers.insert(path.to_string(), Box::new(handler));
@@ -50,9 +49,9 @@ pub fn make_response(
Ok(Stream::Test(Box::new(cursor), write))
}
pub fn resolve_handler(req: &Request, url: &Url) -> Result<Stream, Error> {
pub fn resolve_handler(unit: &Unit) -> Result<Stream, Error> {
let mut handlers = TEST_HANDLERS.lock().unwrap();
let path = url.path();
let path = unit.url.path();
let handler = handlers.remove(path).unwrap();
handler(req, url)
handler(unit)
}

View File

@@ -4,7 +4,7 @@ use super::super::*;
#[test]
fn no_query_string() {
test::set_handler("/no_query_string", |_req, _url| {
test::set_handler("/no_query_string", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});
let resp = get("test://host/no_query_string").call();
@@ -15,7 +15,7 @@ fn no_query_string() {
#[test]
fn escaped_query_string() {
test::set_handler("/escaped_query_string", |_req, _url| {
test::set_handler("/escaped_query_string", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});
let resp = get("test://host/escaped_query_string")
@@ -29,7 +29,7 @@ fn escaped_query_string() {
#[test]
fn query_in_path() {
test::set_handler("/query_in_path", |_req, _url| {
test::set_handler("/query_in_path", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});
let resp = get("test://host/query_in_path?foo=bar").call();
@@ -40,7 +40,7 @@ fn query_in_path() {
#[test]
fn query_in_path_and_req() {
test::set_handler("/query_in_path_and_req", |_req, _url| {
test::set_handler("/query_in_path_and_req", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});
let resp = get("test://host/query_in_path_and_req?foo=bar")

View File

@@ -5,9 +5,9 @@ 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::set_handler("/header_passing", |unit| {
assert!(unit.has("X-Foo"));
assert_eq!(unit.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();
@@ -18,9 +18,9 @@ fn header_passing() {
#[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::set_handler("/repeat_non_x_header", |unit| {
assert!(unit.has("Accept"));
assert_eq!(unit.header("Accept").unwrap(), "baz");
test::make_response(200, "OK", vec![], vec![])
});
let resp = get("test://host/repeat_non_x_header")
@@ -32,11 +32,11 @@ fn repeat_non_x_header() {
#[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");
test::set_handler("/repeat_x_header", |unit| {
assert!(unit.has("X-Forwarded-For"));
assert_eq!(unit.header("X-Forwarded-For").unwrap(), "130.240.19.2");
assert_eq!(
req.all("X-Forwarded-For"),
unit.all("X-Forwarded-For"),
vec!["130.240.19.2", "130.240.19.3"]
);
test::make_response(200, "OK", vec![], vec![])
@@ -50,7 +50,7 @@ fn repeat_x_header() {
#[test]
fn body_as_text() {
test::set_handler("/body_as_text", |_req, _url| {
test::set_handler("/body_as_text", |_unit| {
test::make_response(200, "OK", vec![], "Hello World!".to_string().into_bytes())
});
let resp = get("test://host/body_as_text").call();
@@ -61,7 +61,7 @@ fn body_as_text() {
#[test]
#[cfg(feature = "json")]
fn body_as_json() {
test::set_handler("/body_as_json", |_req, _url| {
test::set_handler("/body_as_json", |_unit| {
test::make_response(
200,
"OK",
@@ -76,7 +76,7 @@ fn body_as_json() {
#[test]
fn body_as_reader() {
test::set_handler("/body_as_reader", |_req, _url| {
test::set_handler("/body_as_reader", |_unit| {
test::make_response(200, "OK", vec![], "abcdefgh".to_string().into_bytes())
});
let resp = get("test://host/body_as_reader").call();
@@ -88,7 +88,7 @@ fn body_as_reader() {
#[test]
fn escape_path() {
test::set_handler("/escape_path%20here", |_req, _url| {
test::set_handler("/escape_path%20here", |_unit| {
test::make_response(200, "OK", vec![], vec![])
});
let resp = get("test://host/escape_path here").call();