1 #![deny(warnings)]
2 extern crate futures;
3 extern crate pretty_env_logger;
4 extern crate warp;
5
6 use futures::{Future, Stream};
7 use warp::Filter;
8
9 #[test]
form_fields()10 fn form_fields() {
11 let _ = pretty_env_logger::try_init();
12
13 let route = warp::multipart::form()
14 .and_then(|form: warp::multipart::FormData| {
15 // Collect the fields into (name, value): (String, Vec<u8>)
16 form
17 .and_then(|part| {
18 let name = part.name().to_string();
19 part.concat2().map(move |value| (name, value))
20 })
21 .collect()
22 .map_err(|e| -> warp::Rejection {
23 panic!("multipart error: {:?}", e);
24 })
25 });
26
27 let boundary = "--abcdef1234--";
28 let body = format!("\
29 --{0}\r\n\
30 content-disposition: form-data; name=\"foo\"\r\n\r\n\
31 bar\r\n\
32 --{0}--\r\n\
33 ", boundary);
34
35 let req = warp::test::request()
36 .method("POST")
37 .header("content-length", body.len())
38 .header("content-type", format!("multipart/form-data; boundary={}", boundary))
39 .body(body);
40
41 let vec = req.filter(&route).unwrap();
42 assert_eq!(&vec[0].0, "foo");
43 assert_eq!(&vec[0].1, b"bar");
44 }
45