File tree 3 files changed +52
-0
lines changed
3 files changed +52
-0
lines changed Original file line number Diff line number Diff line change @@ -354,6 +354,8 @@ where
354
354
355
355
#[ cfg( test) ]
356
356
mod tests {
357
+ use http_body:: Body as _;
358
+
357
359
use super :: Body ;
358
360
359
361
#[ test]
@@ -362,4 +364,11 @@ mod tests {
362
364
let body = Body :: from ( & test_data[ ..] ) ;
363
365
assert_eq ! ( body. as_bytes( ) , Some ( & test_data[ ..] ) ) ;
364
366
}
367
+
368
+ #[ test]
369
+ fn body_exact_length ( ) {
370
+ assert_eq ! ( Body :: empty( ) . size_hint( ) . exact( ) , None ) ;
371
+ assert_eq ! ( Body :: reusable( "abc" . into( ) ) . size_hint( ) . exact( ) , Some ( 3 ) ) ;
372
+ assert_eq ! ( Body :: streaming( Body :: reusable( "abc" . into( ) ) ) . size_hint( ) . exact( ) , None ) ;
373
+ }
365
374
}
Original file line number Diff line number Diff line change @@ -21,6 +21,27 @@ fn test_response_text() {
21
21
assert_eq ! ( b"Hello" , body. as_bytes( ) ) ;
22
22
}
23
23
24
+ #[ test]
25
+ fn donot_set_conent_length_0_if_have_no_body ( ) {
26
+ let server = server:: http ( move |req| async move {
27
+ let headers = req. headers ( ) ;
28
+ assert_eq ! ( headers. get( "content-length" ) , None ) ;
29
+ dbg ! ( & headers) ;
30
+ http:: Response :: default ( )
31
+ } ) ;
32
+
33
+ let url = format ! ( "http://{}/conent-length" , server. addr( ) ) ;
34
+ let res = reqwest:: blocking:: Client :: builder ( )
35
+ . no_proxy ( )
36
+ . build ( )
37
+ . expect ( "client builder" )
38
+ . get ( & url)
39
+ . send ( )
40
+ . expect ( "request" ) ;
41
+
42
+ assert_eq ! ( res. status( ) , reqwest:: StatusCode :: OK ) ;
43
+ }
44
+
24
45
#[ test]
25
46
#[ cfg( feature = "charset" ) ]
26
47
fn test_response_non_utf_8_text ( ) {
Original file line number Diff line number Diff line change @@ -54,6 +54,28 @@ async fn auto_headers() {
54
54
assert_eq ! ( res. remote_addr( ) , Some ( server. addr( ) ) ) ;
55
55
}
56
56
57
+ #[ tokio:: test]
58
+ async fn donot_set_conent_length_0_if_have_no_body ( ) {
59
+ let server = server:: http ( move |req| async move {
60
+ let headers = req. headers ( ) ;
61
+ assert_eq ! ( headers. get( "content-length" ) , None ) ;
62
+ dbg ! ( & headers) ;
63
+ http:: Response :: default ( )
64
+ } ) ;
65
+
66
+ let url = format ! ( "http://{}/conent-length" , server. addr( ) ) ;
67
+ let res = reqwest:: Client :: builder ( )
68
+ . no_proxy ( )
69
+ . build ( )
70
+ . expect ( "client builder" )
71
+ . get ( & url)
72
+ . send ( )
73
+ . await
74
+ . expect ( "request" ) ;
75
+
76
+ assert_eq ! ( res. status( ) , reqwest:: StatusCode :: OK ) ;
77
+ }
78
+
57
79
#[ tokio:: test]
58
80
async fn user_agent ( ) {
59
81
let server = server:: http ( move |req| async move {
You can’t perform that action at this time.
0 commit comments