diff --git a/tests/async.rs b/tests/async.rs index 9a783bb..f39678f 100644 --- a/tests/async.rs +++ b/tests/async.rs @@ -65,6 +65,42 @@ fn response_text() { rt.block_on(res_future).unwrap(); } +#[test] +fn response_json() { + let _ = env_logger::try_init(); + + let server = server! { + request: b"\ + GET /json HTTP/1.1\r\n\ + user-agent: $USERAGENT\r\n\ + accept: */*\r\n\ + accept-encoding: gzip\r\n\ + host: $HOST\r\n\ + \r\n\ + ", + response: b"\ + HTTP/1.1 200 OK\r\n\ + Content-Length: 7\r\n\ + \r\n\ + \"Hello\"\ + " + }; + + let mut rt = Runtime::new().expect("new rt"); + + let client = Client::new(); + + let res_future = client.get(&format!("http://{}/json", server.addr())) + .send() + .and_then(|mut res| res.json::()) + .and_then(|text| { + assert_eq!("Hello", text); + Ok(()) + }); + + rt.block_on(res_future).unwrap(); +} + #[test] fn multipart() { let _ = env_logger::try_init(); diff --git a/tests/client.rs b/tests/client.rs index 08c8d05..084c381 100644 --- a/tests/client.rs +++ b/tests/client.rs @@ -69,6 +69,37 @@ fn test_response_non_utf_8_text() { assert_eq!(b"\xe4\xbd\xa0\xe5\xa5\xbd", body.as_bytes()); // Now it's utf-8 } +#[test] +fn test_response_json() { + let server = server! { + request: b"\ + GET /json HTTP/1.1\r\n\ + user-agent: $USERAGENT\r\n\ + accept: */*\r\n\ + accept-encoding: gzip\r\n\ + host: $HOST\r\n\ + \r\n\ + ", + response: b"\ + HTTP/1.1 200 OK\r\n\ + Server: test\r\n\ + Content-Length: 7\r\n\ + \r\n\ + \"Hello\"\ + " + }; + + let url = format!("http://{}/json", server.addr()); + let mut res = reqwest::get(&url).unwrap(); + assert_eq!(res.url().as_str(), &url); + assert_eq!(res.status(), reqwest::StatusCode::OK); + assert_eq!(res.headers().get(reqwest::header::SERVER).unwrap(), &"test"); + assert_eq!(res.headers().get(reqwest::header::CONTENT_LENGTH).unwrap(), &"7"); + + let body = res.json::().unwrap(); + assert_eq!("Hello", body); +} + #[test] fn test_response_copy_to() { let server = server! {