media-collection-crud/src/chain.rs

82 lines
2.2 KiB
Rust

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");
router.get("/418", handlers::teapot, "teapot");
// 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
}
}
}