File tree Expand file tree Collapse file tree 3 files changed +54
-0
lines changed Expand file tree Collapse file tree 3 files changed +54
-0
lines changed Original file line number Diff line number Diff line change
1
+ POST / HTTP/1.1
2
+ Host: localhost:8080
3
+ User-Agent: curl/7.54.0
4
+ Accept: */*
5
+ Content-Length: 2
6
+ Content-Type: application/x-www-form-urlencoded
7
+
Original file line number Diff line number Diff line change
1
+ HTTP/1.1 200 OK
2
+ Content-Length: 0
3
+
Original file line number Diff line number Diff line change
1
+ use async_h1:: { server, Body } ;
2
+ use async_std:: task;
3
+ use http:: Response ;
4
+ use std:: { fs:: File , io, path:: PathBuf } ;
5
+
6
+ #[ test]
7
+ fn test_keep_alive ( ) {
8
+ let request = read_fixture ( "request1" ) ;
9
+ let mut actual = Vec :: new ( ) ;
10
+ let request: & [ u8 ] = & request;
11
+ let body: & [ u8 ] = "" . as_bytes ( ) ;
12
+
13
+ let expected = read_fixture ( "response1" ) ;
14
+ let expected: & [ u8 ] = & expected;
15
+
16
+ task:: block_on ( async {
17
+ server:: connect ( request, & mut actual, |req| {
18
+ async { Ok ( Response :: new ( Body :: empty ( body) ) ) }
19
+ } )
20
+ . await
21
+ . unwrap ( ) ;
22
+ assert ! ( actual == expected) ;
23
+ } ) ;
24
+ }
25
+
26
+ fn read_fixture ( name : & str ) -> Vec < u8 > {
27
+ use std:: io:: Read ;
28
+
29
+ let directory: PathBuf = env ! ( "CARGO_MANIFEST_DIR" ) . into ( ) ;
30
+ let path: PathBuf = format ! ( "tests/fixtures/{}.txt" , name) . into ( ) ;
31
+ let mut file = File :: open ( directory. join ( path) ) . expect ( "Reading fixture file didn't work" ) ;
32
+ let mut contents = Vec :: new ( ) ;
33
+ file. read_to_end ( & mut contents)
34
+ . expect ( "Couldn't read fixture files contents" ) ;
35
+
36
+ let mut result = Vec :: < u8 > :: new ( ) ;
37
+ for byte in contents {
38
+ if byte == 0x0A {
39
+ result. push ( 0x0D ) ;
40
+ }
41
+ result. push ( byte) ;
42
+ }
43
+ result
44
+ }
You can’t perform that action at this time.
0 commit comments