query string in path
This commit is contained in:
11
src/conn.rs
11
src/conn.rs
@@ -29,11 +29,14 @@ impl ConnectionPool {
|
||||
.unwrap_or(false);
|
||||
|
||||
let hostname = url.host_str().unwrap_or("localhost"); // is localhost a good alternative?
|
||||
let query_string = if request.query.len() > 0 {
|
||||
format!("{}", request.query)
|
||||
} else {
|
||||
"".to_string()
|
||||
|
||||
let query_string = match (url.query(), request.query.len() > 0) {
|
||||
(Some(urlq), true) => format!("?{}{}", urlq, request.query),
|
||||
(Some(urlq), false) => format!("?{}", urlq),
|
||||
(None, true) => format!("?{}", request.query),
|
||||
(None, false) => "".to_string(),
|
||||
};
|
||||
|
||||
let is_secure = url.scheme().eq_ignore_ascii_case("https");
|
||||
|
||||
let cookie_headers: Vec<_> = {
|
||||
|
||||
@@ -27,3 +27,28 @@ fn escaped_query_string() {
|
||||
let s = String::from_utf8_lossy(&vec);
|
||||
assert!(s.contains("GET /escaped_query_string?foo=bar&baz=yo%20lo HTTP/1.1"))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn query_in_path() {
|
||||
test::set_handler("/query_in_path", |_req, _url| {
|
||||
test::make_response(200, "OK", vec![], vec![])
|
||||
});
|
||||
let resp = get("test://host/query_in_path?foo=bar").call();
|
||||
let vec = resp.to_write_vec();
|
||||
let s = String::from_utf8_lossy(&vec);
|
||||
assert!(s.contains("GET /query_in_path?foo=bar HTTP/1.1"))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn query_in_path_and_req() {
|
||||
test::set_handler("/query_in_path_and_req", |_req, _url| {
|
||||
test::make_response(200, "OK", vec![], vec![])
|
||||
});
|
||||
let resp = get("test://host/query_in_path_and_req?foo=bar")
|
||||
.query("baz", "1 2 3")
|
||||
.call();
|
||||
let vec = resp.to_write_vec();
|
||||
let s = String::from_utf8_lossy(&vec);
|
||||
println!("{}", s);
|
||||
assert!(s.contains("GET /query_in_path_and_req?foo=barbaz=1%202%203 HTTP/1.1"))
|
||||
}
|
||||
|
||||
@@ -84,3 +84,14 @@ fn body_as_reader() {
|
||||
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"))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user