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