diff --git a/Cargo.toml b/Cargo.toml index ccbad2c5b..a32df42ad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,3 +45,4 @@ hyper = ["http-service-hyper"] basic-cookies = "0.1.3" juniper = "0.10.0" structopt = "0.2.14" +http-service-mock = "0.1.0" \ No newline at end of file diff --git a/tests/wildcard.rs b/tests/wildcard.rs index 13079c7da..b4fd5d011 100644 --- a/tests/wildcard.rs +++ b/tests/wildcard.rs @@ -1,34 +1,11 @@ #![feature(futures_api, async_await)] -use futures::{executor::block_on, prelude::*}; -use http_service::{Body, HttpService, Request, Response}; +use http_service::{Body}; +use futures::{executor::block_on}; use tide::{ - head::{Named, NamedSegment}, - Server, + head::{Named, NamedSegment} }; - -struct TestBackend { - service: T, - connection: T::Connection, -} - -impl TestBackend { - fn wrap(service: T) -> Result::Error> { - let connection = block_on(service.connect().into_future())?; - Ok(Self { - service, - connection, - }) - } - - fn simulate(&mut self, req: Request) -> Result::Error> { - block_on( - self.service - .respond(&mut self.connection, req) - .into_future(), - ) - } -} +use http_service_mock::{make_server}; struct Number(i32); @@ -43,20 +20,15 @@ impl std::str::FromStr for Number { s.parse().map(|num| Number(num)) } } - async fn add_one(Named(Number(num)): Named) -> String { (num + 1).to_string() } -fn make_server() -> TestBackend> { - let mut app = tide::App::new(()); - app.at("/add_one/{num}").get(add_one); - TestBackend::wrap(app.into_http_service()).unwrap() -} - #[test] fn wildcard() { - let mut server = make_server(); + let mut app = tide::App::new(()); + app.at("/add_one/{num}").get(add_one); + let mut server = make_server(app.into_http_service()).unwrap(); let req = http::Request::get("/add_one/3") .body(Body::empty()) @@ -77,7 +49,9 @@ fn wildcard() { #[test] fn invalid_segment_error() { - let mut server = make_server(); + let mut app = tide::App::new(()); + app.at("/add_one/{num}").get(add_one); + let mut server = make_server(app.into_http_service()).unwrap(); let req = http::Request::get("/add_one/a") .body(Body::empty()) @@ -88,7 +62,9 @@ fn invalid_segment_error() { #[test] fn not_found_error() { - let mut server = make_server(); + let mut app = tide::App::new(()); + app.at("/add_one/{num}").get(add_one); + let mut server = make_server(app.into_http_service()).unwrap(); let req = http::Request::get("/add_one/").body(Body::empty()).unwrap(); let res = server.simulate(req).unwrap();