2016-12-29 03:29:12 +00:00
|
|
|
use super::rocket;
|
2017-06-06 20:41:04 +00:00
|
|
|
use rocket::local::{Client, LocalResponse as Response};
|
2016-12-29 03:29:12 +00:00
|
|
|
use rocket::http::Status;
|
|
|
|
|
|
|
|
macro_rules! run_test {
|
|
|
|
($query:expr, $test_fn:expr) => ({
|
|
|
|
let rocket = rocket::ignite()
|
|
|
|
.mount("/", routes![super::hello]);
|
|
|
|
|
2017-06-06 20:41:04 +00:00
|
|
|
let client = Client::new(rocket).unwrap();
|
|
|
|
$test_fn(client.get(format!("/hello{}", $query)).dispatch());
|
2016-12-29 03:29:12 +00:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn age_and_name_params() {
|
2017-04-14 08:59:28 +00:00
|
|
|
run_test!("?age=10&name=john", |mut response: Response| {
|
|
|
|
assert_eq!(response.body_string(),
|
|
|
|
Some("Hello, 10 year old named john!".into()));
|
|
|
|
});
|
2016-12-29 03:29:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn age_param_only() {
|
2017-04-14 08:59:28 +00:00
|
|
|
run_test!("?age=10", |response: Response| {
|
|
|
|
assert_eq!(response.status(), Status::NotFound);
|
|
|
|
});
|
2016-12-29 03:29:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn name_param_only() {
|
2017-04-14 08:59:28 +00:00
|
|
|
run_test!("?name=John", |mut response: Response| {
|
|
|
|
assert_eq!(response.body_string(), Some("Hello John!".into()));
|
|
|
|
});
|
2016-12-29 03:29:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn no_params() {
|
2017-04-14 08:59:28 +00:00
|
|
|
run_test!("", |response: Response| {
|
|
|
|
assert_eq!(response.status(), Status::NotFound);
|
|
|
|
});
|
2016-12-29 03:29:12 +00:00
|
|
|
|
2017-04-14 08:59:28 +00:00
|
|
|
run_test!("?", |response: Response| {
|
|
|
|
assert_eq!(response.status(), Status::NotFound);
|
|
|
|
});
|
2016-12-29 03:29:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn non_existent_params() {
|
2017-04-14 08:59:28 +00:00
|
|
|
run_test!("?x=y", |response: Response| {
|
|
|
|
assert_eq!(response.status(), Status::NotFound);
|
|
|
|
});
|
2016-12-29 03:29:12 +00:00
|
|
|
|
2017-04-14 08:59:28 +00:00
|
|
|
run_test!("?age=10&name=john&complete=true", |response: Response| {
|
|
|
|
assert_eq!(response.status(), Status::NotFound);
|
|
|
|
});
|
2016-12-29 03:29:12 +00:00
|
|
|
}
|