#![cfg(feature = "test-utils")]
use aro_web::App;
use aro_web::test::TestClient;
use axum::Router;
use axum::routing::post;
use serde::{Deserialize, Serialize};
use aro_web::json_body::JsonBody;
#[derive(Debug, Serialize, Deserialize)]
struct Payload {
data: String,
}
async fn echo(JsonBody(payload): JsonBody<Payload>) -> axum::Json<Payload> {
axum::Json(payload)
}
#[tokio::test]
async fn body_under_limit_succeeds() {
let router = Router::new().route("/echo", post(echo));
let app = App::new().body_limit(1024).routes(router).build();
let client = TestClient::new(app);
let payload = Payload {
data: "hello".to_string(),
};
let resp = client.post("/echo").json(&payload).send().await;
resp.assert_status(200);
let body: Payload = resp.json();
assert_eq!(body.data, "hello");
}
#[tokio::test]
async fn body_over_limit_returns_413() {
let router = Router::new().route("/echo", post(echo));
let app = App::new().body_limit(32).routes(router).build();
let client = TestClient::new(app);
let payload = Payload {
data: "x".repeat(200),
};
let resp = client.post("/echo").json(&payload).send().await;
resp.assert_status(413);
}