2019-03-28 17:24:19 -04:00
|
|
|
use iron::Chain;
|
|
|
|
use logger::Logger;
|
|
|
|
use router::Router;
|
|
|
|
|
|
|
|
use crate::handlers;
|
|
|
|
|
|
|
|
pub fn init() -> Chain {
|
|
|
|
let mut router = Router::new();
|
|
|
|
|
|
|
|
router.get("/", handlers::hello_world, "root");
|
|
|
|
router.get("/public/*",
|
|
|
|
handlers::AssetsHandler::new("/public/", "src/public/"),
|
|
|
|
"public_assets");
|
2019-04-08 09:00:17 -04:00
|
|
|
router.get("/418", handlers::teapot, "teapot");
|
2019-03-28 17:24:19 -04:00
|
|
|
|
|
|
|
// Create the middleware chain
|
|
|
|
let mut chain = Chain::new(router);
|
|
|
|
|
|
|
|
// Set up basic logging
|
|
|
|
let (logger_before, logger_after) = Logger::new(None);
|
|
|
|
chain.link_before(logger_before);
|
|
|
|
chain.link_after(logger_after);
|
|
|
|
|
|
|
|
chain
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use iron::Headers;
|
|
|
|
use iron::response::Response;
|
|
|
|
use iron::status::Status;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn get_javascript_responds_correctly() {
|
|
|
|
let expected_body = include_str!("public/js/main.js");
|
|
|
|
let chain = super::init();
|
|
|
|
let response = iron_test::request::get(
|
|
|
|
"http://localhost:3000/public/js/main.js",
|
|
|
|
Headers::new(),
|
|
|
|
&chain
|
|
|
|
).unwrap();
|
|
|
|
|
|
|
|
assert_eq!(Some(Status::Ok), response.status);
|
|
|
|
assert_eq!(expected_body, response_body(response).unwrap());
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn get_css_responds_correctly() {
|
|
|
|
let expected_body = include_str!("public/css/main.css");
|
|
|
|
let chain = super::init();
|
|
|
|
let response = iron_test::request::get(
|
|
|
|
"http://localhost:8000/public/css/main.css",
|
|
|
|
Headers::new(),
|
|
|
|
&chain
|
|
|
|
).unwrap();
|
|
|
|
|
|
|
|
assert_eq!(Some(Status::Ok), response.status);
|
|
|
|
assert_eq!(expected_body, response_body(response).unwrap());
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn get_root_responds_with_200() {
|
|
|
|
let chain = super::init();
|
|
|
|
let response = iron_test::request::get(
|
|
|
|
"http://localhost:8000",
|
|
|
|
Headers::new(),
|
|
|
|
&chain
|
|
|
|
).unwrap();
|
|
|
|
|
|
|
|
assert_eq!(Some(Status::Ok), response.status)
|
|
|
|
}
|
|
|
|
|
|
|
|
fn response_body(response: Response) -> Option<String> {
|
|
|
|
if let Some(mut body) = response.body {
|
|
|
|
let mut buf = Vec::new();
|
|
|
|
body.write_body(&mut buf).unwrap();
|
|
|
|
Some(String::from_utf8(buf).unwrap())
|
|
|
|
} else {
|
|
|
|
None
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|