Test CONNECT is accepted
This commit is contained in:
committed by
Sean McArthur
parent
f7b3cf6d29
commit
5041a4d428
@@ -113,6 +113,25 @@ impl Mock<frame::Headers> {
|
|||||||
Mock(frame)
|
Mock(frame)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn method<M>(self, method: M) -> Self
|
||||||
|
where
|
||||||
|
M: TryInto<http::Method>,
|
||||||
|
M::Error: fmt::Debug,
|
||||||
|
{
|
||||||
|
let method = method.try_into().unwrap();
|
||||||
|
let (id, _, fields) = self.into_parts();
|
||||||
|
let frame = frame::Headers::new(
|
||||||
|
id,
|
||||||
|
frame::Pseudo {
|
||||||
|
scheme: None,
|
||||||
|
method: Some(method),
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
fields,
|
||||||
|
);
|
||||||
|
Mock(frame)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn response<S>(self, status: S) -> Self
|
pub fn response<S>(self, status: S) -> Self
|
||||||
where
|
where
|
||||||
S: TryInto<http::StatusCode>,
|
S: TryInto<http::StatusCode>,
|
||||||
|
|||||||
@@ -105,6 +105,37 @@ async fn serve_request() {
|
|||||||
join(client, srv).await;
|
join(client, srv).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn serve_connect() {
|
||||||
|
let _ = env_logger::try_init();
|
||||||
|
let (io, mut client) = mock::new();
|
||||||
|
|
||||||
|
let client = async move {
|
||||||
|
let settings = client.assert_server_handshake().await;
|
||||||
|
assert_default_settings!(settings);
|
||||||
|
client
|
||||||
|
.send_frame(frames::headers(1).method("CONNECT").eos())
|
||||||
|
.await;
|
||||||
|
client
|
||||||
|
.recv_frame(frames::headers(1).response(200).eos())
|
||||||
|
.await;
|
||||||
|
};
|
||||||
|
|
||||||
|
let srv = async move {
|
||||||
|
let mut srv = server::handshake(io).await.expect("handshake");
|
||||||
|
let (req, mut stream) = srv.next().await.unwrap().unwrap();
|
||||||
|
|
||||||
|
assert_eq!(req.method(), &http::Method::CONNECT);
|
||||||
|
|
||||||
|
let rsp = http::Response::builder().status(200).body(()).unwrap();
|
||||||
|
stream.send_response(rsp, true).unwrap();
|
||||||
|
|
||||||
|
assert!(srv.next().await.is_none());
|
||||||
|
};
|
||||||
|
|
||||||
|
join(client, srv).await;
|
||||||
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn push_request() {
|
async fn push_request() {
|
||||||
let _ = env_logger::try_init();
|
let _ = env_logger::try_init();
|
||||||
|
|||||||
Reference in New Issue
Block a user