mirror of https://github.com/fafhrd91/actix-web
add test case for h2c connector
This commit is contained in:
parent
1b7a79719e
commit
aa1526eed2
|
@ -21,16 +21,15 @@ use http::Method;
|
|||
use socket2::{Domain, Protocol, Socket, Type};
|
||||
use tokio::sync::mpsc;
|
||||
|
||||
/// Start test server
|
||||
/// Start test server.
|
||||
///
|
||||
/// `TestServer` is very simple test server that simplify process of writing
|
||||
/// integration tests cases for actix web applications.
|
||||
/// `TestServer` is very simple test server that simplify process of writing integration tests cases
|
||||
/// for HTTP applications.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// ```no_run
|
||||
/// use actix_http::HttpService;
|
||||
/// use actix_http_test::TestServer;
|
||||
/// use actix_http_test::test_server;
|
||||
/// use actix_web::{web, App, HttpResponse, Error};
|
||||
///
|
||||
/// async fn my_handler() -> Result<HttpResponse, Error> {
|
||||
|
@ -39,10 +38,9 @@ use tokio::sync::mpsc;
|
|||
///
|
||||
/// #[actix_web::test]
|
||||
/// async fn test_example() {
|
||||
/// let mut srv = TestServer::start(
|
||||
/// || HttpService::new(
|
||||
/// App::new().service(
|
||||
/// web::resource("/").to(my_handler))
|
||||
/// let mut srv = TestServer::start(||
|
||||
/// HttpService::new(
|
||||
/// App::new().service(web::resource("/").to(my_handler))
|
||||
/// )
|
||||
/// );
|
||||
///
|
||||
|
|
|
@ -67,9 +67,9 @@ impl Connector<()> {
|
|||
> + Clone,
|
||||
> {
|
||||
Connector {
|
||||
ssl: Self::build_ssl(vec![b"h2".to_vec(), b"http/1.1".to_vec()]),
|
||||
connector: new_connector(resolver::resolver()),
|
||||
config: ConnectorConfig::default(),
|
||||
ssl: Self::build_ssl(vec![b"h2".to_vec(), b"http/1.1".to_vec()]),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -189,7 +189,7 @@ where
|
|||
http::Version::HTTP_11 => vec![b"http/1.1".to_vec()],
|
||||
http::Version::HTTP_2 => vec![b"h2".to_vec(), b"http/1.1".to_vec()],
|
||||
_ => {
|
||||
unimplemented!("actix-http:client: supported versions http/1.1, http/2")
|
||||
unimplemented!("actix-http client only supports versions http/1.1 & http/2")
|
||||
}
|
||||
};
|
||||
self.ssl = Connector::build_ssl(versions);
|
||||
|
@ -816,3 +816,42 @@ mod resolver {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "dangerous-h2c")]
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::convert::Infallible;
|
||||
|
||||
use actix_http::{HttpService, Request, Response, Version};
|
||||
use actix_http_test::test_server;
|
||||
use actix_service::ServiceFactoryExt as _;
|
||||
|
||||
use super::*;
|
||||
use crate::Client;
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn h2c_connector() {
|
||||
let mut srv = test_server(|| {
|
||||
HttpService::build()
|
||||
.h2(|_req: Request| async { Ok::<_, Infallible>(Response::ok()) })
|
||||
.tcp()
|
||||
.map_err(|_| ())
|
||||
})
|
||||
.await;
|
||||
|
||||
let connector = Connector {
|
||||
connector: new_connector(resolver::resolver()),
|
||||
config: ConnectorConfig::default(),
|
||||
ssl: SslConnector::None,
|
||||
};
|
||||
|
||||
let client = Client::builder().connector(connector).finish();
|
||||
|
||||
let request = client.get(srv.surl("/")).send();
|
||||
let response = request.await.unwrap();
|
||||
assert!(response.status().is_success());
|
||||
assert_eq!(response.version(), Version::HTTP_2);
|
||||
|
||||
srv.stop().await;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -115,10 +115,10 @@ impl ClientRequest {
|
|||
&self.head.method
|
||||
}
|
||||
|
||||
#[doc(hidden)]
|
||||
/// Set HTTP version of this request.
|
||||
///
|
||||
/// By default requests's HTTP version depends on network stream
|
||||
#[doc(hidden)]
|
||||
#[inline]
|
||||
pub fn version(mut self, version: Version) -> Self {
|
||||
self.head.version = version;
|
||||
|
|
|
@ -39,7 +39,7 @@ fn tls_config() -> SslAcceptor {
|
|||
|
||||
#[actix_rt::test]
|
||||
async fn test_connection_window_size() {
|
||||
let srv = test_server(move || {
|
||||
let srv = test_server(|| {
|
||||
HttpService::build()
|
||||
.h2(map_config(
|
||||
App::new().service(web::resource("/").route(web::to(HttpResponse::Ok))),
|
||||
|
|
Loading…
Reference in New Issue