Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java')
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java34
1 files changed, 30 insertions, 4 deletions
diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java
index da008c87b8..14d6eaf354 100644
--- a/jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java
+++ b/jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java
@@ -1,6 +1,6 @@
//
// ========================================================================
-// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd.
+// Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
@@ -18,9 +18,7 @@
package org.eclipse.jetty.util;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import org.junit.Test;
@@ -178,5 +176,33 @@ public class QuotedStringTokenizerTest
assertEquals("ab\u001ec",QuotedStringTokenizer.unquote("ab\u001ec"));
assertEquals("ab\u001ec",QuotedStringTokenizer.unquote("\"ab\u001ec\""));
}
+
+
+ @Test
+ public void testUnquoteOnly()
+ {
+ assertEquals("abc",QuotedStringTokenizer.unquoteOnly("abc"));
+ assertEquals("a\"c",QuotedStringTokenizer.unquoteOnly("\"a\\\"c\""));
+ assertEquals("a'c",QuotedStringTokenizer.unquoteOnly("\"a'c\""));
+ assertEquals("a\\n\\r\\t",QuotedStringTokenizer.unquoteOnly("\"a\\\\n\\\\r\\\\t\""));
+ assertEquals("ba\\uXXXXaaa", QuotedStringTokenizer.unquoteOnly("\"ba\\\\uXXXXaaa\""));
+ }
+ /**
+ * When encountering a Content-Disposition line during a multi-part mime file
+ * upload, the filename="..." field can contain '\' characters that do not
+ * belong to a proper escaping sequence, this tests QuotedStringTokenizer to
+ * ensure that it preserves those slashes for where they cannot be escaped.
+ */
+ @Test
+ public void testNextTokenOnContentDisposition()
+ {
+ String content_disposition = "form-data; name=\"fileup\"; filename=\"Taken on Aug 22 \\ 2012.jpg\"";
+
+ QuotedStringTokenizer tok=new QuotedStringTokenizer(content_disposition,";",false,true);
+
+ assertEquals("form-data", tok.nextToken().trim());
+ assertEquals("name=\"fileup\"", tok.nextToken().trim());
+ assertEquals("filename=\"Taken on Aug 22 \\ 2012.jpg\"", tok.nextToken().trim());
+ }
}

Back to the top