1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| const BOUNDARY: &str = "BOUNDARY";
#[tokio::test]
async fn test_import_proc_def() -> anyhow::Result<()> {
let bytes = fs::read("./examples/test01.xml").await?;
let request = Request::builder()
.header(
CONTENT_TYPE,
format!("multipart/form-data; boundary={}", BOUNDARY),
)
.body::<Body>(generate_multipart_data("file", &bytes)?.into())
.unwrap();
let multipart = Multipart::from_request(request, &State(())).await?;
let (db, ..) = setup().await?;
let proc_def_ids = import_proc_def(State(db), multipart).await?;
info!("{:?}", proc_def_ids);
Ok(())
}
fn generate_multipart_data(name: &str, bytes: &[u8]) -> anyhow::Result<Vec<u8>> {
let mut data = Vec::new();
write!(data, "--{}\r\n", BOUNDARY)?;
write!(data, "Content-Disposition: form-data; name=\"{}\";\r\n", name)?;
write!(data, "\r\n")?;
std::io::Write::write_all(&mut data, bytes)?;
write!(data, "\r\n")?;
write!(data, "--{}--\r\n", BOUNDARY)?;
Ok(data)
}
|