Explorar el Código

Fix #19: application/x-www-form-urlencoded serialization was broken.

Simon Sapin hace 12 años
padre
commit
a1fdd28ec7
Se han modificado 1 ficheros con 16 adiciones y 3 borrados
  1. 16 3
      src/form_urlencoded.rs

+ 16 - 3
src/form_urlencoded.rs

@@ -133,10 +133,23 @@ pub fn serialize<'a, I: Iterator<(&'a str, &'a str)>>(
     for (name, value) in pairs {
         if output.len() > 0 {
             output.push_str("&");
-            byte_serialize(name, &mut output, encoding_override);
-            output.push_str("=");
-            byte_serialize(value, &mut output, encoding_override);
         }
+        byte_serialize(name, &mut output, encoding_override);
+        output.push_str("=");
+        byte_serialize(value, &mut output, encoding_override);
     }
     output
 }
+
+
+#[test]
+fn test_form_urlencoded() {
+    let pairs = [
+        ("foo".to_string(), "é&".to_string()),
+        ("bar".to_string(), "".to_string()),
+        ("foo".to_string(), "#".to_string())
+    ];
+    let encoded = serialize_owned(pairs.as_slice());
+    assert_eq!(encoded.as_slice(), "foo=%C3%A9%26&bar=&foo=%23");
+    assert_eq!(parse_str(encoded.as_slice()), Vec::from_slice(pairs.as_slice()));
+}