1
1
use bytes:: Bytes ;
2
- use hyper:: Request ;
3
- use std:: io:: { Cursor , Read } ;
4
-
5
- use conduit:: {
6
- header:: { HeaderValue , IntoHeaderName } ,
7
- Extensions , HeaderMap , Method , Uri ,
8
- } ;
2
+ use hyper:: http:: { header:: IntoHeaderName , HeaderValue , Method , Request } ;
3
+ use std:: io:: Cursor ;
9
4
10
5
pub struct MockRequest {
11
- request : conduit :: Request < Cursor < Bytes > > ,
6
+ request : Request < Cursor < Bytes > > ,
12
7
}
13
8
14
9
impl MockRequest {
15
10
pub fn new ( method : Method , path : & str ) -> MockRequest {
16
- let request = conduit :: Request :: builder ( )
11
+ let request = Request :: builder ( )
17
12
. method ( & method)
18
13
. uri ( path)
19
14
. body ( Cursor :: new ( Bytes :: new ( ) ) )
@@ -36,34 +31,9 @@ impl MockRequest {
36
31
. insert ( name, HeaderValue :: from_str ( value) . unwrap ( ) ) ;
37
32
self
38
33
}
39
- }
40
-
41
- impl conduit:: RequestExt for MockRequest {
42
- fn method ( & self ) -> & Method {
43
- self . request . method ( )
44
- }
45
-
46
- fn uri ( & self ) -> & Uri {
47
- self . request . uri ( )
48
- }
49
-
50
- fn content_length ( & self ) -> Option < u64 > {
51
- Some ( self . request . body ( ) . get_ref ( ) . len ( ) as u64 )
52
- }
53
-
54
- fn headers ( & self ) -> & HeaderMap {
55
- self . request . headers ( )
56
- }
57
34
58
- fn body ( & mut self ) -> & mut dyn Read {
59
- self . request . body_mut ( )
60
- }
61
-
62
- fn extensions ( & self ) -> & Extensions {
63
- self . request . extensions ( )
64
- }
65
- fn extensions_mut ( & mut self ) -> & mut Extensions {
66
- self . request . extensions_mut ( )
35
+ pub fn into_inner ( self ) -> Request < Cursor < Bytes > > {
36
+ self . request
67
37
}
68
38
}
69
39
@@ -78,37 +48,32 @@ impl From<MockRequest> for Request<hyper::Body> {
78
48
mod tests {
79
49
use super :: MockRequest ;
80
50
81
- use conduit :: { header, Method , RequestExt } ;
51
+ use hyper :: http :: { header, Method } ;
82
52
83
53
#[ test]
84
54
fn simple_request_test ( ) {
85
- let mut req = MockRequest :: new ( Method :: GET , "/" ) ;
55
+ let req = MockRequest :: new ( Method :: GET , "/" ) . into_inner ( ) ;
86
56
87
57
assert_eq ! ( req. method( ) , Method :: GET ) ;
88
58
assert_eq ! ( req. uri( ) , "/" ) ;
89
- assert_eq ! ( req. content_length( ) , Some ( 0 ) ) ;
90
59
assert_eq ! ( req. headers( ) . len( ) , 0 ) ;
91
- let mut s = String :: new ( ) ;
92
- req. body ( ) . read_to_string ( & mut s) . expect ( "No body" ) ;
93
- assert_eq ! ( s, "" . to_string( ) ) ;
60
+ assert_eq ! ( req. body( ) . get_ref( ) , "" ) ;
94
61
}
95
62
96
63
#[ test]
97
64
fn request_body_test ( ) {
98
65
let mut req = MockRequest :: new ( Method :: POST , "/articles" ) ;
99
66
req. with_body ( b"Hello world" ) ;
67
+ let req = req. into_inner ( ) ;
100
68
101
69
assert_eq ! ( req. method( ) , Method :: POST ) ;
102
70
assert_eq ! ( req. uri( ) , "/articles" ) ;
103
- let mut s = String :: new ( ) ;
104
- req. body ( ) . read_to_string ( & mut s) . expect ( "No body" ) ;
105
- assert_eq ! ( s, "Hello world" . to_string( ) ) ;
106
- assert_eq ! ( req. content_length( ) , Some ( 11 ) ) ;
71
+ assert_eq ! ( req. body( ) . get_ref( ) , "Hello world" ) ;
107
72
}
108
73
109
74
#[ test]
110
75
fn request_query_test ( ) {
111
- let req = MockRequest :: new ( Method :: POST , "/articles?foo=bar" ) ;
76
+ let req = MockRequest :: new ( Method :: POST , "/articles?foo=bar" ) . into_inner ( ) ;
112
77
assert_eq ! ( req. uri( ) . query( ) . expect( "No query string" ) , "foo=bar" ) ;
113
78
}
114
79
@@ -117,6 +82,7 @@ mod tests {
117
82
let mut req = MockRequest :: new ( Method :: POST , "/articles" ) ;
118
83
req. header ( header:: USER_AGENT , "lulz" ) ;
119
84
req. header ( header:: DNT , "1" ) ;
85
+ let req = req. into_inner ( ) ;
120
86
121
87
assert_eq ! ( req. headers( ) . len( ) , 2 ) ;
122
88
assert_eq ! ( req. headers( ) . get( header:: USER_AGENT ) . unwrap( ) , "lulz" ) ;
0 commit comments