1
1
#![ feature( futures_api, async_await) ]
2
2
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 } ;
5
5
use tide:: {
6
- head:: { Named , NamedSegment } ,
7
- Server ,
6
+ head:: { Named , NamedSegment }
8
7
} ;
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} ;
32
9
33
10
struct Number ( i32 ) ;
34
11
@@ -43,20 +20,15 @@ impl std::str::FromStr for Number {
43
20
s. parse ( ) . map ( |num| Number ( num) )
44
21
}
45
22
}
46
-
47
23
async fn add_one ( Named ( Number ( num) ) : Named < Number > ) -> String {
48
24
( num + 1 ) . to_string ( )
49
25
}
50
26
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
-
57
27
#[ test]
58
28
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 ( ) ;
60
32
61
33
let req = http:: Request :: get ( "/add_one/3" )
62
34
. body ( Body :: empty ( ) )
@@ -77,7 +49,9 @@ fn wildcard() {
77
49
78
50
#[ test]
79
51
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 ( ) ;
81
55
82
56
let req = http:: Request :: get ( "/add_one/a" )
83
57
. body ( Body :: empty ( ) )
@@ -88,7 +62,9 @@ fn invalid_segment_error() {
88
62
89
63
#[ test]
90
64
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 ( ) ;
92
68
93
69
let req = http:: Request :: get ( "/add_one/" ) . body ( Body :: empty ( ) ) . unwrap ( ) ;
94
70
let res = server. simulate ( req) . unwrap ( ) ;
0 commit comments