mirror of
https://github.com/fafhrd91/actix-web
synced 2024-11-27 17:52:56 +01:00
update test-server tests
This commit is contained in:
parent
5ab29b2e62
commit
687884fb94
@ -109,17 +109,22 @@ webpki-roots = { version = "0.18", optional = true }
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
actix-server = { version = "0.8.0-alpha.1", features=["openssl"] }
|
||||
actix-connect = { version = "1.0.0-alpha.1", features=["openssl"] }
|
||||
#actix-http-test = { version = "0.2.4", features=["ssl"] }
|
||||
actix-http-test = { version = "0.3.0-alpha.1", features=["openssl"] }
|
||||
env_logger = "0.6"
|
||||
serde_derive = "1.0"
|
||||
open-ssl = { version="0.10", package="openssl" }
|
||||
|
||||
[patch.crates-io]
|
||||
awc = { path = "../awc" }
|
||||
actix-http = { path = "." }
|
||||
actix-http-test = { path = "../test-server" }
|
||||
|
||||
actix-codec = { path = "../../actix-net/actix-codec" }
|
||||
actix-connect = { path = "../../actix-net/actix-connect" }
|
||||
actix-rt = { path = "../../actix-net/actix-rt" }
|
||||
actix-server = { path = "../../actix-net/actix-server" }
|
||||
actix-server-config = { path = "../../actix-net/actix-server-config" }
|
||||
actix-service = { path = "../../actix-net/actix-service" }
|
||||
actix-testing = { path = "../../actix-net/actix-testing" }
|
||||
actix-threadpool = { path = "../../actix-net/actix-threadpool" }
|
||||
actix-utils = { path = "../../actix-net/actix-utils" }
|
||||
|
@ -76,7 +76,8 @@ where
|
||||
};
|
||||
|
||||
// read response and init read body
|
||||
let (head, framed) = if let (Some(result), framed) = framed.into_future().await {
|
||||
let res = framed.into_future().await;
|
||||
let (head, framed) = if let (Some(result), framed) = res {
|
||||
let item = result.map_err(SendRequestError::from)?;
|
||||
(item, framed)
|
||||
} else {
|
||||
|
@ -331,12 +331,10 @@ where
|
||||
Poll::Ready(Err(err)) => return Err(DispatchError::Io(err)),
|
||||
}
|
||||
}
|
||||
if written > 0 {
|
||||
if written == self.write_buf.len() {
|
||||
unsafe { self.write_buf.set_len(0) }
|
||||
} else {
|
||||
let _ = self.write_buf.split_to(written);
|
||||
}
|
||||
if written == self.write_buf.len() {
|
||||
unsafe { self.write_buf.set_len(0) }
|
||||
} else {
|
||||
let _ = self.write_buf.split_to(written);
|
||||
}
|
||||
Ok(false)
|
||||
}
|
||||
|
@ -122,7 +122,7 @@ where
|
||||
match Pin::new(&mut this.connection).poll_accept(cx) {
|
||||
Poll::Ready(None) => return Poll::Ready(Ok(())),
|
||||
Poll::Ready(Some(Err(err))) => return Poll::Ready(Err(err.into())),
|
||||
Poll::Ready(Some(Ok((req, res)))) => {
|
||||
Poll::Ready(Some(Ok((req, _)))) => {
|
||||
// update keep-alive expire
|
||||
if this.ka_timer.is_some() {
|
||||
if let Some(expire) = this.config.keep_alive_expire() {
|
||||
|
@ -2,14 +2,14 @@ use std::io::{Read, Write};
|
||||
use std::time::Duration;
|
||||
use std::{net, thread};
|
||||
|
||||
use actix_http_test::TestServer;
|
||||
use actix_http_test::{block_fn, TestServer};
|
||||
use actix_server_config::ServerConfig;
|
||||
use actix_service::{factory_fn_cfg, pipeline, service_fn, ServiceFactory};
|
||||
use bytes::Bytes;
|
||||
use futures::future::{self, err, ok, ready, Future, FutureExt};
|
||||
use futures::stream::{once, Stream, StreamExt};
|
||||
use futures::future::{self, err, ok, ready, FutureExt};
|
||||
use futures::stream::{once, StreamExt};
|
||||
use regex::Regex;
|
||||
use tokio_timer::sleep;
|
||||
use tokio_timer::delay_for;
|
||||
|
||||
use actix_http::httpmessage::HttpMessage;
|
||||
use actix_http::{
|
||||
@ -18,7 +18,7 @@ use actix_http::{
|
||||
|
||||
#[test]
|
||||
fn test_h1() {
|
||||
let mut srv = TestServer::new(|| {
|
||||
let srv = TestServer::new(|| {
|
||||
HttpService::build()
|
||||
.keep_alive(KeepAlive::Disabled)
|
||||
.client_timeout(1000)
|
||||
@ -29,13 +29,13 @@ fn test_h1() {
|
||||
})
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.get("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.get("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_h1_2() {
|
||||
let mut srv = TestServer::new(|| {
|
||||
let srv = TestServer::new(|| {
|
||||
HttpService::build()
|
||||
.keep_alive(KeepAlive::Disabled)
|
||||
.client_timeout(1000)
|
||||
@ -48,7 +48,7 @@ fn test_h1_2() {
|
||||
.map(|_| ())
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.get("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.get("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
}
|
||||
|
||||
@ -84,11 +84,11 @@ fn test_expect_continue_h1() {
|
||||
let srv = TestServer::new(|| {
|
||||
HttpService::build()
|
||||
.expect(service_fn(|req: Request| {
|
||||
sleep(Duration::from_millis(20)).then(move |_| {
|
||||
delay_for(Duration::from_millis(20)).then(move |_| {
|
||||
if req.head().uri.query() == Some("yes=") {
|
||||
Ok(req)
|
||||
ok(req)
|
||||
} else {
|
||||
Err(error::ErrorPreconditionFailed("error"))
|
||||
err(error::ErrorPreconditionFailed("error"))
|
||||
}
|
||||
})
|
||||
}))
|
||||
@ -114,7 +114,7 @@ fn test_chunked_payload() {
|
||||
let total_size: usize = chunk_sizes.iter().sum();
|
||||
|
||||
let srv = TestServer::new(|| {
|
||||
HttpService::build().h1(|mut request: Request| {
|
||||
HttpService::build().h1(service_fn(|mut request: Request| {
|
||||
request
|
||||
.take_payload()
|
||||
.map(|res| match res {
|
||||
@ -122,8 +122,10 @@ fn test_chunked_payload() {
|
||||
Err(e) => panic!(format!("Error reading payload: {}", e)),
|
||||
})
|
||||
.fold(0usize, |acc, chunk| ready(acc + chunk.len()))
|
||||
.map(|req_size| ok(Response::Ok().body(format!("size={}", req_size))))
|
||||
})
|
||||
.map(|req_size| {
|
||||
Ok::<_, Error>(Response::Ok().body(format!("size={}", req_size)))
|
||||
})
|
||||
}))
|
||||
});
|
||||
|
||||
let returned_size = {
|
||||
@ -310,7 +312,7 @@ fn test_content_length() {
|
||||
StatusCode,
|
||||
};
|
||||
|
||||
let mut srv = TestServer::new(|| {
|
||||
let srv = TestServer::new(|| {
|
||||
HttpService::build().h1(|req: Request| {
|
||||
let indx: usize = req.uri().path()[1..].parse().unwrap();
|
||||
let statuses = [
|
||||
@ -330,24 +332,18 @@ fn test_content_length() {
|
||||
|
||||
{
|
||||
for i in 0..4 {
|
||||
let req = srv
|
||||
.request(http::Method::GET, srv.url(&format!("/{}", i)))
|
||||
.send();
|
||||
let response = srv.block_on(req).unwrap();
|
||||
let req = srv.request(http::Method::GET, srv.url(&format!("/{}", i)));
|
||||
let response = block_fn(move || req.send()).unwrap();
|
||||
assert_eq!(response.headers().get(&header), None);
|
||||
|
||||
let req = srv
|
||||
.request(http::Method::HEAD, srv.url(&format!("/{}", i)))
|
||||
.send();
|
||||
let response = srv.block_on(req).unwrap();
|
||||
let req = srv.request(http::Method::HEAD, srv.url(&format!("/{}", i)));
|
||||
let response = block_fn(move || req.send()).unwrap();
|
||||
assert_eq!(response.headers().get(&header), None);
|
||||
}
|
||||
|
||||
for i in 4..6 {
|
||||
let req = srv
|
||||
.request(http::Method::GET, srv.url(&format!("/{}", i)))
|
||||
.send();
|
||||
let response = srv.block_on(req).unwrap();
|
||||
let req = srv.request(http::Method::GET, srv.url(&format!("/{}", i)));
|
||||
let response = block_fn(move || req.send()).unwrap();
|
||||
assert_eq!(response.headers().get(&header), Some(&value));
|
||||
}
|
||||
}
|
||||
@ -384,7 +380,7 @@ fn test_h1_headers() {
|
||||
})
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.get("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.get("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
|
||||
// read response
|
||||
@ -420,7 +416,7 @@ fn test_h1_body() {
|
||||
HttpService::build().h1(|_| ok::<_, ()>(Response::Ok().body(STR)))
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.get("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.get("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
|
||||
// read response
|
||||
@ -434,7 +430,7 @@ fn test_h1_head_empty() {
|
||||
HttpService::build().h1(|_| ok::<_, ()>(Response::Ok().body(STR)))
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.head("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.head("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
|
||||
{
|
||||
@ -458,7 +454,7 @@ fn test_h1_head_binary() {
|
||||
})
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.head("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.head("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
|
||||
{
|
||||
@ -476,11 +472,11 @@ fn test_h1_head_binary() {
|
||||
|
||||
#[test]
|
||||
fn test_h1_head_binary2() {
|
||||
let mut srv = TestServer::new(|| {
|
||||
let srv = TestServer::new(|| {
|
||||
HttpService::build().h1(|_| ok::<_, ()>(Response::Ok().body(STR)))
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.head("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.head("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
|
||||
{
|
||||
@ -503,7 +499,7 @@ fn test_h1_body_length() {
|
||||
})
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.get("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.get("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
|
||||
// read response
|
||||
@ -524,7 +520,7 @@ fn test_h1_body_chunked_explicit() {
|
||||
})
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.get("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.get("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
assert_eq!(
|
||||
response
|
||||
@ -552,7 +548,7 @@ fn test_h1_body_chunked_implicit() {
|
||||
})
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.get("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.get("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
assert_eq!(
|
||||
response
|
||||
@ -584,7 +580,7 @@ fn test_h1_response_http_error_handling() {
|
||||
}))
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.get("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.get("/").send()).unwrap();
|
||||
assert_eq!(response.status(), http::StatusCode::INTERNAL_SERVER_ERROR);
|
||||
|
||||
// read response
|
||||
@ -599,7 +595,7 @@ fn test_h1_service_error() {
|
||||
.h1(|_| future::err::<Response, Error>(error::ErrorBadRequest("error")))
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.get("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.get("/").send()).unwrap();
|
||||
assert_eq!(response.status(), http::StatusCode::BAD_REQUEST);
|
||||
|
||||
// read response
|
||||
@ -609,7 +605,7 @@ fn test_h1_service_error() {
|
||||
|
||||
#[test]
|
||||
fn test_h1_on_connect() {
|
||||
let mut srv = TestServer::new(|| {
|
||||
let srv = TestServer::new(|| {
|
||||
HttpService::build()
|
||||
.on_connect(|_| 10usize)
|
||||
.h1(|req: Request| {
|
||||
@ -618,6 +614,6 @@ fn test_h1_on_connect() {
|
||||
})
|
||||
});
|
||||
|
||||
let response = srv.block_on(srv.get("/").send()).unwrap();
|
||||
let response = block_fn(|| srv.get("/").send()).unwrap();
|
||||
assert!(response.status().is_success());
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ rust-tls = { version = "0.16.0", package="rustls", optional = true }
|
||||
actix-rt = "1.0.0-alpha.1"
|
||||
#actix-web = { version = "1.0.8", features=["ssl"] }
|
||||
actix-http = { version = "0.3.0-alpha.1", features=["openssl"] }
|
||||
#actix-http-test = { version = "0.2.0", features=["ssl"] }
|
||||
actix-http-test = { version = "0.3.0-alpha.1", features=["openssl"] }
|
||||
actix-utils = "0.5.0-alpha.1"
|
||||
actix-server = { version = "0.8.0-alpha.1", features=["openssl", "rustls"] }
|
||||
brotli2 = { version="0.3.2" }
|
||||
@ -77,7 +77,9 @@ webpki = { version = "0.21" }
|
||||
rus-tls = { version = "0.16.0", package="rustls", features = ["dangerous_configuration"] }
|
||||
|
||||
[patch.crates-io]
|
||||
awc = { path = "." }
|
||||
actix-http = { path = "../actix-http" }
|
||||
actix-http-test = { path = "../test-server" }
|
||||
|
||||
actix-codec = { path = "../../actix-net/actix-codec" }
|
||||
actix-connect = { path = "../../actix-net/actix-connect" }
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "actix-http-test"
|
||||
version = "0.2.5"
|
||||
version = "0.3.0-alpha.1"
|
||||
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
|
||||
description = "Actix http test server"
|
||||
readme = "README.md"
|
||||
|
@ -109,7 +109,7 @@ impl TestServer {
|
||||
block_on(lazy(|_| {
|
||||
Ok::<_, ()>(actix_connect::start_default_resolver())
|
||||
}))
|
||||
.unwrap();
|
||||
.unwrap();
|
||||
|
||||
TestServerRuntime {
|
||||
addr,
|
||||
|
Loading…
Reference in New Issue
Block a user