mirror of
https://github.com/tokio-rs/axum.git
synced 2026-09-07 00:00:12 +02:00
Clearly document applying DefaultBodyLimit to individual routes (#2157)
This commit is contained in:
@@ -743,6 +743,75 @@ async fn changing_the_default_limit() {
|
||||
assert_eq!(res.status(), StatusCode::PAYLOAD_TOO_LARGE);
|
||||
}
|
||||
|
||||
#[crate::test]
|
||||
async fn changing_the_default_limit_differently_on_different_routes() {
|
||||
let limit1 = 2;
|
||||
let limit2 = 10;
|
||||
|
||||
let app = Router::new()
|
||||
.route(
|
||||
"/limit1",
|
||||
post(|_: Bytes| async {}).layer(DefaultBodyLimit::max(limit1)),
|
||||
)
|
||||
.route(
|
||||
"/limit2",
|
||||
post(|_: Bytes| async {}).layer(DefaultBodyLimit::max(limit2)),
|
||||
)
|
||||
.route("/default", post(|_: Bytes| async {}));
|
||||
|
||||
let client = TestClient::new(app);
|
||||
|
||||
let res = client
|
||||
.post("/limit1")
|
||||
.body(reqwest::Body::from("a".repeat(limit1)))
|
||||
.send()
|
||||
.await;
|
||||
assert_eq!(res.status(), StatusCode::OK);
|
||||
|
||||
let res = client
|
||||
.post("/limit1")
|
||||
.body(reqwest::Body::from("a".repeat(limit2)))
|
||||
.send()
|
||||
.await;
|
||||
assert_eq!(res.status(), StatusCode::PAYLOAD_TOO_LARGE);
|
||||
|
||||
let res = client
|
||||
.post("/limit2")
|
||||
.body(reqwest::Body::from("a".repeat(limit1)))
|
||||
.send()
|
||||
.await;
|
||||
assert_eq!(res.status(), StatusCode::OK);
|
||||
|
||||
let res = client
|
||||
.post("/limit2")
|
||||
.body(reqwest::Body::from("a".repeat(limit2)))
|
||||
.send()
|
||||
.await;
|
||||
assert_eq!(res.status(), StatusCode::OK);
|
||||
|
||||
let res = client
|
||||
.post("/limit2")
|
||||
.body(reqwest::Body::from("a".repeat(limit1 + limit2)))
|
||||
.send()
|
||||
.await;
|
||||
assert_eq!(res.status(), StatusCode::PAYLOAD_TOO_LARGE);
|
||||
|
||||
let res = client
|
||||
.post("/default")
|
||||
.body(reqwest::Body::from("a".repeat(limit1 + limit2)))
|
||||
.send()
|
||||
.await;
|
||||
assert_eq!(res.status(), StatusCode::OK);
|
||||
|
||||
let res = client
|
||||
.post("/default")
|
||||
// `DEFAULT_LIMIT` is 2mb so make a body larger than that
|
||||
.body(reqwest::Body::from("a".repeat(3_000_000)))
|
||||
.send()
|
||||
.await;
|
||||
assert_eq!(res.status(), StatusCode::PAYLOAD_TOO_LARGE);
|
||||
}
|
||||
|
||||
#[crate::test]
|
||||
async fn limited_body_with_streaming_body() {
|
||||
const LIMIT: usize = 3;
|
||||
|
||||
Reference in New Issue
Block a user