Skip to content

Commit

Permalink
Merge pull request #142 from gruberb/use_external_http_service_mock
Browse files Browse the repository at this point in the history
Add external crate http_service_mock, delete local TestBackend
  • Loading branch information
tirr-c authored Mar 6, 2019
2 parents 56e5076 + 644f47e commit 70ed8aa
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 37 deletions.
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
50 changes: 13 additions & 37 deletions tests/wildcard.rs
Original file line number Diff line number Diff line change
@@ -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<T: HttpService> {
service: T,
connection: T::Connection,
}

impl<T: HttpService> TestBackend<T> {
fn wrap(service: T) -> Result<Self, <T::ConnectionFuture as TryFuture>::Error> {
let connection = block_on(service.connect().into_future())?;
Ok(Self {
service,
connection,
})
}

fn simulate(&mut self, req: Request) -> Result<Response, <T::Fut as TryFuture>::Error> {
block_on(
self.service
.respond(&mut self.connection, req)
.into_future(),
)
}
}
use http_service_mock::{make_server};

struct Number(i32);

Expand All @@ -43,20 +20,15 @@ impl std::str::FromStr for Number {
s.parse().map(|num| Number(num))
}
}

async fn add_one(Named(Number(num)): Named<Number>) -> String {
(num + 1).to_string()
}

fn make_server() -> TestBackend<Server<()>> {
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())
Expand All @@ -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())
Expand All @@ -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();
Expand Down

0 comments on commit 70ed8aa

Please sign in to comment.