Skip to content

Commit 69e57a9

Browse files
committed
test: update client_http2_upgrade test
1 parent 558c0bf commit 69e57a9

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

tests/legacy_client.rs

+26-3
Original file line numberDiff line numberDiff line change
@@ -812,6 +812,7 @@ fn client_upgrade() {
812812
fn client_http2_upgrade() {
813813
use http::{Method, Response, Version};
814814
use hyper::service::service_fn;
815+
use tokio::io::{AsyncReadExt, AsyncWriteExt};
815816
use tokio::net::TcpListener;
816817

817818
let _ = pretty_env_logger::try_init();
@@ -834,7 +835,7 @@ fn client_http2_upgrade() {
834835
let _ = builder
835836
.serve_connection_with_upgrades(
836837
stream,
837-
service_fn(|req| async move {
838+
service_fn(|mut req| async move {
838839
assert_eq!(req.headers().get("host"), None);
839840
assert_eq!(req.version(), Version::HTTP_2);
840841
assert_eq!(
@@ -845,7 +846,22 @@ fn client_http2_upgrade() {
845846
req.extensions().get::<hyper::ext::Protocol>(),
846847
Some(&hyper::ext::Protocol::from_static("websocket"))
847848
);
848-
Ok::<_, hyper::Error>(Response::new(Empty::<Bytes>::default()))
849+
850+
let on_upgrade = req.extensions_mut().remove::<hyper::upgrade::OnUpgrade>();
851+
tokio::spawn(async move {
852+
let on_upgrade = on_upgrade.unwrap();
853+
let upgraded = on_upgrade.await.unwrap();
854+
let mut io = TokioIo::new(upgraded);
855+
856+
let mut vec = vec![];
857+
io.read_buf(&mut vec).await.unwrap();
858+
assert_eq!(vec, b"foo=bar");
859+
io.write_all(b"bar=foo").await.unwrap();
860+
});
861+
862+
Ok::<_, hyper::Error>(Response::new(Full::<Bytes>::new(Bytes::from_static(
863+
b"foobar=ready",
864+
))))
849865
}),
850866
)
851867
.await
@@ -866,7 +882,14 @@ fn client_http2_upgrade() {
866882

867883
assert_eq!(res.status(), 200);
868884
assert_eq!(res.version(), Version::HTTP_2);
869-
let _ = rt.block_on(hyper::upgrade::on(res)).expect("on_upgrade");
885+
886+
let upgraded = rt.block_on(hyper::upgrade::on(res)).expect("on_upgrade");
887+
let mut io = TokioIo::new(upgraded);
888+
889+
rt.block_on(io.write_all(b"foo=bar")).unwrap();
890+
let mut vec = vec![];
891+
rt.block_on(io.read_to_end(&mut vec)).unwrap();
892+
assert_eq!(vec, b"bar=foo");
870893
}
871894

872895
#[cfg(not(miri))]

0 commit comments

Comments
 (0)