use axum::{
body::Body,
http::{Request, StatusCode},
};
use http_body_util::BodyExt;
use sloc_web::make_test_router;
use tower::ServiceExt;
#[tokio::test]
async fn overlong_rejected_repo_url_error_is_truncated_with_ellipsis() {
let repo = format!("ftp://{}", "a".repeat(800));
let uri = format!("/api/git/refs?repo={repo}");
let resp = make_test_router()
.oneshot(Request::get(&uri).body(Body::empty()).unwrap())
.await
.unwrap();
assert_eq!(resp.status(), StatusCode::BAD_GATEWAY);
let bytes = resp.into_body().collect().await.unwrap().to_bytes();
let body = String::from_utf8_lossy(&bytes);
assert!(
body.contains('\u{2026}'),
"an over-long git error must be truncated with an ellipsis: {body}"
);
assert!(
body.len() < 800,
"payload stays bounded: {} bytes",
body.len()
);
}