iron-test 0.6.0

Mocking suite for Iron requests.
Documentation
extern crate iron;
extern crate iron_test;
extern crate router;

use iron::{Handler, status};
use iron::prelude::*;

use router::Router;

struct RouterHandler;

impl Handler for RouterHandler {
    fn handle(&self, req: &mut Request) -> IronResult<Response> {
        let params = req.extensions
            .get::<router::Router>()
            .expect("Expected to get a Router from the request extensions.");
        let id = params.find("id").unwrap();

        Ok(Response::with((status::Ok, id)))
    }
}

fn app_router() -> Router {
    let mut router = Router::new();
    router.get("/:id", RouterHandler, "router");
    router
}

fn main() {
    Iron::new(app_router()).http("localhost:3000").unwrap();
}

#[cfg(test)]
mod test {
    use iron::Headers;
    use iron::prelude::*;

    use iron_test::{request, response};

    use router::Router;

    use super::{app_router, RouterHandler};

    #[test]
    fn test_router() {
        let response = request::get("http://localhost:3000/1",
                                    Headers::new(),
                                    &app_router());
        let result = extract_body_to_bytes(response.unwrap());

        assert_eq!(result, b"1");
    }
}