mirror of
https://github.com/fafhrd91/actix-web
synced 2025-07-01 16:55:08 +02:00
Use immutable reference of service state. Update awc dns resolver. (#1905)
This commit is contained in:
32
src/app.rs
32
src/app.rs
@ -422,7 +422,7 @@ where
|
||||
>
|
||||
where
|
||||
B1: MessageBody,
|
||||
F: FnMut(ServiceRequest, &mut T::Service) -> R + Clone,
|
||||
F: Fn(ServiceRequest, &T::Service) -> R + Clone,
|
||||
R: Future<Output = Result<ServiceResponse<B1>, Error>>,
|
||||
{
|
||||
App {
|
||||
@ -480,7 +480,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_default_resource() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(web::resource("/test").to(HttpResponse::Ok)),
|
||||
)
|
||||
.await;
|
||||
@ -492,7 +492,7 @@ mod tests {
|
||||
let resp = srv.call(req).await.unwrap();
|
||||
assert_eq!(resp.status(), StatusCode::NOT_FOUND);
|
||||
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.service(web::resource("/test").to(HttpResponse::Ok))
|
||||
.service(
|
||||
@ -525,7 +525,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_data_factory() {
|
||||
let mut srv =
|
||||
let srv =
|
||||
init_service(App::new().data_factory(|| ok::<_, ()>(10usize)).service(
|
||||
web::resource("/").to(|_: web::Data<usize>| HttpResponse::Ok()),
|
||||
))
|
||||
@ -534,7 +534,7 @@ mod tests {
|
||||
let resp = srv.call(req).await.unwrap();
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let mut srv =
|
||||
let srv =
|
||||
init_service(App::new().data_factory(|| ok::<_, ()>(10u32)).service(
|
||||
web::resource("/").to(|_: web::Data<usize>| HttpResponse::Ok()),
|
||||
))
|
||||
@ -557,7 +557,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_extension() {
|
||||
let mut srv = init_service(App::new().app_data(10usize).service(
|
||||
let srv = init_service(App::new().app_data(10usize).service(
|
||||
web::resource("/").to(|req: HttpRequest| {
|
||||
assert_eq!(*req.app_data::<usize>().unwrap(), 10);
|
||||
HttpResponse::Ok()
|
||||
@ -571,7 +571,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_wrap() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.wrap(
|
||||
DefaultHeaders::new()
|
||||
@ -581,7 +581,7 @@ mod tests {
|
||||
)
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert_eq!(
|
||||
resp.headers().get(header::CONTENT_TYPE).unwrap(),
|
||||
@ -591,7 +591,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_router_wrap() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.route("/test", web::get().to(HttpResponse::Ok))
|
||||
.wrap(
|
||||
@ -601,7 +601,7 @@ mod tests {
|
||||
)
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert_eq!(
|
||||
resp.headers().get(header::CONTENT_TYPE).unwrap(),
|
||||
@ -611,7 +611,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_wrap_fn() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.wrap_fn(|req, srv| {
|
||||
let fut = srv.call(req);
|
||||
@ -628,7 +628,7 @@ mod tests {
|
||||
)
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert_eq!(
|
||||
resp.headers().get(header::CONTENT_TYPE).unwrap(),
|
||||
@ -638,7 +638,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_router_wrap_fn() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.route("/test", web::get().to(HttpResponse::Ok))
|
||||
.wrap_fn(|req, srv| {
|
||||
@ -655,7 +655,7 @@ mod tests {
|
||||
)
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert_eq!(
|
||||
resp.headers().get(header::CONTENT_TYPE).unwrap(),
|
||||
@ -665,7 +665,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_external_resource() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.external_resource("youtube", "https://youtube.com/watch/{video_id}")
|
||||
.route(
|
||||
@ -679,7 +679,7 @@ mod tests {
|
||||
)
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
let body = read_body(resp).await;
|
||||
assert_eq!(body, Bytes::from_static(b"https://youtube.com/watch/12345"));
|
||||
|
@ -196,7 +196,7 @@ where
|
||||
|
||||
actix_service::forward_ready!(service);
|
||||
|
||||
fn call(&mut self, req: Request) -> Self::Future {
|
||||
fn call(&self, req: Request) -> Self::Future {
|
||||
let (head, payload) = req.into_parts();
|
||||
|
||||
let req = if let Some(mut req) = self.app_state.pool().pop() {
|
||||
@ -287,8 +287,8 @@ impl Service<ServiceRequest> for AppRouting {
|
||||
|
||||
actix_service::always_ready!();
|
||||
|
||||
fn call(&mut self, mut req: ServiceRequest) -> Self::Future {
|
||||
let res = self.router.recognize_mut_checked(&mut req, |req, guards| {
|
||||
fn call(&self, mut req: ServiceRequest) -> Self::Future {
|
||||
let res = self.router.recognize_checked(&mut req, |req, guards| {
|
||||
if let Some(ref guards) = guards {
|
||||
for f in guards {
|
||||
if !f.check(req.head()) {
|
||||
@ -354,7 +354,7 @@ mod tests {
|
||||
let data = Arc::new(AtomicBool::new(false));
|
||||
|
||||
{
|
||||
let mut app = init_service(
|
||||
let app = init_service(
|
||||
App::new()
|
||||
.data(DropData(data.clone()))
|
||||
.service(web::resource("/test").to(HttpResponse::Ok)),
|
||||
|
@ -263,7 +263,7 @@ mod tests {
|
||||
cfg.app_data(15u8);
|
||||
};
|
||||
|
||||
let mut srv = init_service(App::new().configure(cfg).service(
|
||||
let srv = init_service(App::new().configure(cfg).service(
|
||||
web::resource("/").to(|_: web::Data<usize>, req: HttpRequest| {
|
||||
assert_eq!(*req.app_data::<u8>().unwrap(), 15u8);
|
||||
HttpResponse::Ok()
|
||||
@ -286,7 +286,7 @@ mod tests {
|
||||
// });
|
||||
// };
|
||||
|
||||
// let mut srv =
|
||||
// let srv =
|
||||
// init_service(App::new().configure(cfg).service(
|
||||
// web::resource("/").to(|_: web::Data<usize>| HttpResponse::Ok()),
|
||||
// ));
|
||||
@ -297,7 +297,7 @@ mod tests {
|
||||
// let cfg2 = |cfg: &mut ServiceConfig| {
|
||||
// cfg.data_factory(|| Ok::<_, ()>(10u32));
|
||||
// };
|
||||
// let mut srv = init_service(
|
||||
// let srv = init_service(
|
||||
// App::new()
|
||||
// .service(web::resource("/").to(|_: web::Data<usize>| HttpResponse::Ok()))
|
||||
// .configure(cfg2),
|
||||
@ -309,7 +309,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_external_resource() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.configure(|cfg| {
|
||||
cfg.external_resource(
|
||||
@ -328,7 +328,7 @@ mod tests {
|
||||
)
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
let body = read_body(resp).await;
|
||||
assert_eq!(body, Bytes::from_static(b"https://youtube.com/watch/12345"));
|
||||
@ -336,7 +336,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_service() {
|
||||
let mut srv = init_service(App::new().configure(|cfg| {
|
||||
let srv = init_service(App::new().configure(|cfg| {
|
||||
cfg.service(
|
||||
web::resource("/test").route(web::get().to(HttpResponse::Created)),
|
||||
)
|
||||
@ -347,13 +347,13 @@ mod tests {
|
||||
let req = TestRequest::with_uri("/test")
|
||||
.method(Method::GET)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::CREATED);
|
||||
|
||||
let req = TestRequest::with_uri("/index.html")
|
||||
.method(Method::GET)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
}
|
||||
|
16
src/data.rs
16
src/data.rs
@ -144,7 +144,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_data_extractor() {
|
||||
let mut srv = init_service(App::new().data("TEST".to_string()).service(
|
||||
let srv = init_service(App::new().data("TEST".to_string()).service(
|
||||
web::resource("/").to(|data: web::Data<String>| {
|
||||
assert_eq!(data.to_lowercase(), "test");
|
||||
HttpResponse::Ok()
|
||||
@ -156,7 +156,7 @@ mod tests {
|
||||
let resp = srv.call(req).await.unwrap();
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let mut srv =
|
||||
let srv =
|
||||
init_service(App::new().data(10u32).service(
|
||||
web::resource("/").to(|_: web::Data<usize>| HttpResponse::Ok()),
|
||||
))
|
||||
@ -165,7 +165,7 @@ mod tests {
|
||||
let resp = srv.call(req).await.unwrap();
|
||||
assert_eq!(resp.status(), StatusCode::INTERNAL_SERVER_ERROR);
|
||||
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.data(10u32)
|
||||
.data(13u32)
|
||||
@ -186,7 +186,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_app_data_extractor() {
|
||||
let mut srv =
|
||||
let srv =
|
||||
init_service(App::new().app_data(Data::new(10usize)).service(
|
||||
web::resource("/").to(|_: web::Data<usize>| HttpResponse::Ok()),
|
||||
))
|
||||
@ -196,7 +196,7 @@ mod tests {
|
||||
let resp = srv.call(req).await.unwrap();
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let mut srv =
|
||||
let srv =
|
||||
init_service(App::new().app_data(Data::new(10u32)).service(
|
||||
web::resource("/").to(|_: web::Data<usize>| HttpResponse::Ok()),
|
||||
))
|
||||
@ -208,7 +208,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_route_data_extractor() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::resource("/")
|
||||
.data(10usize)
|
||||
@ -222,7 +222,7 @@ mod tests {
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
// different type
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::resource("/")
|
||||
.data(10u32)
|
||||
@ -237,7 +237,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_override_data() {
|
||||
let mut srv = init_service(App::new().data(1usize).service(
|
||||
let srv = init_service(App::new().data(1usize).service(
|
||||
web::resource("/").data(10usize).route(web::get().to(
|
||||
|data: web::Data<usize>| {
|
||||
assert_eq!(**data, 10);
|
||||
|
@ -113,11 +113,11 @@ where
|
||||
type Error = Error;
|
||||
type Future = HandlerServiceFuture<F, T, R>;
|
||||
|
||||
fn poll_ready(&mut self, _: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
fn poll_ready(&self, _: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
Poll::Ready(Ok(()))
|
||||
}
|
||||
|
||||
fn call(&mut self, req: ServiceRequest) -> Self::Future {
|
||||
fn call(&self, req: ServiceRequest) -> Self::Future {
|
||||
let (req, mut payload) = req.into_parts();
|
||||
let fut = T::from_request(&req, &mut payload);
|
||||
HandlerServiceFuture::Extract(fut, Some(req), self.hnd.clone())
|
||||
|
@ -80,11 +80,11 @@ where
|
||||
type Error = Error;
|
||||
type Future = CompatMiddlewareFuture<S::Future>;
|
||||
|
||||
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
fn poll_ready(&self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
self.service.poll_ready(cx).map_err(From::from)
|
||||
}
|
||||
|
||||
fn call(&mut self, req: Req) -> Self::Future {
|
||||
fn call(&self, req: Req) -> Self::Future {
|
||||
let fut = self.service.call(req);
|
||||
CompatMiddlewareFuture { fut }
|
||||
}
|
||||
@ -138,7 +138,7 @@ mod tests {
|
||||
let logger = Logger::default();
|
||||
let compress = Compress::default();
|
||||
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("app")
|
||||
.wrap(Compat::new(logger))
|
||||
@ -151,7 +151,7 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/app/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
@ -160,7 +160,7 @@ mod tests {
|
||||
let logger = Logger::default();
|
||||
let compress = Compress::default();
|
||||
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::resource("app/test")
|
||||
.wrap(Compat::new(logger))
|
||||
@ -171,7 +171,7 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/app/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
@ -185,11 +185,11 @@ mod tests {
|
||||
|
||||
let logger = Logger::default();
|
||||
|
||||
let mut mw = Condition::new(true, Compat::new(logger))
|
||||
let mw = Condition::new(true, Compat::new(logger))
|
||||
.new_transform(srv.into_service())
|
||||
.await
|
||||
.unwrap();
|
||||
let resp = call_service(&mut mw, TestRequest::default().to_srv_request()).await;
|
||||
let resp = call_service(&mw, TestRequest::default().to_srv_request()).await;
|
||||
assert_eq!(resp.status(), StatusCode::INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ where
|
||||
actix_service::forward_ready!(service);
|
||||
|
||||
#[allow(clippy::borrow_interior_mutable_const)]
|
||||
fn call(&mut self, req: ServiceRequest) -> Self::Future {
|
||||
fn call(&self, req: ServiceRequest) -> Self::Future {
|
||||
// negotiate content-encoding
|
||||
let encoding = if let Some(val) = req.headers().get(&ACCEPT_ENCODING) {
|
||||
if let Ok(enc) = val.to_str() {
|
||||
|
@ -76,14 +76,14 @@ where
|
||||
type Error = E::Error;
|
||||
type Future = Either<E::Future, D::Future>;
|
||||
|
||||
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
fn poll_ready(&self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
match self {
|
||||
ConditionMiddleware::Enable(service) => service.poll_ready(cx),
|
||||
ConditionMiddleware::Disable(service) => service.poll_ready(cx),
|
||||
}
|
||||
}
|
||||
|
||||
fn call(&mut self, req: Req) -> Self::Future {
|
||||
fn call(&self, req: Req) -> Self::Future {
|
||||
match self {
|
||||
ConditionMiddleware::Enable(service) => Either::Left(service.call(req)),
|
||||
ConditionMiddleware::Disable(service) => Either::Right(service.call(req)),
|
||||
@ -123,12 +123,12 @@ mod tests {
|
||||
let mw =
|
||||
ErrorHandlers::new().handler(StatusCode::INTERNAL_SERVER_ERROR, render_500);
|
||||
|
||||
let mut mw = Condition::new(true, mw)
|
||||
let mw = Condition::new(true, mw)
|
||||
.new_transform(srv.into_service())
|
||||
.await
|
||||
.unwrap();
|
||||
let resp =
|
||||
test::call_service(&mut mw, TestRequest::default().to_srv_request()).await;
|
||||
test::call_service(&mw, TestRequest::default().to_srv_request()).await;
|
||||
assert_eq!(resp.headers().get(CONTENT_TYPE).unwrap(), "0001");
|
||||
}
|
||||
|
||||
@ -141,13 +141,13 @@ mod tests {
|
||||
let mw =
|
||||
ErrorHandlers::new().handler(StatusCode::INTERNAL_SERVER_ERROR, render_500);
|
||||
|
||||
let mut mw = Condition::new(false, mw)
|
||||
let mw = Condition::new(false, mw)
|
||||
.new_transform(srv.into_service())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let resp =
|
||||
test::call_service(&mut mw, TestRequest::default().to_srv_request()).await;
|
||||
test::call_service(&mw, TestRequest::default().to_srv_request()).await;
|
||||
assert_eq!(resp.headers().get(CONTENT_TYPE), None);
|
||||
}
|
||||
}
|
||||
|
@ -143,7 +143,7 @@ where
|
||||
|
||||
actix_service::forward_ready!(service);
|
||||
|
||||
fn call(&mut self, req: ServiceRequest) -> Self::Future {
|
||||
fn call(&self, req: ServiceRequest) -> Self::Future {
|
||||
let inner = self.inner.clone();
|
||||
let fut = self.service.call(req);
|
||||
|
||||
@ -200,7 +200,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_default_headers() {
|
||||
let mut mw = DefaultHeaders::new()
|
||||
let mw = DefaultHeaders::new()
|
||||
.header(CONTENT_TYPE, "0001")
|
||||
.new_transform(ok_service())
|
||||
.await
|
||||
@ -218,7 +218,7 @@ mod tests {
|
||||
.finish(),
|
||||
))
|
||||
};
|
||||
let mut mw = DefaultHeaders::new()
|
||||
let mw = DefaultHeaders::new()
|
||||
.header(CONTENT_TYPE, "0001")
|
||||
.new_transform(srv.into_service())
|
||||
.await
|
||||
@ -231,7 +231,7 @@ mod tests {
|
||||
async fn test_content_type() {
|
||||
let srv =
|
||||
|req: ServiceRequest| ok(req.into_response(HttpResponse::Ok().finish()));
|
||||
let mut mw = DefaultHeaders::new()
|
||||
let mw = DefaultHeaders::new()
|
||||
.add_content_type()
|
||||
.new_transform(srv.into_service())
|
||||
.await
|
||||
|
@ -123,7 +123,7 @@ where
|
||||
|
||||
actix_service::forward_ready!(service);
|
||||
|
||||
fn call(&mut self, req: ServiceRequest) -> Self::Future {
|
||||
fn call(&self, req: ServiceRequest) -> Self::Future {
|
||||
let handlers = self.handlers.clone();
|
||||
let fut = self.service.call(req);
|
||||
ErrorHandlersFuture::ServiceFuture { fut, handlers }
|
||||
@ -196,14 +196,14 @@ mod tests {
|
||||
ok(req.into_response(HttpResponse::InternalServerError().finish()))
|
||||
};
|
||||
|
||||
let mut mw = ErrorHandlers::new()
|
||||
let mw = ErrorHandlers::new()
|
||||
.handler(StatusCode::INTERNAL_SERVER_ERROR, render_500)
|
||||
.new_transform(srv.into_service())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let resp =
|
||||
test::call_service(&mut mw, TestRequest::default().to_srv_request()).await;
|
||||
test::call_service(&mw, TestRequest::default().to_srv_request()).await;
|
||||
assert_eq!(resp.headers().get(CONTENT_TYPE).unwrap(), "0001");
|
||||
}
|
||||
|
||||
@ -223,14 +223,14 @@ mod tests {
|
||||
ok(req.into_response(HttpResponse::InternalServerError().finish()))
|
||||
};
|
||||
|
||||
let mut mw = ErrorHandlers::new()
|
||||
let mw = ErrorHandlers::new()
|
||||
.handler(StatusCode::INTERNAL_SERVER_ERROR, render_500_async)
|
||||
.new_transform(srv.into_service())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let resp =
|
||||
test::call_service(&mut mw, TestRequest::default().to_srv_request()).await;
|
||||
test::call_service(&mw, TestRequest::default().to_srv_request()).await;
|
||||
assert_eq!(resp.headers().get(CONTENT_TYPE).unwrap(), "0001");
|
||||
}
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ where
|
||||
|
||||
actix_service::forward_ready!(service);
|
||||
|
||||
fn call(&mut self, req: ServiceRequest) -> Self::Future {
|
||||
fn call(&self, req: ServiceRequest) -> Self::Future {
|
||||
if self.inner.exclude.contains(req.path())
|
||||
|| self.inner.exclude_regex.is_match(req.path())
|
||||
{
|
||||
@ -609,7 +609,7 @@ mod tests {
|
||||
};
|
||||
let logger = Logger::new("%% %{User-Agent}i %{X-Test}o %{HOME}e %D test");
|
||||
|
||||
let mut srv = logger.new_transform(srv.into_service()).await.unwrap();
|
||||
let srv = logger.new_transform(srv.into_service()).await.unwrap();
|
||||
|
||||
let req = TestRequest::default()
|
||||
.insert_header((
|
||||
@ -632,7 +632,7 @@ mod tests {
|
||||
let logger = Logger::new("%% %{User-Agent}i %{X-Test}o %{HOME}e %D test")
|
||||
.exclude_regex("\\w");
|
||||
|
||||
let mut srv = logger.new_transform(srv.into_service()).await.unwrap();
|
||||
let srv = logger.new_transform(srv.into_service()).await.unwrap();
|
||||
|
||||
let req = TestRequest::default()
|
||||
.insert_header((
|
||||
@ -806,7 +806,7 @@ mod tests {
|
||||
captured.to_owned()
|
||||
});
|
||||
|
||||
let mut srv = logger.new_transform(test::ok_service()).await.unwrap();
|
||||
let srv = logger.new_transform(test::ok_service()).await.unwrap();
|
||||
|
||||
let req = TestRequest::default().to_srv_request();
|
||||
srv.call(req).await.unwrap();
|
||||
|
@ -57,7 +57,7 @@ impl Default for TrailingSlash {
|
||||
/// ```rust
|
||||
/// use actix_web::{web, middleware, App};
|
||||
///
|
||||
/// # actix_web::rt::System::new("doctest").block_on(async {
|
||||
/// # actix_web::rt::System::new().block_on(async {
|
||||
/// let app = App::new()
|
||||
/// .wrap(middleware::NormalizePath::default())
|
||||
/// .route("/test", web::get().to(|| async { "test" }))
|
||||
@ -66,22 +66,22 @@ impl Default for TrailingSlash {
|
||||
/// use actix_web::http::StatusCode;
|
||||
/// use actix_web::test::{call_service, init_service, TestRequest};
|
||||
///
|
||||
/// let mut app = init_service(app).await;
|
||||
/// let app = init_service(app).await;
|
||||
///
|
||||
/// let req = TestRequest::with_uri("/test").to_request();
|
||||
/// let res = call_service(&mut app, req).await;
|
||||
/// let res = call_service(&app, req).await;
|
||||
/// assert_eq!(res.status(), StatusCode::OK);
|
||||
///
|
||||
/// let req = TestRequest::with_uri("/test/").to_request();
|
||||
/// let res = call_service(&mut app, req).await;
|
||||
/// let res = call_service(&app, req).await;
|
||||
/// assert_eq!(res.status(), StatusCode::OK);
|
||||
///
|
||||
/// let req = TestRequest::with_uri("/unmatchable").to_request();
|
||||
/// let res = call_service(&mut app, req).await;
|
||||
/// let res = call_service(&app, req).await;
|
||||
/// assert_eq!(res.status(), StatusCode::NOT_FOUND);
|
||||
///
|
||||
/// let req = TestRequest::with_uri("/unmatchable/").to_request();
|
||||
/// let res = call_service(&mut app, req).await;
|
||||
/// let res = call_service(&app, req).await;
|
||||
/// assert_eq!(res.status(), StatusCode::NOT_FOUND);
|
||||
/// # })
|
||||
/// ```
|
||||
@ -132,7 +132,7 @@ where
|
||||
|
||||
actix_service::forward_ready!(service);
|
||||
|
||||
fn call(&mut self, mut req: ServiceRequest) -> Self::Future {
|
||||
fn call(&self, mut req: ServiceRequest) -> Self::Future {
|
||||
let head = req.head_mut();
|
||||
|
||||
let original_path = head.uri.path();
|
||||
@ -195,7 +195,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_wrap() {
|
||||
let mut app = init_service(
|
||||
let app = init_service(
|
||||
App::new()
|
||||
.wrap(NormalizePath::default())
|
||||
.service(web::resource("/").to(HttpResponse::Ok))
|
||||
@ -204,37 +204,37 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/").to_request();
|
||||
let res = call_service(&mut app, req).await;
|
||||
let res = call_service(&app, req).await;
|
||||
assert!(res.status().is_success());
|
||||
|
||||
let req = TestRequest::with_uri("/?query=test").to_request();
|
||||
let res = call_service(&mut app, req).await;
|
||||
let res = call_service(&app, req).await;
|
||||
assert!(res.status().is_success());
|
||||
|
||||
let req = TestRequest::with_uri("///").to_request();
|
||||
let res = call_service(&mut app, req).await;
|
||||
let res = call_service(&app, req).await;
|
||||
assert!(res.status().is_success());
|
||||
|
||||
let req = TestRequest::with_uri("/v1//something////").to_request();
|
||||
let res = call_service(&mut app, req).await;
|
||||
let res = call_service(&app, req).await;
|
||||
assert!(res.status().is_success());
|
||||
|
||||
let req2 = TestRequest::with_uri("//v1/something").to_request();
|
||||
let res2 = call_service(&mut app, req2).await;
|
||||
let res2 = call_service(&app, req2).await;
|
||||
assert!(res2.status().is_success());
|
||||
|
||||
let req3 = TestRequest::with_uri("//v1//////something").to_request();
|
||||
let res3 = call_service(&mut app, req3).await;
|
||||
let res3 = call_service(&app, req3).await;
|
||||
assert!(res3.status().is_success());
|
||||
|
||||
let req4 = TestRequest::with_uri("/v1//something").to_request();
|
||||
let res4 = call_service(&mut app, req4).await;
|
||||
let res4 = call_service(&app, req4).await;
|
||||
assert!(res4.status().is_success());
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn trim_trailing_slashes() {
|
||||
let mut app = init_service(
|
||||
let app = init_service(
|
||||
App::new()
|
||||
.wrap(NormalizePath(TrailingSlash::Trim))
|
||||
.service(web::resource("/").to(HttpResponse::Ok))
|
||||
@ -244,37 +244,37 @@ mod tests {
|
||||
|
||||
// root paths should still work
|
||||
let req = TestRequest::with_uri("/").to_request();
|
||||
let res = call_service(&mut app, req).await;
|
||||
let res = call_service(&app, req).await;
|
||||
assert!(res.status().is_success());
|
||||
|
||||
let req = TestRequest::with_uri("/?query=test").to_request();
|
||||
let res = call_service(&mut app, req).await;
|
||||
let res = call_service(&app, req).await;
|
||||
assert!(res.status().is_success());
|
||||
|
||||
let req = TestRequest::with_uri("///").to_request();
|
||||
let res = call_service(&mut app, req).await;
|
||||
let res = call_service(&app, req).await;
|
||||
assert!(res.status().is_success());
|
||||
|
||||
let req = TestRequest::with_uri("/v1/something////").to_request();
|
||||
let res = call_service(&mut app, req).await;
|
||||
let res = call_service(&app, req).await;
|
||||
assert!(res.status().is_success());
|
||||
|
||||
let req2 = TestRequest::with_uri("/v1/something/").to_request();
|
||||
let res2 = call_service(&mut app, req2).await;
|
||||
let res2 = call_service(&app, req2).await;
|
||||
assert!(res2.status().is_success());
|
||||
|
||||
let req3 = TestRequest::with_uri("//v1//something//").to_request();
|
||||
let res3 = call_service(&mut app, req3).await;
|
||||
let res3 = call_service(&app, req3).await;
|
||||
assert!(res3.status().is_success());
|
||||
|
||||
let req4 = TestRequest::with_uri("//v1//something").to_request();
|
||||
let res4 = call_service(&mut app, req4).await;
|
||||
let res4 = call_service(&app, req4).await;
|
||||
assert!(res4.status().is_success());
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn keep_trailing_slash_unchanged() {
|
||||
let mut app = init_service(
|
||||
let app = init_service(
|
||||
App::new()
|
||||
.wrap(NormalizePath(TrailingSlash::MergeOnly))
|
||||
.service(web::resource("/").to(HttpResponse::Ok))
|
||||
@ -299,7 +299,7 @@ mod tests {
|
||||
|
||||
for (path, success) in tests {
|
||||
let req = TestRequest::with_uri(path).to_request();
|
||||
let res = call_service(&mut app, req).await;
|
||||
let res = call_service(&app, req).await;
|
||||
assert_eq!(res.status().is_success(), success);
|
||||
}
|
||||
}
|
||||
@ -311,7 +311,7 @@ mod tests {
|
||||
ready(Ok(req.into_response(HttpResponse::Ok().finish())))
|
||||
};
|
||||
|
||||
let mut normalize = NormalizePath::default()
|
||||
let normalize = NormalizePath::default()
|
||||
.new_transform(srv.into_service())
|
||||
.await
|
||||
.unwrap();
|
||||
@ -342,7 +342,7 @@ mod tests {
|
||||
ready(Ok(req.into_response(HttpResponse::Ok().finish())))
|
||||
};
|
||||
|
||||
let mut normalize = NormalizePath::default()
|
||||
let normalize = NormalizePath::default()
|
||||
.new_transform(srv.into_service())
|
||||
.await
|
||||
.unwrap();
|
||||
@ -359,7 +359,7 @@ mod tests {
|
||||
ready(Ok(req.into_response(HttpResponse::Ok().finish())))
|
||||
};
|
||||
|
||||
let mut normalize = NormalizePath::default()
|
||||
let normalize = NormalizePath::default()
|
||||
.new_transform(srv.into_service())
|
||||
.await
|
||||
.unwrap();
|
||||
|
@ -556,7 +556,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_drop_http_request_pool() {
|
||||
let mut srv = init_service(App::new().service(web::resource("/").to(
|
||||
let srv = init_service(App::new().service(web::resource("/").to(
|
||||
|req: HttpRequest| {
|
||||
HttpResponse::Ok()
|
||||
.insert_header(("pool_cap", req.app_state().pool().cap))
|
||||
@ -566,7 +566,7 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::default().to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
|
||||
drop(srv);
|
||||
|
||||
@ -575,7 +575,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_data() {
|
||||
let mut srv = init_service(App::new().app_data(10usize).service(
|
||||
let srv = init_service(App::new().app_data(10usize).service(
|
||||
web::resource("/").to(|req: HttpRequest| {
|
||||
if req.app_data::<usize>().is_some() {
|
||||
HttpResponse::Ok()
|
||||
@ -587,10 +587,10 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::default().to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let mut srv = init_service(App::new().app_data(10u32).service(
|
||||
let srv = init_service(App::new().app_data(10u32).service(
|
||||
web::resource("/").to(|req: HttpRequest| {
|
||||
if req.app_data::<usize>().is_some() {
|
||||
HttpResponse::Ok()
|
||||
@ -602,7 +602,7 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::default().to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::BAD_REQUEST);
|
||||
}
|
||||
|
||||
@ -614,7 +614,7 @@ mod tests {
|
||||
HttpResponse::Ok().body(num.to_string())
|
||||
}
|
||||
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.app_data(88usize)
|
||||
.service(web::resource("/").route(web::get().to(echo_usize)))
|
||||
@ -645,7 +645,7 @@ mod tests {
|
||||
HttpResponse::Ok().body(num.to_string())
|
||||
}
|
||||
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.app_data(88usize)
|
||||
.service(web::resource("/").route(web::get().to(echo_usize)))
|
||||
@ -685,7 +685,7 @@ mod tests {
|
||||
let tracker = Rc::new(RefCell::new(Tracker { dropped: false }));
|
||||
{
|
||||
let tracker2 = Rc::clone(&tracker);
|
||||
let mut srv = init_service(App::new().data(10u32).service(
|
||||
let srv = init_service(App::new().data(10u32).service(
|
||||
web::resource("/").to(move |req: HttpRequest| {
|
||||
req.extensions_mut().insert(Foo {
|
||||
tracker: Rc::clone(&tracker2),
|
||||
@ -696,7 +696,7 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::default().to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
@ -705,7 +705,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn extract_path_pattern() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("/user/{id}")
|
||||
.service(web::resource("/profile").route(web::get().to(
|
||||
@ -727,17 +727,17 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::get().uri("/user/22/profile").to_request();
|
||||
let res = call_service(&mut srv, req).await;
|
||||
let res = call_service(&srv, req).await;
|
||||
assert_eq!(res.status(), StatusCode::OK);
|
||||
|
||||
let req = TestRequest::get().uri("/user/22/not-exist").to_request();
|
||||
let res = call_service(&mut srv, req).await;
|
||||
let res = call_service(&srv, req).await;
|
||||
assert_eq!(res.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn extract_path_pattern_complex() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.service(web::scope("/user").service(web::scope("/{id}").service(
|
||||
web::resource("").to(move |req: HttpRequest| {
|
||||
@ -759,15 +759,15 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::get().uri("/user/test").to_request();
|
||||
let res = call_service(&mut srv, req).await;
|
||||
let res = call_service(&srv, req).await;
|
||||
assert_eq!(res.status(), StatusCode::OK);
|
||||
|
||||
let req = TestRequest::get().uri("/").to_request();
|
||||
let res = call_service(&mut srv, req).await;
|
||||
let res = call_service(&srv, req).await;
|
||||
assert_eq!(res.status(), StatusCode::OK);
|
||||
|
||||
let req = TestRequest::get().uri("/not-exist").to_request();
|
||||
let res = call_service(&mut srv, req).await;
|
||||
let res = call_service(&srv, req).await;
|
||||
assert_eq!(res.status(), StatusCode::OK);
|
||||
}
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn req_data_extractor() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.wrap_fn(|req, srv| {
|
||||
if req.method() == Method::POST {
|
||||
@ -142,7 +142,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn req_data_internal_mutability() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.wrap_fn(|req, srv| {
|
||||
let data_before = Rc::new(RefCell::new(42u32));
|
||||
|
@ -328,7 +328,7 @@ where
|
||||
>,
|
||||
>
|
||||
where
|
||||
F: FnMut(ServiceRequest, &mut T::Service) -> R + Clone,
|
||||
F: Fn(ServiceRequest, &T::Service) -> R + Clone,
|
||||
R: Future<Output = Result<ServiceResponse, Error>>,
|
||||
{
|
||||
Resource {
|
||||
@ -471,8 +471,8 @@ impl Service<ServiceRequest> for ResourceService {
|
||||
|
||||
actix_service::always_ready!();
|
||||
|
||||
fn call(&mut self, mut req: ServiceRequest) -> Self::Future {
|
||||
for route in self.routes.iter_mut() {
|
||||
fn call(&self, mut req: ServiceRequest) -> Self::Future {
|
||||
for route in self.routes.iter() {
|
||||
if route.check(&mut req) {
|
||||
if let Some(ref app_data) = self.app_data {
|
||||
req.add_data_container(app_data.clone());
|
||||
@ -530,7 +530,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_middleware() {
|
||||
let mut srv =
|
||||
let srv =
|
||||
init_service(
|
||||
App::new().service(
|
||||
web::resource("/test")
|
||||
@ -544,7 +544,7 @@ mod tests {
|
||||
)
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert_eq!(
|
||||
resp.headers().get(header::CONTENT_TYPE).unwrap(),
|
||||
@ -554,7 +554,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_middleware_fn() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::resource("/test")
|
||||
.wrap_fn(|req, srv| {
|
||||
@ -574,7 +574,7 @@ mod tests {
|
||||
)
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert_eq!(
|
||||
resp.headers().get(header::CONTENT_TYPE).unwrap(),
|
||||
@ -584,20 +584,20 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_to() {
|
||||
let mut srv =
|
||||
let srv =
|
||||
init_service(App::new().service(web::resource("/test").to(|| async {
|
||||
sleep(Duration::from_millis(100)).await;
|
||||
Ok::<_, Error>(HttpResponse::Ok())
|
||||
})))
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_pattern() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::resource(["/test", "/test2"])
|
||||
.to(|| async { Ok::<_, Error>(HttpResponse::Ok()) }),
|
||||
@ -605,16 +605,16 @@ mod tests {
|
||||
)
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
let req = TestRequest::with_uri("/test2").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_default_resource() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.service(web::resource("/test").route(web::get().to(HttpResponse::Ok)))
|
||||
.default_service(|r: ServiceRequest| {
|
||||
@ -623,16 +623,16 @@ mod tests {
|
||||
)
|
||||
.await;
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let req = TestRequest::with_uri("/test")
|
||||
.method(Method::POST)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::METHOD_NOT_ALLOWED);
|
||||
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::resource("/test")
|
||||
.route(web::get().to(HttpResponse::Ok))
|
||||
@ -644,19 +644,19 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let req = TestRequest::with_uri("/test")
|
||||
.method(Method::POST)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::BAD_REQUEST);
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_resource_guards() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.service(
|
||||
web::resource("/test/{p}")
|
||||
@ -679,25 +679,25 @@ mod tests {
|
||||
let req = TestRequest::with_uri("/test/it")
|
||||
.method(Method::GET)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let req = TestRequest::with_uri("/test/it")
|
||||
.method(Method::PUT)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::CREATED);
|
||||
|
||||
let req = TestRequest::with_uri("/test/it")
|
||||
.method(Method::DELETE)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::NO_CONTENT);
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_data() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.data(1.0f64)
|
||||
.data(1usize)
|
||||
@ -723,13 +723,13 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::get().uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_data_default_service() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().data(1usize).service(
|
||||
web::resource("/test")
|
||||
.data(10usize)
|
||||
@ -742,7 +742,7 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::get().uri("/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
}
|
||||
|
@ -260,7 +260,7 @@ pub(crate) mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_option_responder() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.service(
|
||||
web::resource("/none").to(|| async { Option::<&'static str>::None }),
|
||||
|
22
src/route.rs
22
src/route.rs
@ -121,11 +121,11 @@ impl Service<ServiceRequest> for RouteService {
|
||||
type Error = Error;
|
||||
type Future = LocalBoxFuture<'static, Result<Self::Response, Self::Error>>;
|
||||
|
||||
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
fn poll_ready(&self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
self.service.poll_ready(cx)
|
||||
}
|
||||
|
||||
fn call(&mut self, req: ServiceRequest) -> Self::Future {
|
||||
fn call(&self, req: ServiceRequest) -> Self::Future {
|
||||
self.service.call(req)
|
||||
}
|
||||
}
|
||||
@ -299,11 +299,11 @@ where
|
||||
type Error = Error;
|
||||
type Future = LocalBoxFuture<'static, Result<Self::Response, Self::Error>>;
|
||||
|
||||
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
fn poll_ready(&self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
self.service.poll_ready(cx)
|
||||
}
|
||||
|
||||
fn call(&mut self, req: ServiceRequest) -> Self::Future {
|
||||
fn call(&self, req: ServiceRequest) -> Self::Future {
|
||||
Box::pin(self.service.call(req))
|
||||
}
|
||||
}
|
||||
@ -327,7 +327,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_route() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.service(
|
||||
web::resource("/test")
|
||||
@ -356,35 +356,35 @@ mod tests {
|
||||
let req = TestRequest::with_uri("/test")
|
||||
.method(Method::GET)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let req = TestRequest::with_uri("/test")
|
||||
.method(Method::POST)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::CREATED);
|
||||
|
||||
let req = TestRequest::with_uri("/test")
|
||||
.method(Method::PUT)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::BAD_REQUEST);
|
||||
|
||||
let req = TestRequest::with_uri("/test")
|
||||
.method(Method::DELETE)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::BAD_REQUEST);
|
||||
|
||||
let req = TestRequest::with_uri("/test")
|
||||
.method(Method::HEAD)
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::METHOD_NOT_ALLOWED);
|
||||
|
||||
let req = TestRequest::with_uri("/json").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let body = read_body(resp).await;
|
||||
|
129
src/scope.rs
129
src/scope.rs
@ -380,7 +380,7 @@ where
|
||||
>,
|
||||
>
|
||||
where
|
||||
F: FnMut(ServiceRequest, &mut T::Service) -> R + Clone,
|
||||
F: Fn(ServiceRequest, &T::Service) -> R + Clone,
|
||||
R: Future<Output = Result<ServiceResponse, Error>>,
|
||||
{
|
||||
Scope {
|
||||
@ -526,8 +526,8 @@ impl Service<ServiceRequest> for ScopeService {
|
||||
|
||||
actix_service::always_ready!();
|
||||
|
||||
fn call(&mut self, mut req: ServiceRequest) -> Self::Future {
|
||||
let res = self.router.recognize_mut_checked(&mut req, |req, guards| {
|
||||
fn call(&self, mut req: ServiceRequest) -> Self::Future {
|
||||
let res = self.router.recognize_checked(&mut req, |req, guards| {
|
||||
if let Some(ref guards) = guards {
|
||||
for f in guards {
|
||||
if !f.check(req.head()) {
|
||||
@ -589,7 +589,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_scope() {
|
||||
let mut srv = init_service(App::new().service(
|
||||
let srv = init_service(App::new().service(
|
||||
web::scope("/app").service(web::resource("/path1").to(HttpResponse::Ok)),
|
||||
))
|
||||
.await;
|
||||
@ -601,7 +601,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_scope_root() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("/app")
|
||||
.service(web::resource("").to(HttpResponse::Ok))
|
||||
@ -621,7 +621,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_scope_root2() {
|
||||
let mut srv = init_service(App::new().service(
|
||||
let srv = init_service(App::new().service(
|
||||
web::scope("/app/").service(web::resource("").to(HttpResponse::Ok)),
|
||||
))
|
||||
.await;
|
||||
@ -637,7 +637,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_scope_root3() {
|
||||
let mut srv = init_service(App::new().service(
|
||||
let srv = init_service(App::new().service(
|
||||
web::scope("/app/").service(web::resource("/").to(HttpResponse::Ok)),
|
||||
))
|
||||
.await;
|
||||
@ -653,7 +653,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_scope_route() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("app")
|
||||
.route("/path1", web::get().to(HttpResponse::Ok))
|
||||
@ -681,7 +681,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_scope_route_without_leading_slash() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("app").service(
|
||||
web::resource("path1")
|
||||
@ -711,7 +711,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_scope_guard() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("/app")
|
||||
.guard(guard::Get())
|
||||
@ -735,14 +735,13 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_scope_variable_segment() {
|
||||
let mut srv =
|
||||
init_service(App::new().service(web::scope("/ab-{project}").service(
|
||||
web::resource("/path1").to(|r: HttpRequest| {
|
||||
HttpResponse::Ok()
|
||||
.body(format!("project: {}", &r.match_info()["project"]))
|
||||
}),
|
||||
)))
|
||||
.await;
|
||||
let srv = init_service(App::new().service(web::scope("/ab-{project}").service(
|
||||
web::resource("/path1").to(|r: HttpRequest| {
|
||||
HttpResponse::Ok()
|
||||
.body(format!("project: {}", &r.match_info()["project"]))
|
||||
}),
|
||||
)))
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/ab-project1/path1").to_request();
|
||||
let resp = srv.call(req).await.unwrap();
|
||||
@ -763,7 +762,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_nested_scope() {
|
||||
let mut srv = init_service(App::new().service(web::scope("/app").service(
|
||||
let srv = init_service(App::new().service(web::scope("/app").service(
|
||||
web::scope("/t1").service(web::resource("/path1").to(HttpResponse::Created)),
|
||||
)))
|
||||
.await;
|
||||
@ -775,7 +774,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_nested_scope_no_slash() {
|
||||
let mut srv = init_service(App::new().service(web::scope("/app").service(
|
||||
let srv = init_service(App::new().service(web::scope("/app").service(
|
||||
web::scope("t1").service(web::resource("/path1").to(HttpResponse::Created)),
|
||||
)))
|
||||
.await;
|
||||
@ -787,7 +786,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_nested_scope_root() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("/app").service(
|
||||
web::scope("/t1")
|
||||
@ -809,7 +808,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_nested_scope_filter() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("/app").service(
|
||||
web::scope("/t1")
|
||||
@ -835,7 +834,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_nested_scope_with_variable_segment() {
|
||||
let mut srv = init_service(App::new().service(web::scope("/app").service(
|
||||
let srv = init_service(App::new().service(web::scope("/app").service(
|
||||
web::scope("/{project_id}").service(web::resource("/path1").to(
|
||||
|r: HttpRequest| {
|
||||
HttpResponse::Created()
|
||||
@ -860,7 +859,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_nested2_scope_with_variable_segment() {
|
||||
let mut srv = init_service(App::new().service(web::scope("/app").service(
|
||||
let srv = init_service(App::new().service(web::scope("/app").service(
|
||||
web::scope("/{project}").service(web::scope("/{id}").service(
|
||||
web::resource("/path1").to(|r: HttpRequest| {
|
||||
HttpResponse::Created().body(format!(
|
||||
@ -892,7 +891,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_default_resource() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("/app")
|
||||
.service(web::resource("/path1").to(HttpResponse::Ok))
|
||||
@ -914,7 +913,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_default_resource_propagation() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.service(
|
||||
web::scope("/app1")
|
||||
@ -942,7 +941,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_middleware() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("app")
|
||||
.wrap(
|
||||
@ -959,7 +958,7 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/app/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert_eq!(
|
||||
resp.headers().get(header::CONTENT_TYPE).unwrap(),
|
||||
@ -969,7 +968,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_middleware_fn() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(
|
||||
web::scope("app")
|
||||
.wrap_fn(|req, srv| {
|
||||
@ -989,7 +988,7 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/app/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert_eq!(
|
||||
resp.headers().get(header::CONTENT_TYPE).unwrap(),
|
||||
@ -999,7 +998,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_override_data() {
|
||||
let mut srv = init_service(App::new().data(1usize).service(
|
||||
let srv = init_service(App::new().data(1usize).service(
|
||||
web::scope("app").data(10usize).route(
|
||||
"/t",
|
||||
web::get().to(|data: web::Data<usize>| {
|
||||
@ -1011,13 +1010,13 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/app/t").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_override_data_default_service() {
|
||||
let mut srv = init_service(App::new().data(1usize).service(
|
||||
let srv = init_service(App::new().data(1usize).service(
|
||||
web::scope("app").data(10usize).default_service(web::to(
|
||||
|data: web::Data<usize>| {
|
||||
assert_eq!(**data, 10);
|
||||
@ -1028,13 +1027,13 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/app/t").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_override_app_data() {
|
||||
let mut srv = init_service(App::new().app_data(web::Data::new(1usize)).service(
|
||||
let srv = init_service(App::new().app_data(web::Data::new(1usize)).service(
|
||||
web::scope("app").app_data(web::Data::new(10usize)).route(
|
||||
"/t",
|
||||
web::get().to(|data: web::Data<usize>| {
|
||||
@ -1046,17 +1045,16 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/app/t").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_scope_config() {
|
||||
let mut srv =
|
||||
init_service(App::new().service(web::scope("/app").configure(|s| {
|
||||
s.route("/path1", web::get().to(HttpResponse::Ok));
|
||||
})))
|
||||
.await;
|
||||
let srv = init_service(App::new().service(web::scope("/app").configure(|s| {
|
||||
s.route("/path1", web::get().to(HttpResponse::Ok));
|
||||
})))
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/app/path1").to_request();
|
||||
let resp = srv.call(req).await.unwrap();
|
||||
@ -1065,13 +1063,12 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_scope_config_2() {
|
||||
let mut srv =
|
||||
init_service(App::new().service(web::scope("/app").configure(|s| {
|
||||
s.service(web::scope("/v1").configure(|s| {
|
||||
s.route("/", web::get().to(HttpResponse::Ok));
|
||||
}));
|
||||
})))
|
||||
.await;
|
||||
let srv = init_service(App::new().service(web::scope("/app").configure(|s| {
|
||||
s.service(web::scope("/v1").configure(|s| {
|
||||
s.route("/", web::get().to(HttpResponse::Ok));
|
||||
}));
|
||||
})))
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/app/v1/").to_request();
|
||||
let resp = srv.call(req).await.unwrap();
|
||||
@ -1080,24 +1077,20 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_url_for_external() {
|
||||
let mut srv =
|
||||
init_service(App::new().service(web::scope("/app").configure(|s| {
|
||||
s.service(web::scope("/v1").configure(|s| {
|
||||
s.external_resource(
|
||||
"youtube",
|
||||
"https://youtube.com/watch/{video_id}",
|
||||
);
|
||||
s.route(
|
||||
"/",
|
||||
web::get().to(|req: HttpRequest| {
|
||||
HttpResponse::Ok().body(
|
||||
req.url_for("youtube", &["xxxxxx"]).unwrap().to_string(),
|
||||
)
|
||||
}),
|
||||
);
|
||||
}));
|
||||
})))
|
||||
.await;
|
||||
let srv = init_service(App::new().service(web::scope("/app").configure(|s| {
|
||||
s.service(web::scope("/v1").configure(|s| {
|
||||
s.external_resource("youtube", "https://youtube.com/watch/{video_id}");
|
||||
s.route(
|
||||
"/",
|
||||
web::get().to(|req: HttpRequest| {
|
||||
HttpResponse::Ok().body(
|
||||
req.url_for("youtube", &["xxxxxx"]).unwrap().to_string(),
|
||||
)
|
||||
}),
|
||||
);
|
||||
}));
|
||||
})))
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/app/v1/").to_request();
|
||||
let resp = srv.call(req).await.unwrap();
|
||||
@ -1108,7 +1101,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_url_for_nested() {
|
||||
let mut srv = init_service(App::new().service(web::scope("/a").service(
|
||||
let srv = init_service(App::new().service(web::scope("/a").service(
|
||||
web::scope("/b").service(web::resource("/c/{stuff}").name("c").route(
|
||||
web::get().to(|req: HttpRequest| {
|
||||
HttpResponse::Ok()
|
||||
@ -1119,7 +1112,7 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/a/b/c/test").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
let body = read_body(resp).await;
|
||||
assert_eq!(
|
||||
|
@ -630,7 +630,7 @@ where
|
||||
/// }
|
||||
/// ```
|
||||
pub fn run(self) -> Server {
|
||||
self.builder.start()
|
||||
self.builder.run()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -542,7 +542,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_service() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(web::service("/test").name("test").finish(
|
||||
|req: ServiceRequest| ok(req.into_response(HttpResponse::Ok().finish())),
|
||||
)),
|
||||
@ -552,7 +552,7 @@ mod tests {
|
||||
let resp = srv.call(req).await.unwrap();
|
||||
assert_eq!(resp.status(), http::StatusCode::OK);
|
||||
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new().service(web::service("/test").guard(guard::Get()).finish(
|
||||
|req: ServiceRequest| ok(req.into_response(HttpResponse::Ok().finish())),
|
||||
)),
|
||||
@ -567,7 +567,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_service_data() {
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.data(42u32)
|
||||
.service(web::service("/test").name("test").finish(
|
||||
|
72
src/test.rs
72
src/test.rs
@ -60,7 +60,7 @@ pub fn default_service(
|
||||
///
|
||||
/// #[actix_rt::test]
|
||||
/// async fn test_init_service() {
|
||||
/// let mut app = test::init_service(
|
||||
/// let app = test::init_service(
|
||||
/// App::new()
|
||||
/// .service(web::resource("/test").to(|| async { HttpResponse::Ok() }))
|
||||
/// ).await;
|
||||
@ -116,7 +116,7 @@ where
|
||||
///
|
||||
/// #[actix_rt::test]
|
||||
/// async fn test_response() {
|
||||
/// let mut app = test::init_service(
|
||||
/// let app = test::init_service(
|
||||
/// App::new()
|
||||
/// .service(web::resource("/test").to(|| async {
|
||||
/// HttpResponse::Ok()
|
||||
@ -127,11 +127,11 @@ where
|
||||
/// let req = test::TestRequest::with_uri("/test").to_request();
|
||||
///
|
||||
/// // Call application
|
||||
/// let resp = test::call_service(&mut app, req).await;
|
||||
/// let resp = test::call_service(&app, req).await;
|
||||
/// assert_eq!(resp.status(), StatusCode::OK);
|
||||
/// }
|
||||
/// ```
|
||||
pub async fn call_service<S, R, B, E>(app: &mut S, req: R) -> S::Response
|
||||
pub async fn call_service<S, R, B, E>(app: &S, req: R) -> S::Response
|
||||
where
|
||||
S: Service<R, Response = ServiceResponse<B>, Error = E>,
|
||||
E: std::fmt::Debug,
|
||||
@ -147,7 +147,7 @@ where
|
||||
///
|
||||
/// #[actix_rt::test]
|
||||
/// async fn test_index() {
|
||||
/// let mut app = test::init_service(
|
||||
/// let app = test::init_service(
|
||||
/// App::new().service(
|
||||
/// web::resource("/index.html")
|
||||
/// .route(web::post().to(|| async {
|
||||
@ -160,11 +160,11 @@ where
|
||||
/// .header(header::CONTENT_TYPE, "application/json")
|
||||
/// .to_request();
|
||||
///
|
||||
/// let result = test::read_response(&mut app, req).await;
|
||||
/// let result = test::read_response(&app, req).await;
|
||||
/// assert_eq!(result, Bytes::from_static(b"welcome!"));
|
||||
/// }
|
||||
/// ```
|
||||
pub async fn read_response<S, B>(app: &mut S, req: Request) -> Bytes
|
||||
pub async fn read_response<S, B>(app: &S, req: Request) -> Bytes
|
||||
where
|
||||
S: Service<Request, Response = ServiceResponse<B>, Error = Error>,
|
||||
B: MessageBody + Unpin,
|
||||
@ -190,7 +190,7 @@ where
|
||||
///
|
||||
/// #[actix_rt::test]
|
||||
/// async fn test_index() {
|
||||
/// let mut app = test::init_service(
|
||||
/// let app = test::init_service(
|
||||
/// App::new().service(
|
||||
/// web::resource("/index.html")
|
||||
/// .route(web::post().to(|| async {
|
||||
@ -203,7 +203,7 @@ where
|
||||
/// .header(header::CONTENT_TYPE, "application/json")
|
||||
/// .to_request();
|
||||
///
|
||||
/// let resp = test::call_service(&mut app, req).await;
|
||||
/// let resp = test::call_service(&app, req).await;
|
||||
/// let result = test::read_body(resp).await;
|
||||
/// assert_eq!(result, Bytes::from_static(b"welcome!"));
|
||||
/// }
|
||||
@ -234,7 +234,7 @@ where
|
||||
///
|
||||
/// #[actix_rt::test]
|
||||
/// async fn test_post_person() {
|
||||
/// let mut app = test::init_service(
|
||||
/// let app = test::init_service(
|
||||
/// App::new().service(
|
||||
/// web::resource("/people")
|
||||
/// .route(web::post().to(|person: web::Json<Person>| async {
|
||||
@ -294,7 +294,7 @@ where
|
||||
///
|
||||
/// #[actix_rt::test]
|
||||
/// async fn test_add_person() {
|
||||
/// let mut app = test::init_service(
|
||||
/// let app = test::init_service(
|
||||
/// App::new().service(
|
||||
/// web::resource("/people")
|
||||
/// .route(web::post().to(|person: web::Json<Person>| async {
|
||||
@ -314,7 +314,7 @@ where
|
||||
/// let result: Person = test::read_response_json(&mut app, req).await;
|
||||
/// }
|
||||
/// ```
|
||||
pub async fn read_response_json<S, B, T>(app: &mut S, req: Request) -> T
|
||||
pub async fn read_response_json<S, B, T>(app: &S, req: Request) -> T
|
||||
where
|
||||
S: Service<Request, Response = ServiceResponse<B>, Error = Error>,
|
||||
B: MessageBody + Unpin,
|
||||
@ -569,7 +569,7 @@ impl TestRequest {
|
||||
}
|
||||
|
||||
/// Complete request creation, calls service and waits for response future completion.
|
||||
pub async fn send_request<S, B, E>(self, app: &mut S) -> S::Response
|
||||
pub async fn send_request<S, B, E>(self, app: &S) -> S::Response
|
||||
where
|
||||
S: Service<Request, Response = ServiceResponse<B>, Error = E>,
|
||||
E: std::fmt::Debug,
|
||||
@ -595,7 +595,7 @@ impl TestRequest {
|
||||
///
|
||||
/// #[actix_rt::test]
|
||||
/// async fn test_example() {
|
||||
/// let mut srv = test::start(
|
||||
/// let srv = test::start(
|
||||
/// || App::new().service(
|
||||
/// web::resource("/").to(my_handler))
|
||||
/// );
|
||||
@ -635,7 +635,7 @@ where
|
||||
///
|
||||
/// #[actix_rt::test]
|
||||
/// async fn test_example() {
|
||||
/// let mut srv = test::start_with(test::config().h1(), ||
|
||||
/// let srv = test::start_with(test::config().h1(), ||
|
||||
/// App::new().service(web::resource("/").to(my_handler))
|
||||
/// );
|
||||
///
|
||||
@ -667,7 +667,7 @@ where
|
||||
|
||||
// run server in separate thread
|
||||
thread::spawn(move || {
|
||||
let sys = System::new("actix-test-server");
|
||||
let sys = System::new();
|
||||
let tcp = net::TcpListener::bind("127.0.0.1:0").unwrap();
|
||||
let local_addr = tcp.local_addr().unwrap();
|
||||
let factory = factory.clone();
|
||||
@ -760,7 +760,7 @@ where
|
||||
.unwrap();
|
||||
|
||||
sys.block_on(async {
|
||||
let srv = srv.start();
|
||||
let srv = srv.run();
|
||||
tx.send((System::current(), srv, local_addr)).unwrap();
|
||||
});
|
||||
|
||||
@ -1043,7 +1043,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_request_methods() {
|
||||
let mut app = init_service(
|
||||
let app = init_service(
|
||||
App::new().service(
|
||||
web::resource("/index.html")
|
||||
.route(web::put().to(|| HttpResponse::Ok().body("put!")))
|
||||
@ -1058,7 +1058,7 @@ mod tests {
|
||||
.insert_header((header::CONTENT_TYPE, "application/json"))
|
||||
.to_request();
|
||||
|
||||
let result = read_response(&mut app, put_req).await;
|
||||
let result = read_response(&app, put_req).await;
|
||||
assert_eq!(result, Bytes::from_static(b"put!"));
|
||||
|
||||
let patch_req = TestRequest::patch()
|
||||
@ -1066,17 +1066,17 @@ mod tests {
|
||||
.insert_header((header::CONTENT_TYPE, "application/json"))
|
||||
.to_request();
|
||||
|
||||
let result = read_response(&mut app, patch_req).await;
|
||||
let result = read_response(&app, patch_req).await;
|
||||
assert_eq!(result, Bytes::from_static(b"patch!"));
|
||||
|
||||
let delete_req = TestRequest::delete().uri("/index.html").to_request();
|
||||
let result = read_response(&mut app, delete_req).await;
|
||||
let result = read_response(&app, delete_req).await;
|
||||
assert_eq!(result, Bytes::from_static(b"delete!"));
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_response() {
|
||||
let mut app = init_service(
|
||||
let app = init_service(
|
||||
App::new().service(
|
||||
web::resource("/index.html")
|
||||
.route(web::post().to(|| HttpResponse::Ok().body("welcome!"))),
|
||||
@ -1089,13 +1089,13 @@ mod tests {
|
||||
.insert_header((header::CONTENT_TYPE, "application/json"))
|
||||
.to_request();
|
||||
|
||||
let result = read_response(&mut app, req).await;
|
||||
let result = read_response(&app, req).await;
|
||||
assert_eq!(result, Bytes::from_static(b"welcome!"));
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_send_request() {
|
||||
let mut app = init_service(
|
||||
let app = init_service(
|
||||
App::new().service(
|
||||
web::resource("/index.html")
|
||||
.route(web::get().to(|| HttpResponse::Ok().body("welcome!"))),
|
||||
@ -1105,7 +1105,7 @@ mod tests {
|
||||
|
||||
let resp = TestRequest::get()
|
||||
.uri("/index.html")
|
||||
.send_request(&mut app)
|
||||
.send_request(&app)
|
||||
.await;
|
||||
|
||||
let result = read_body(resp).await;
|
||||
@ -1120,7 +1120,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_response_json() {
|
||||
let mut app = init_service(App::new().service(web::resource("/people").route(
|
||||
let app = init_service(App::new().service(web::resource("/people").route(
|
||||
web::post().to(|person: web::Json<Person>| HttpResponse::Ok().json(person)),
|
||||
)))
|
||||
.await;
|
||||
@ -1133,13 +1133,13 @@ mod tests {
|
||||
.set_payload(payload)
|
||||
.to_request();
|
||||
|
||||
let result: Person = read_response_json(&mut app, req).await;
|
||||
let result: Person = read_response_json(&app, req).await;
|
||||
assert_eq!(&result.id, "12345");
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_body_json() {
|
||||
let mut app = init_service(App::new().service(web::resource("/people").route(
|
||||
let app = init_service(App::new().service(web::resource("/people").route(
|
||||
web::post().to(|person: web::Json<Person>| HttpResponse::Ok().json(person)),
|
||||
)))
|
||||
.await;
|
||||
@ -1150,7 +1150,7 @@ mod tests {
|
||||
.uri("/people")
|
||||
.insert_header((header::CONTENT_TYPE, "application/json"))
|
||||
.set_payload(payload)
|
||||
.send_request(&mut app)
|
||||
.send_request(&app)
|
||||
.await;
|
||||
|
||||
let result: Person = read_body_json(resp).await;
|
||||
@ -1159,7 +1159,7 @@ mod tests {
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_request_response_form() {
|
||||
let mut app = init_service(App::new().service(web::resource("/people").route(
|
||||
let app = init_service(App::new().service(web::resource("/people").route(
|
||||
web::post().to(|person: web::Form<Person>| HttpResponse::Ok().json(person)),
|
||||
)))
|
||||
.await;
|
||||
@ -1176,14 +1176,14 @@ mod tests {
|
||||
|
||||
assert_eq!(req.content_type(), "application/x-www-form-urlencoded");
|
||||
|
||||
let result: Person = read_response_json(&mut app, req).await;
|
||||
let result: Person = read_response_json(&app, req).await;
|
||||
assert_eq!(&result.id, "12345");
|
||||
assert_eq!(&result.name, "User name");
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_request_response_json() {
|
||||
let mut app = init_service(App::new().service(web::resource("/people").route(
|
||||
let app = init_service(App::new().service(web::resource("/people").route(
|
||||
web::post().to(|person: web::Json<Person>| HttpResponse::Ok().json(person)),
|
||||
)))
|
||||
.await;
|
||||
@ -1200,7 +1200,7 @@ mod tests {
|
||||
|
||||
assert_eq!(req.content_type(), "application/json");
|
||||
|
||||
let result: Person = read_response_json(&mut app, req).await;
|
||||
let result: Person = read_response_json(&app, req).await;
|
||||
assert_eq!(&result.id, "12345");
|
||||
assert_eq!(&result.name, "User name");
|
||||
}
|
||||
@ -1218,7 +1218,7 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
let mut app = init_service(
|
||||
let app = init_service(
|
||||
App::new().service(web::resource("/index.html").to(async_with_block)),
|
||||
)
|
||||
.await;
|
||||
@ -1235,7 +1235,7 @@ mod tests {
|
||||
HttpResponse::Ok()
|
||||
}
|
||||
|
||||
let mut app = init_service(
|
||||
let app = init_service(
|
||||
App::new()
|
||||
.data(10usize)
|
||||
.service(web::resource("/index.html").to(handler)),
|
||||
@ -1291,7 +1291,7 @@ mod tests {
|
||||
.data(addr.clone())
|
||||
.service(web::resource("/").to(actor_handler));
|
||||
|
||||
let mut app = init_service(srv).await;
|
||||
let app = init_service(srv).await;
|
||||
|
||||
let req = TestRequest::post().uri("/").to_request();
|
||||
let res = app.call(req).await.unwrap();
|
||||
|
@ -392,7 +392,7 @@ mod tests {
|
||||
"payload is probably json string"
|
||||
}
|
||||
|
||||
let mut srv = init_service(
|
||||
let srv = init_service(
|
||||
App::new()
|
||||
.service(
|
||||
web::resource("/bytes-app-data")
|
||||
@ -422,43 +422,43 @@ mod tests {
|
||||
.await;
|
||||
|
||||
let req = TestRequest::with_uri("/bytes-app-data").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::BAD_REQUEST);
|
||||
|
||||
let req = TestRequest::with_uri("/bytes-data").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::BAD_REQUEST);
|
||||
|
||||
let req = TestRequest::with_uri("/string-app-data").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::BAD_REQUEST);
|
||||
|
||||
let req = TestRequest::with_uri("/string-data").to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::BAD_REQUEST);
|
||||
|
||||
let req = TestRequest::with_uri("/bytes-app-data")
|
||||
.insert_header(header::ContentType(mime::APPLICATION_JSON))
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let req = TestRequest::with_uri("/bytes-data")
|
||||
.insert_header(header::ContentType(mime::APPLICATION_JSON))
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let req = TestRequest::with_uri("/string-app-data")
|
||||
.insert_header(header::ContentType(mime::APPLICATION_JSON))
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let req = TestRequest::with_uri("/string-data")
|
||||
.insert_header(header::ContentType(mime::APPLICATION_JSON))
|
||||
.to_request();
|
||||
let resp = call_service(&mut srv, req).await;
|
||||
let resp = call_service(&srv, req).await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user