use std::str::FromStr; use bytes::Bytes; use h2::client; use http::header::CONTENT_TYPE; use http::{Method, Request}; use tokio::net::TcpStream; mod utils; #[tokio::test] #[ntest::timeout(10_000)] pub async fn test_simple_flow() -> anyhow::Result<()> { let addr = utils::start_simple_server().await?; let tcp = TcpStream::connect(&addr).await?; let (mut client, h2) = client::handshake(tcp).await?; let req = Request::builder() .method(Method::PUT) .uri(format!("http://{addr}/new-buck")) .header(CONTENT_TYPE, "application/xml") .body(())?; tokio::spawn(async move { if let Err(e) = h2.await { println!("GOT ERR={:?}", e); } }); let (response, mut stream) = client.send_request(req, false).unwrap(); let a = r###" "###; stream.send_data(Bytes::from(a), true)?; let res = response.await?; assert_eq!(res.status().as_u16(), 200); Ok(()) }