mirror of
https://github.com/tokio-rs/axum.git
synced 2024-11-21 22:56:46 +01:00
Add test to cover state cloning in layer
This commit is contained in:
parent
1e118ccca9
commit
2dc164b4f8
1 changed files with 21 additions and 0 deletions
|
@ -3,6 +3,7 @@ use crate::{
|
||||||
error_handling::HandleErrorLayer,
|
error_handling::HandleErrorLayer,
|
||||||
extract::{self, DefaultBodyLimit, FromRef, Path, State},
|
extract::{self, DefaultBodyLimit, FromRef, Path, State},
|
||||||
handler::{Handler, HandlerWithoutStateExt},
|
handler::{Handler, HandlerWithoutStateExt},
|
||||||
|
middleware::{self, Next},
|
||||||
response::{IntoResponse, Response},
|
response::{IntoResponse, Response},
|
||||||
routing::{
|
routing::{
|
||||||
delete, get, get_service, on, on_service, patch, patch_service,
|
delete, get, get_service, on, on_service, patch, patch_service,
|
||||||
|
@ -924,6 +925,26 @@ async fn state_isnt_cloned_too_much() {
|
||||||
assert_eq!(state.count(), 3);
|
assert_eq!(state.count(), 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[crate::test]
|
||||||
|
async fn state_isnt_cloned_too_much_in_layer() {
|
||||||
|
async fn layer(State(_): State<CountingCloneableState>, req: Request, next: Next) -> Response {
|
||||||
|
next.run(req).await
|
||||||
|
}
|
||||||
|
|
||||||
|
let state = CountingCloneableState::new();
|
||||||
|
|
||||||
|
let app = Router::new().layer(middleware::from_fn_with_state(state.clone(), layer));
|
||||||
|
|
||||||
|
let client = TestClient::new(app);
|
||||||
|
|
||||||
|
// ignore clones made during setup
|
||||||
|
state.setup_done();
|
||||||
|
|
||||||
|
client.get("/").await;
|
||||||
|
|
||||||
|
assert_eq!(state.count(), 4);
|
||||||
|
}
|
||||||
|
|
||||||
#[crate::test]
|
#[crate::test]
|
||||||
async fn logging_rejections() {
|
async fn logging_rejections() {
|
||||||
#[derive(Deserialize, Eq, PartialEq, Debug)]
|
#[derive(Deserialize, Eq, PartialEq, Debug)]
|
||||||
|
|
Loading…
Reference in a new issue