Initial Dever 0.0.1

This commit is contained in:
Codex committed 2026-11-03 03:32:07 +00:00
commit 81233d098c
1479 files changed
+163782

No files matched your search

+85
View File
@@ -0,0 +1,85 @@
use super::*;
use dever_runtime::{api, http, net};
use std::sync::Arc;
#[test]
fn http1_and_http2_stream_uploads_above_the_json_body_limit() {
let directory = Directory::new();
Runtime::new(TaskLimits::default())
.unwrap()
.run(async |scope| {
for http2 in [false, true] {
let listener = net::listen("127.0.0.1", 0, scope).await.unwrap();
let port = listener.port().unwrap();
let incoming = listener.clone();
let data = Arc::new(directory.0.clone());
let transport = http::Limits {
body_bytes: 1024,
http2: http2.then(Default::default),
..Default::default()
};
let client_limits = http::Limits {
body_bytes: 1_048_576,
..transport.clone()
};
let server = scope
.spawn(move |child| async move {
api::serve_upload::<_, _, true>(
&incoming,
&transport,
&child,
None,
move |request, body, child, _| {
let data = data.clone();
async move {
let mut parsed = upload::read(
&request,
body,
&data,
&Limits::default(),
&child,
)
.await
.unwrap();
let file = parsed.take("file").unwrap();
let size = file.size();
parsed
.finish()
.unwrap()
.decode::<Fields>(dever_runtime::wire::decode)
.unwrap();
file.close();
Ok(api::response(size.to_string()))
}
},
)
.await
})
.unwrap();
let request = http::Request {
method: "POST".into(),
target: "/upload".into(),
headers: vec![
http::Header {
name: "host".into(),
value: b"fixture.test".to_vec().into(),
},
http::Header {
name: "content-type".into(),
value: b"multipart/form-data; boundary=boundary".to_vec().into(),
},
],
body: content(&vec![b'x'; 170_001]).into(),
};
let response = http::send("127.0.0.1", port, request, &client_limits)
.await
.unwrap();
assert_eq!(response.status, 200);
assert_eq!(response.body.as_ref(), b"170001");
assert_eq!(directory.temporary_count(), 0);
listener.close().unwrap();
server.wait().await.unwrap().unwrap();
}
})
.unwrap();
}