mirror of https://github.com/fafhrd91/actix-web
add tests
This commit is contained in:
parent
783b3f7a8f
commit
34ef7d1bd1
|
@ -1,9 +1,11 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## Unreleased - 2021-xx-xx
|
## Unreleased - 2021-xx-xx
|
||||||
- Add `ServiceRequest::extract` to make it easier to use extractors when writing middlewares. [#2647]
|
- Add `ServiceRequest::extract()` to make it easier to use extractors when writing middlewares. [#2647]
|
||||||
|
- Add `Route::wrap()` to allow individual routes to use middleware. [#2725]
|
||||||
|
|
||||||
[#2647]: https://github.com/actix/actix-web/pull/2647
|
[#2647]: https://github.com/actix/actix-web/pull/2647
|
||||||
|
[#2725]: https://github.com/actix/actix-web/pull/2725
|
||||||
|
|
||||||
|
|
||||||
## 4.0.1 - 2022-02-25
|
## 4.0.1 - 2022-02-25
|
||||||
|
|
|
@ -37,6 +37,12 @@ impl Route {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Registers a route middleware.
|
||||||
|
///
|
||||||
|
/// `mw` is a middleware component (type), that can modify the requests and responses handled by
|
||||||
|
/// this `Route`.
|
||||||
|
///
|
||||||
|
/// See [`App::wrap`](crate::App::wrap) for more details.
|
||||||
#[doc(alias = "middleware")]
|
#[doc(alias = "middleware")]
|
||||||
#[doc(alias = "use")] // nodejs terminology
|
#[doc(alias = "use")] // nodejs terminology
|
||||||
pub fn wrap<M, B>(self, mw: M) -> Route
|
pub fn wrap<M, B>(self, mw: M) -> Route
|
||||||
|
@ -267,11 +273,15 @@ mod tests {
|
||||||
use futures_core::future::LocalBoxFuture;
|
use futures_core::future::LocalBoxFuture;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
|
|
||||||
use crate::dev::{always_ready, fn_factory, fn_service, Service};
|
use crate::{
|
||||||
use crate::http::{header, Method, StatusCode};
|
dev::{always_ready, fn_factory, fn_service, Service},
|
||||||
use crate::service::{ServiceRequest, ServiceResponse};
|
error,
|
||||||
use crate::test::{call_service, init_service, read_body, TestRequest};
|
http::{header, Method, StatusCode},
|
||||||
use crate::{error, web, App, HttpResponse};
|
middleware::{DefaultHeaders, Logger},
|
||||||
|
service::{ServiceRequest, ServiceResponse},
|
||||||
|
test::{call_service, init_service, read_body, TestRequest},
|
||||||
|
web, App, HttpResponse,
|
||||||
|
};
|
||||||
|
|
||||||
#[derive(Serialize, PartialEq, Debug)]
|
#[derive(Serialize, PartialEq, Debug)]
|
||||||
struct MyObject {
|
struct MyObject {
|
||||||
|
@ -344,6 +354,42 @@ mod tests {
|
||||||
assert_eq!(body, Bytes::from_static(b"{\"name\":\"test\"}"));
|
assert_eq!(body, Bytes::from_static(b"{\"name\":\"test\"}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn route_middleware() {
|
||||||
|
let srv = init_service(
|
||||||
|
App::new().service(
|
||||||
|
web::resource("/test")
|
||||||
|
.route(web::get().to(HttpResponse::Ok))
|
||||||
|
.route(
|
||||||
|
web::post()
|
||||||
|
.to(HttpResponse::Created)
|
||||||
|
.wrap(DefaultHeaders::new().add(("x-test", "x-posted"))),
|
||||||
|
)
|
||||||
|
.route(
|
||||||
|
web::delete()
|
||||||
|
.to(HttpResponse::Accepted)
|
||||||
|
// logger changes body type, proving Compat is not needed
|
||||||
|
.wrap(Logger::default()),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
|
||||||
|
let req = TestRequest::get().uri("/test").to_request();
|
||||||
|
let res = call_service(&srv, req).await;
|
||||||
|
assert_eq!(res.status(), StatusCode::OK);
|
||||||
|
assert!(!res.headers().contains_key("x-test"));
|
||||||
|
|
||||||
|
let req = TestRequest::post().uri("/test").to_request();
|
||||||
|
let res = call_service(&srv, req).await;
|
||||||
|
assert_eq!(res.status(), StatusCode::CREATED);
|
||||||
|
assert_eq!(res.headers().get("x-test").unwrap(), "x-posted");
|
||||||
|
|
||||||
|
let req = TestRequest::delete().uri("/test").to_request();
|
||||||
|
let res = call_service(&srv, req).await;
|
||||||
|
assert_eq!(res.status(), StatusCode::ACCEPTED);
|
||||||
|
}
|
||||||
|
|
||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn test_service_handler() {
|
async fn test_service_handler() {
|
||||||
struct HelloWorld;
|
struct HelloWorld;
|
||||||
|
|
Loading…
Reference in New Issue