tests: reduce boilerplate of sending GET requests

This adds a `SendRequestExt` trait to h2-support, with a `get` method
that does a lot of the repeated request building stuff many test cases
were doing.

As a first step, the cleans up stream_states tests to use it.
This commit is contained in:
Sean McArthur
2019-06-26 12:13:02 -07:00
parent f8f05d04e7
commit 3e345ac7b6
7 changed files with 95 additions and 214 deletions

View File

@@ -0,0 +1,30 @@
use bytes::IntoBuf;
use http::Request;
use h2::client::{ResponseFuture, SendRequest};
/// Extend the `h2::client::SendRequest` type with convenience methods.
pub trait SendRequestExt {
/// Convenience method to send a GET request and ignore the SendStream
/// (since GETs don't need to send a body).
fn get(&mut self, uri: &str) -> ResponseFuture;
}
impl<B> SendRequestExt for SendRequest<B>
where
B: IntoBuf,
B::Buf: 'static,
{
fn get(&mut self, uri: &str) -> ResponseFuture {
let req = Request::builder()
// method is GET by default
.uri(uri)
.body(())
.expect("valid uri");
let (fut, _tx) = self
.send_request(req, /*eos =*/true)
.expect("send_request");
fut
}
}