Skip to content

Commit 70ed8aa

Browse files
authored
Merge pull request #142 from gruberb/use_external_http_service_mock
Add external crate http_service_mock, delete local TestBackend
2 parents 56e5076 + 644f47e commit 70ed8aa

File tree

2 files changed

+14
-37
lines changed

2 files changed

+14
-37
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,4 @@ hyper = ["http-service-hyper"]
4545
basic-cookies = "0.1.3"
4646
juniper = "0.10.0"
4747
structopt = "0.2.14"
48+
http-service-mock = "0.1.0"

tests/wildcard.rs

Lines changed: 13 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,11 @@
11
#![feature(futures_api, async_await)]
22

3-
use futures::{executor::block_on, prelude::*};
4-
use http_service::{Body, HttpService, Request, Response};
3+
use http_service::{Body};
4+
use futures::{executor::block_on};
55
use tide::{
6-
head::{Named, NamedSegment},
7-
Server,
6+
head::{Named, NamedSegment}
87
};
9-
10-
struct TestBackend<T: HttpService> {
11-
service: T,
12-
connection: T::Connection,
13-
}
14-
15-
impl<T: HttpService> TestBackend<T> {
16-
fn wrap(service: T) -> Result<Self, <T::ConnectionFuture as TryFuture>::Error> {
17-
let connection = block_on(service.connect().into_future())?;
18-
Ok(Self {
19-
service,
20-
connection,
21-
})
22-
}
23-
24-
fn simulate(&mut self, req: Request) -> Result<Response, <T::Fut as TryFuture>::Error> {
25-
block_on(
26-
self.service
27-
.respond(&mut self.connection, req)
28-
.into_future(),
29-
)
30-
}
31-
}
8+
use http_service_mock::{make_server};
329

3310
struct Number(i32);
3411

@@ -43,20 +20,15 @@ impl std::str::FromStr for Number {
4320
s.parse().map(|num| Number(num))
4421
}
4522
}
46-
4723
async fn add_one(Named(Number(num)): Named<Number>) -> String {
4824
(num + 1).to_string()
4925
}
5026

51-
fn make_server() -> TestBackend<Server<()>> {
52-
let mut app = tide::App::new(());
53-
app.at("/add_one/{num}").get(add_one);
54-
TestBackend::wrap(app.into_http_service()).unwrap()
55-
}
56-
5727
#[test]
5828
fn wildcard() {
59-
let mut server = make_server();
29+
let mut app = tide::App::new(());
30+
app.at("/add_one/{num}").get(add_one);
31+
let mut server = make_server(app.into_http_service()).unwrap();
6032

6133
let req = http::Request::get("/add_one/3")
6234
.body(Body::empty())
@@ -77,7 +49,9 @@ fn wildcard() {
7749

7850
#[test]
7951
fn invalid_segment_error() {
80-
let mut server = make_server();
52+
let mut app = tide::App::new(());
53+
app.at("/add_one/{num}").get(add_one);
54+
let mut server = make_server(app.into_http_service()).unwrap();
8155

8256
let req = http::Request::get("/add_one/a")
8357
.body(Body::empty())
@@ -88,7 +62,9 @@ fn invalid_segment_error() {
8862

8963
#[test]
9064
fn not_found_error() {
91-
let mut server = make_server();
65+
let mut app = tide::App::new(());
66+
app.at("/add_one/{num}").get(add_one);
67+
let mut server = make_server(app.into_http_service()).unwrap();
9268

9369
let req = http::Request::get("/add_one/").body(Body::empty()).unwrap();
9470
let res = server.simulate(req).unwrap();

0 commit comments

Comments
 (0)