test(axum): close page edge-case mutants

Prove partial constructor defaults, missing multipart-boundary rejection, first-root fingerprint replacement, and unchanged non-root HTML through public and nearest-boundary paths.

req: page_swap/001

req: multipart/003

req: abi/005
This commit is contained in:
slhx agent
2026-07-17 01:05:48 +02:00
parent 52a32cfb1f
commit 8aeab5fca1
3 changed files with 27 additions and 2 deletions
+14 -1
View File
@@ -144,6 +144,19 @@ async fn interaction_boundary_skips_unnamed_parts_and_rejects_invalid_multipart(
let _guard = BOUNDARY_TEST_LOCK
.lock()
.unwrap_or_else(|error| error.into_inner());
let app = Router::new().route("/mutate", post(bounded_mutation));
let missing_boundary = app
.clone()
.oneshot(
Request::post("/mutate")
.header(header::CONTENT_TYPE, "multipart/form-data")
.body(Body::from("invalid"))
.unwrap(),
)
.await
.unwrap();
assert_eq!(missing_boundary.status(), StatusCode::BAD_REQUEST);
let accepted = concat!(
"--b\r\n",
"Content-Disposition: form-data; filename=\"ignored.txt\"\r\n\r\n",
@@ -153,7 +166,6 @@ async fn interaction_boundary_skips_unnamed_parts_and_rejects_invalid_multipart(
"1\r\n",
"--b--\r\n"
);
let app = Router::new().route("/mutate", post(bounded_mutation));
let response = app
.clone()
.oneshot(
@@ -369,6 +381,7 @@ fn page_response_constructors_preserve_mode_and_optional_fingerprint() {
let partial = PageResponse::partial("<main>Partial</main>");
assert_eq!(partial.mode, PageMode::Partial);
assert_eq!(partial.html, "<main>Partial</main>");
assert_eq!(partial.title, None);
assert_eq!(partial.fingerprint, None);
let fingerprint = BuildFingerprint(42);