1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  package org.apache.commons.fileupload;
18  
19  import static org.junit.Assert.assertEquals;
20  import static org.junit.Assert.assertNull;
21  
22  import java.util.Map;
23  
24  import org.junit.Test;
25  
26  
27  
28  
29  public class ParameterParserTest {
30  
31      @Test
32      public void testParsing() {
33          String s =
34              "test; test1 =  stuff   ; test2 =  \"stuff; stuff\"; test3=\"stuff";
35          ParameterParser parser = new ParameterParser();
36          Map<String, String> params = parser.parse(s, ';');
37          assertEquals(null, params.get("test"));
38          assertEquals("stuff", params.get("test1"));
39          assertEquals("stuff; stuff", params.get("test2"));
40          assertEquals("\"stuff", params.get("test3"));
41  
42          params = parser.parse(s, new char[] { ',', ';' });
43          assertEquals(null, params.get("test"));
44          assertEquals("stuff", params.get("test1"));
45          assertEquals("stuff; stuff", params.get("test2"));
46          assertEquals("\"stuff", params.get("test3"));
47  
48          s = "  test  , test1=stuff   ,  , test2=, test3, ";
49          params = parser.parse(s, ',');
50          assertEquals(null, params.get("test"));
51          assertEquals("stuff", params.get("test1"));
52          assertEquals(null, params.get("test2"));
53          assertEquals(null, params.get("test3"));
54  
55          s = "  test";
56          params = parser.parse(s, ';');
57          assertEquals(null, params.get("test"));
58  
59          s = "  ";
60          params = parser.parse(s, ';');
61          assertEquals(0, params.size());
62  
63          s = " = stuff ";
64          params = parser.parse(s, ';');
65          assertEquals(0, params.size());
66      }
67  
68      @Test
69      public void testContentTypeParsing() {
70          String s = "text/plain; Charset=UTF-8";
71          ParameterParser parser = new ParameterParser();
72          parser.setLowerCaseNames(true);
73          Map<String, String> params = parser.parse(s, ';');
74          assertEquals("UTF-8", params.get("charset"));
75      }
76  
77      @Test
78      public void testParsingEscapedChars() {
79          String s = "param = \"stuff\\\"; more stuff\"";
80          ParameterParser parser = new ParameterParser();
81          Map<String, String> params = parser.parse(s, ';');
82          assertEquals(1, params.size());
83          assertEquals("stuff\\\"; more stuff", params.get("param"));
84  
85          s = "param = \"stuff\\\\\"; anotherparam";
86          params = parser.parse(s, ';');
87          assertEquals(2, params.size());
88          assertEquals("stuff\\\\", params.get("param"));
89          assertNull(params.get("anotherparam"));
90      }
91  
92      
93      @Test
94      public void testFileUpload139() {
95          ParameterParser parser = new ParameterParser();
96          String s = "Content-type: multipart/form-data , boundary=AaB03x";
97          Map<String, String> params = parser.parse(s, new char[] { ',', ';' });
98          assertEquals("AaB03x", params.get("boundary"));
99  
100         s = "Content-type: multipart/form-data, boundary=AaB03x";
101         params = parser.parse(s, new char[] { ';', ',' });
102         assertEquals("AaB03x", params.get("boundary"));
103 
104         s = "Content-type: multipart/mixed, boundary=BbC04y";
105         params = parser.parse(s, new char[] { ',', ';' });
106         assertEquals("BbC04y", params.get("boundary"));
107     }
108 
109     
110 
111 
112     @Test
113     public void fileUpload199() {
114         ParameterParser parser = new ParameterParser();
115         String s = "Content-Disposition: form-data; name=\"file\"; filename=\"=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=\"\r\n";
116         Map<String, String> params = parser.parse(s, new char[] { ',', ';' });
117         assertEquals("If you can read this you understand the example.", params.get("filename"));
118     }
119 
120 }