Skip to content

Commit

Permalink
Add test that uses fill_buf to read response
Browse files Browse the repository at this point in the history
  • Loading branch information
bugadani committed Oct 21, 2023
1 parent 00d559d commit 2cbf54d
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions tests/client.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(async_fn_in_trait)]
#![allow(incomplete_features)]
use embedded_io_adapters::tokio_1::FromTokio;
use embedded_io_async::BufRead;
use embedded_nal_async::{AddrType, IpAddr, Ipv4Addr};
use hyper::server::conn::Http;
use hyper::service::{make_service_fn, service_fn};
Expand Down Expand Up @@ -106,6 +107,56 @@ async fn test_resource_notls() {
t.await.unwrap();
}

#[tokio::test]
async fn test_resource_notls_bufread() {
setup();
let addr = ([127, 0, 0, 1], 0).into();

let service = make_service_fn(|_| async { Ok::<_, hyper::Error>(service_fn(echo)) });

let server = Server::bind(&addr).serve(service);
let addr = server.local_addr();

let (tx, rx) = oneshot::channel();
let t = tokio::spawn(async move {
tokio::select! {
_ = server => {}
_ = rx => {}
}
});

let url = format!("http://127.0.0.1:{}", addr.port());
let mut client = HttpClient::new(&TCP, &LOOPBACK_DNS);
let mut rx_buf = [0; 4096];
let mut resource = client.resource(&url).await.unwrap();
for _ in 0..2 {
let response = resource
.post("/")
.body(b"PING".as_slice())
.content_type(ContentType::TextPlain)
.send(&mut rx_buf)
.await
.unwrap();
let mut body_reader = response.body().reader();

let mut body = vec![];
loop {
let buf = body_reader.fill_buf().await.unwrap();
if buf.is_empty() {
break;
}
body.extend_from_slice(buf);
let buf_len = buf.len();
body_reader.consume(buf_len);
}

assert_eq!(body, b"PING");
}

tx.send(()).unwrap();
t.await.unwrap();
}

#[tokio::test]
#[cfg(feature = "embedded-tls")]
async fn test_resource_rustls() {
Expand Down

0 comments on commit 2cbf54d

Please sign in to comment.